backup:/s0/backup# cat backup.sh #!/bin/bash TIMESTAMP=`date +%F_%R_%s | sed s/:/=/` ARCH="-j" # bz2 or gz VERB="" help_usage () { echo -e "Usage: $0 [jzblixvh] -j - Use bzip2 for archive backup [default] -z - Use gzip for archive backup -t <TYPE_OF_BACKUP> - Define type of backup inc - incremental or full - for full backup -f <CONFIG_FILE> - Define file which contains configuration -b <BACKUP NAME> - name backup (use \"default\" for $BACKUP_NAME) -v - verbose [non default] -h - print this help" } if [[ $# -eq 0 ]] then help_usage exit 0 fi while getopts ":jzb:vhd:x:l:f:t:" Option do case $Option in j ) ARCH="-j" ;; z ) ARCH="-z" ;; d ) INSTALL_DIR="${OPTARG}" ;; t ) TYPE_OF_BACKUP="${OPTARG}" if [[ ${TYPE_OF_BACKUP} = "inc" || ${TYPE_OF_BACKUP} = "full" ]] then : else echo "Use -t only for \"full\" or \"inc\" type of backup" exit 0 fi ;; b ) if [[ $OPTARG != "default" ]] then BACKUP_NAME="${OPTARG}" fi ;; l ) BACKUP_LIST="${OPTARG}" ;; x ) EXCLUDE_LIST="${OPTARG}" ;; f ) CONF_FILE="${OPTARG}" if [[ -e "${CONF_FILE}" ]] then . "${CONF_FILE}" else echo "Can't find ${CONF_FILE}. Used valid" fi ;; v ) VERB="-v" ;; h ) help_usage exit 0 ;; * ) help_usage exit 0 ;; esac done shift $(($OPTIND - 1)) if [[ ! -e ${BACKUP_LIST} ]] then echo "Edit conf file to to define list of backup files" exit 0; fi if [[ ! -e ${EXCLUDE_LIST} ]] then echo "Edit conf file to to define list of exclude files" exit 0; fi remote_hostname=$(ssh $SSH_CONN_OPT $REMOTE_USER@$REMOTE_HOST hostname) if [[ "$TYPE_OF_BACKUP" == "inc" ]] then DATE_TIME=$(ls -1 -t ${LOCAL_DIR}/backup* | head -n 1 | grep -E -o "[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}=[0-9]{2}") INC_TIME=$(echo ${DATE_TIME} | grep -E -o "[0-9]{4}-[0-9]{2}-[0-9]{2}") INC_TIME="${INC_TIME} $(echo ${DATE_TIME} | grep -E -o '[0-9]{2}=[0-9]{2}' | sed s/\=/:/)" BACKUP_NAME="backup_${remote_hostname}_${TYPE_OF_BACKUP}_${TIMESTAMP}" ; ADV_OPT="--newer-mtime '${INC_TIME}'" else BACKUP_NAME="backup_${remote_hostname}_${TYPE_OF_BACKUP}_${TIMESTAMP}" ; fi if [[ "${ARCH}" == "-j" ]] then BACKUP_NAME="${BACKUP_NAME}.tar.bz2" else BACKUP_NAME="${BACKUP_NAME}.tar.gz" fi COMM="tar --create --ignore-failed-read ${ARCH} \ ${VERB} --file="${REMOTE_DIR}/${BACKUP_NAME}" `cat ${BACKUP_LIST}` \ $(for entity in `cat ${EXCLUDE_LIST}`; do echo '--exclude' ${entity}; done) \ --exclude ${REMOTE_DIR} ${ADV_OPT}" echo "Start make ${TYPE_OF_BACKUP} backup to ${BACKUP_NAME}" echo "use ${ARCH} to archive" ssh ${SSH_CONN_OPT} ${REMOTE_USER}@${REMOTE_HOST} ${COMM} echo "End backup" echo "Start copy backup to local machine" scp ${SCP_CONN_OPT} ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/${BACKUP_NAME} ${LOCAL_DIR} echo "End copy" echo "Begin delete remote copy" COMM="rm -f ${REMOTE_DIR}/${BACKUP_NAME}" ssh ${SSH_CONN_OPT} ${REMOTE_USER}@${REMOTE_HOST} ${COMM} echo "End delete" echo "Delete obsolete" find $LOCAL_DIR -mtime "+$EXPIRE_TIME" -name "backup.*.tar.*" -exec rm -f {} \; echo "End delete" backup:/s0/backup# cat serv/serv.conf # # Config file for backup serv server # REMOTE_HOST="192.168.0.1" REMOTE_USER="root" BACKUP_LIST="/s0/backup/serv/list.backup" EXCLUDE_LIST="/s0/backup/serv/list.exclude" REMOTE_DIR="/bk" LOCAL_DIR="/s0/backup/serv" EXPIRE_TIME="7" #in days TYPE_OF_BACKUP="full" SSH_CONN_OPT="-p 22" SCP_CONN_OPT="-P 22"
Ответ на:
комментарий
от sdio
Ответ на:
комментарий
от sdio
Ответ на:
комментарий
от tugrik
Ответ на:
комментарий
от tugrik
Ответ на:
комментарий
от sdio
Ответ на:
комментарий
от sdio
Ответ на:
комментарий
от tugrik
Ответ на:
комментарий
от sdio
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Распаковать makeself прошивку (2014)
- Форум Bash - скрипт бэкапа (2018)
- Форум не компилируется модуль non-retpoline компилятором (2022)
- Форум Bash скрипт для бэкапа (2018)
- Форум [bash] удаление старых бэкапов (2011)
- Форум крипто блоки (2016)
- Форум Крипта - всё (2017)
- Форум Крипта. Как? (2013)
- Форум Крипто раздел (2007)
- Статьи Один бинарник на четыре системы (2023)