В который раз переделал скрипт бэкапа. На этот раз он сливает результаты бэкапа в облачко амазона =)
#!/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 юзается чтобы не перегружать канал.