Решил наладить бекапы с CubieBoard, на которой крутится подточеный Debian (Cubian), на Time Capsule. Туда через Time Machine уже делается резервная копия MacBook'а. Захотел организовать аналогичные инкрементальные бекапы для Linux коробки. Попытаюсь далее изложить свой опыт.
С  доступом  к  Time  Capsule  особых   проблем  в  Linux  нету.   Ее  можно
подмонтировать с помощью cifs (не забываем установить cifs-utils). В fstab
закидываем следующую строку и все должно работать после монтирования.
//<TC.local or direct ip>/Data /mnt/tc cifs passwd=thebestpass,sec=ntlm,iocharset=utf8 0 0
Но при этом в /var/log/messages порой валит вот такие ошибки:
[151119.364105] ------------[ cut here ]------------
[151119.375676] WARNING: at fs/inode.c:280 drop_nlink+0x54/0x5c()
[151119.380041] Modules linked in: sunxi_cedar_mod mali ump gpio_sunxi
[151119.394514] [<c0015430>] (unwind_backtrace+0x0/0x134) from [<c003322c>] (warn_slowpath_common+0x54/0x64)
[151119.403340] [<c003322c>] (warn_slowpath_common+0x54/0x64) from [<c00332d8>] (warn_slowpath_null+0x1c/0x24)
[151119.411578] [<c00332d8>] (warn_slowpath_null+0x1c/0x24) from [<c00f0738>] (drop_nlink+0x54/0x5c)
[151119.419177] [<c00f0738>] (drop_nlink+0x54/0x5c) from [<c0248cfc>] (cifs_unlink+0x224/0x654)
[151119.426644] [<c0248cfc>] (cifs_unlink+0x224/0x654) from [<c00e64d0>] (vfs_unlink+0x78/0x104)
[151119.434358] [<c00e64d0>] (vfs_unlink+0x78/0x104) from [<c00e66a0>] (do_unlinkat+0x144/0x16c)
[151119.447019] [<c00e66a0>] (do_unlinkat+0x144/0x16c) from [<c000ec40>] (ret_fast_syscall+0x0/0x30)
[151119.451059] ---[ end trace fddecabeb4cc4bce ]---
Вроде ничего страшного, но логи забиваются.
Далее стоит вопрос,  чем и как бекапить.  Для Linux  популярны системы бекапов
на  основе rsync  и hard  links.  Например,  rsnapshot. Но  тут
возникает проблема, связанная  с отсутствием поддержки жестких  ссылок в cifs.
Есть еще rdiff-backup, он вроде  как хранит файлы с изменениями.
Но это мой  следующий шаг для тестов, а пока  я использую obnam.  И
сразу скажу: он очень тормозной.
На obnam  натолкнулся когда-то  давно, но  начал разворачивать
после приобретения CubieBoard.  Первоначально  obnam мне очень понравился.
Гигабайт системных данных бекапил минуты за  2-3.  Я с радости поднял ежечастные
бекапы.  Вроде как настроил систему  аналогичную Time Capsule c чисткой старых
поколений бекапов (см. поле keep в  настройках ниже).  Для всего этого написал
небольшой скрипт следующего содержания и положил это добро в крон:
#!/bin/sh
logger "Start backup"
if ! (df | tail -n +2 | awk '{print $6}' | grep -q '^/mnt/tc$')
then
    logger "Backup fails: tc is not mounted"
    exit 1
fi
nice -n 19 ionice -c2 -n7 obnam backup
if [ $? -eq 0 ]
then
    logger "Backup forget"
    nice -n 19 ionice -c2 -n7 obnam forget
else
    logger "Backup failed"
fi
logger "End backup"
А вот и obnam конфиг:
[config]
repository = /mnt/tc/backup
log = /var/log/obnam.log
log-max = 10M
log-keep = 10
log-level = warning
one-file-system = True
root = /etc, /home, /opt, /root
keep = 24h,7d,15w,24m,5y
upload-queue-size = 512
lru-size = 512
compress-with = deflate
Все это прекрасно  работало до того момента, как я  перенес seafile с
~100  гигабайтами данных.   Первичный  бекап занял  около  30 часов.   Следующие
занимали более часа.  К сожалению  подробную статистику не сохранил. После этого
нашел пост, посвященный  тестированию obnam параметров,
влияющих  на  производительность.  На  основе  информации  из указанной  заметки
добавил параметры upload-queue-size  и lru-size в конфиг  (см.  выше). Бекап
ускорился до 15 минут.
Но далее я обновил seafile через несколько версий, и вдруг количество файлов в его базе увеличилось примерно в 2-е (в основном жестки ссылки). Это привело к росту времени бекапов до 1 часа 15 минут. Я боюсь представить за сколько будет проходить бекап почти забитого 1 Тб диска. Надеюсь у меня не будет столько данных. Соответственно бекапы теперь запускаются раз в день. Вроде бы этого для меня вполне достаточно.
И еще один шаг, который как раз заканчиваю тестировать: положить obnam репозиторий в encfs. Выбор на этот вариант шифрования также пал за счет поддержки cifs. Также encfs хороша тем, что нет необходимости делать некий виртуальный диск, который возможно в будущем придется расширять. Позже добавлю информацию про эти успехи.
Данный пост был создан, чтобы поделиться собственным опытом и возможно найти более эффективные альтернативы. Добро покалывать в комментарии. Высказывайтесь! obnam явно не лучший вариант для бекапов больших объемов информации поверх cifs.
P.S.  К слову  сказать, бекапы  уже  меня успели  спасти. Пусть  они и  идут
медленно,  но  и  меняются  не сильно  часто.   После  выключения  электричества
файловая система  на диске с  данными слегка  поплыла.  Чиниться через  fsck и
монтироваться  отказывалась.  Данные  в принципе  можно было  бы восстановить  с
диска,  но  быстрее и  проще  оказалось  воспользоваться бекапом.   Бекаптесь  -
пригодится!
Comments
comments powered by Disqus