У меня есть веб-сайт, который работает с большим количеством текстовых файлов - теперь они занимают около 40 ГБ данных и со временем их объем увеличивается. Мне нужно делать полную ежедневную резервную копию. Моя текущая стратегия - создать архив, защищенный паролем, и сохранить его в Dropbox с помощью этой команды:
tar cfz - /var/www/mysite | openssl enc -aes-256-cbc -e -k "b@ckupPassword" > /home/user/Dropbox/server_backups/sources/2013_01_04_0500_mysite_source_encrypted.tgz
Это работает, но создание архива занимает около 14 часов и требует много операций ввода-вывода - и это будет хуже по мере увеличения объема данных.
Какова правильная стратегия резервного копирования такого большого количества файлов?
я хотел бы использовать rsync
при условии, что у меня достаточно места.
В этом примере есть полная резервная копия и неделя хранится инкрементных.
#!/bin/bash
DAY=$(date +%A)
if [ -e /bkp/incr/$DAY ] ; then
rm -fr /bkp/incr/$DAY
fi
ionice -c 3 rsync -a --delete --inplace --backup --backup-dir=/bkp/incr/$DAY /var/www/mysite/ /bkp/full/ &> /dev/null
Скрипт может быть сложно хранить вне офиса, в папках dropbox и так далее.
Если вам действительно нужно использовать tar
, вы можете отслеживать измененные файлы
tar zcvf - --listed-incremental=/var/log/mysite.tarlog /var/www/mysite | openssl enc ...
Если вам нужна полная резервная копия, удалите /var/log/mysite.tarlog
Как было сказано выше, rsync кажется лучшим способом резервного копирования всего сайта. Тем не менее, я бы посоветовал вам реализовать какую-то реплицированную файловую систему, что-то вроде простого тома GlusterFS с репликацией.
Репликация не является резервным копированием, но она может помочь вам уменьшить влияние операций ввода-вывода при резервном копировании и в конечном итоге предоставить вам прочную основу для расширения вашего веб-сайта в дальнейшем в кластер.