Skip to content

Немножко скриптов для бэкапа в Amazon S3

В который раз переделал скрипт бэкапа. На этот раз он сливает результаты бэкапа в облачко амазона =)

 

#!/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 юзается чтобы не перегружать канал.

Leave a Reply

Your email address will not be published. Required fields are marked *

π