Проблема организации бэкапа данных, с которыми работаю прямо сейчас, меня беспокоила долго. Наконец я нашел удобное для меня решение.
Легко бэкапить архивы, и прочие данные, которые обновляются редко. Пусть они и большие, но их можно записать на флешки и убрать в сейф.
Сложнее с проектами, которые в работе прямо сейчас.
Подготовка
Для начала я отделил те данные, с которыми я работаю сейчас от архива и результатов работы. Это относительно небольшой каталог с активными проектами. Относительно — потому что в нем 14G.
Dropbox
Я использую dropbox, потому что он имеет одну приятную особенность — он просто работает. Без лишних усилий. 2G на бесплатном аккаунте мне, конечно, мало — я пользуюсь платным.
В принципе вместо dropbox'а я мог бы делать бэкап на свой сервер, но тогда частичное восстановление данных из бэкапа всегда требовало бы быстрого доступа к сети. Меня это не устраивает — я уже попадал в ситуацию, когда случайно удалял с ноутбука нужный мне большой каталог с файлами, не имея быстрого доступа к сети.
Внутри Dropbox у меня большая часть данных, но рабочий каталог с данными над которыми работаю сейчас — нет.
Во-первых, потому что в рабочем каталоге у меня часто может быть приватная информация, в том числе чужая. И хотя я облачным сервисам более-менее доверяю, мои клиенты — не всегда, и я должен уважать их политику безопасности.
Во-вторых — данные там могут меняться слишком часто. И быть объемными — например логи отладки. Синхронизация при каждом изменении это перебор.
Encfs
И все-таки бэкапы (как и многие другие данные) у меня хранятся в Dropbox. А это означает, как минимум, что при утере ноутбука у злоумышленника окажется очень много ценных данных. И это недопустимо.
Поэтому в Dropbox лежат encfs-разделы.
Кроме того, у Dropbox есть один неприятный недостаток — он case sensitive (из-за совместимости с windows). А значит, если у меня в каталоге есть файлы, скажем, README и readme, то один из них он переименует.
encfs шифрует имена файла, за счет этого вероятность таких пересечений становится минимальной.
Так что я создаю с помощью encfs внутри ~/Dropbox отдельный каталог для бэкапов, и монтирую его куда-нибудь за пределы каталога ~/Dropbox:
$ mkdir ~/Dropbox/encfs/backup $ mkdir ~/backup $ encfs ~/Dropbox/encfs/backup ~/backup
rdiff-backup
Собственно для бэкапа я использую простейший скрипт:
#/bin/sh from=$1 to=$2 if [ -d $to ]; then rdiff-backup "$from" $to rdiff-backup --remove-older-than 1M $to 2>&1 > /dev/null fi
Он проверяет наличие каталога (на случай, если encfs раздел не смонтирован), и если он есть — выполняет backup.
После чего удаляет из бэкапа старые snapshot'ы (старее месяца).
Этот скрипт в cron'е запускается раз в сутки.
Итог
При таком подходе я могу потерять только результаты работы за последние сутки, и не боюсь утечки данных несмотря на использование облачного сервиса.
И да, так как я параноик, также с помощью rdiff-backup на одной из своих машин я делаю ежедневный backup всего содержимого каталога Dropbox. На тот маловероятный случай, если ошибка на самом сервисе Dropbox приведет к потере данных.