Недавно я решил сделать дополнительный бэкап нашего CVS репозитория. Ранее существовал всего лишь один файл бэкапа, создаваемый ежедневно
на том же самом виртуальном диске где хранится всё остальное (RAID 0). «Почему бы не использовать Amazon S3 для удаленного бэкапирования?»,- подумал я.
Шаг 1: Включить поддержку FUSE в ядро и установить s3fs
Шаг 2: Примонтировать S3 bucket к папке на сервере . Чтобы сделать это создайте файл /etc/passwd-s3fs и впишите туда одну строчку – Access Key и Secret Access key разделённые двоеточием.
Шаг 3: Редактируем fstab и вписываем туда это:
s3fs#your_bucket_name /mnt/s3_storage fuse auto 0 0
Этот скрипт оставляет самый последний бэкап в папке BACKUPSDIR на сервере и 7 копий за 7 последних дней на S3. Все бэкапы шифруются паролем, не забудте поменять его в скрипте (–passphrase pwd )!
#!/bin/bash
#
# Back up CVS
#
CVSDIR=/home/cvs
BACKUPSDIR=/home/andrew/backups
S3DIR=/mnt/s3_storage
#
# Get current date and time
set `date +"%Y %m %d %H %M"`
# Remove any backups older than 1 days
echo "Removing backups older than 1 days..."
TO_DELETE=$(find $BACKUPSDIR -atime +1 -name "cvstree*")
if [ -z "$TO_DELETE" ]; then
echo "No backups to delete"
else
# remove them!
rm -f $TO_DELETE
fi
#echo "Backing up CVS tree..."
/bin/tar -cj -C $CVSDIR --totals . > $BACKUPSDIR/cvstree_$1-$2-$3.tar.bz
echo "Encrypting the backup"
/usr/bin/gpg -c --batch --passphrase pwd $BACKUPSDIR/cvstree_$1-$2-$3.tar.bz
echo "Moving to the remote storage"
/usr/bin/mv $BACKUPSDIR/cvstree_$1-$2-$3.tar.bz.gpg $S3DIR
# Remove any backups older than 7 days on the remote storage
echo "Removing backups older than 7 days from the remote storage..."
TO_DELETE=$(find $S3DIR -mtime +7 -name "cvstree*" )
if [ -z "$TO_DELETE" ]; then
echo "No backups to delete"
else
# remove them!
rm -f $TO_DELETE
fi
exit 0

Отправить Комментарий