В который раз переделал скрипт бэкапа. На этот раз он сливает результаты бэкапа в облачко амазона =)
#!/bin/bash if [ $(id -u) -ne 0 ]; then echo "Root can't do that"; exit 1; fi TAR="/bin/tar --create --ignore-failed-read --one-file-system --numeric-owner --sparse --totals --exclude-from=/usr/local/bin/excluded_dirs --gzip" SRC_DIR="/etc/ /usr/local/bin/" DST_DIR="/var/backup/vhn/" DOW=`date +%j` DOW_FOR_RM=`date +%u` # day of week (1..7); 1 is Monday, 7 is Sunday HOSTNAME=`hostname -f` if [ $DOW_FOR_RM = '7' ] #If this day - sunday or friday then clean all shit =) then rm -rf $DST_DIR[0-9]* echo "Sunday cleaning old backups on local storage done" fi mkdir -p $DST_DIR$DOW [ ! -d $DST_DIR$DOW ] && { echo "Failed create dst backup directory!"; exit 1; } cd / BACKUP_FILE="$DST_DIR$DOW/$HOSTNAME-vhn-$DOW.tgz" echo "Etc directory backup" $TAR --file=$BACKUP_FILE $SRC_DIR 2>&1 echo "VHN directories backup on $HOSTNAME to local storage done" trickle -s -u 5120 s3cmd put --recursive --no-progress --multipart-chunk-size-mb=512 $DST_DIR$DOW s3://$HOSTNAME/daily/vhn/ echo "VHN directories backup on $HOSTNAME to cloud done"
#!/bin/bash if [ $(id -u) -ne 0 ]; then echo "Root can't do that"; exit 1; fi [ $# -lt 1 ] && { echo "Usage: ${0##*/} <SRC_DIR>"; exit 1; } TAR="/bin/tar --create --ignore-failed-read --one-file-system --numeric-owner --sparse --totals --exclude-from=/usr/local/bin/excluded_dirs --gzip" SRC_DIR="$1" DST_DIR="/var/backup/vz/" DOW=`date +%j` DOW_FOR_RM=`date +%u` # day of week (1..7); 1 is Monday, 7 is Sunday HOSTNAME=`hostname -f` [ ! -d $SRC_DIR ] && { echo "Directory $SRC_DIR not found."; exit 1; } if [ $DOW_FOR_RM = '7' ] #If this day - sunday or friday then clean all shit =) then rm -rf $DST_DIR[0-9]* echo "Sunday cleaning old backups on local storage done" fi mkdir -p $DST_DIR$DOW [ ! -d $DST_DIR$DOW ] && { echo "Failed create dst backup directory!"; exit 1; } VE_LIST=`ls -1 $SRC_DIR` echo `date` for VEID in $VE_LIST do [ ! -d "$SRC_DIR$VEID" ] && continue; #If VEID not a directory - skip it cd "$SRC_DIR$VEID" BACKUP_FILE="$DST_DIR$DOW/$HOSTNAME-$VEID-$DOW.tgz" echo "VE $VEID backup" $TAR --file=$BACKUP_FILE ./ 2>&1 done echo `date` echo "VE backup on $HOSTNAME to local storage done" trickle -s -u 2048 s3cmd put --recursive --no-progress --multipart-chunk-size-mb=512 $DST_DIR$DOW s3://$HOSTNAME/daily/vz/ echo "VE backup on $HOSTNAME to cloud done"
Кстати, s3cmd пришлось патчить (на официальном багтрекере нашлось решение), т.к. оригинальная бета была с багом, из-за которого multi-part загрузки не шли. А потом еще раз патчить, потому что при аплоаде с выключенным прогрессом s3cmd вываливался.
А trickle юзается чтобы не перегружать канал.