Зручне резервне копіювання даних в Лінуксі з допомогою obnam

  • 2014-11-25
  • (автор: yurb)

Зверніть увагу: розробка obnam припинилася (згодом його почали переписувати наново), а я перейшов на використання borg, про що написав новий допис.

Backup Backup Backup - And Test Restores

Важливі дані треба зберігати щонайменше в двох місцях, на двох окремих носіях інформації. Адже не існує стовідсотково надійних і невразливих носіїв інформації — кожен носій рано чи пізно дає збій, і передбачити це не завжди можливо. Резервне копіювання — це як застрахувати будинок, тільки безкоштовно (окрім хіба що ціни резервного носія інформації). Якщо ви зберігаєте на компуторі якусь свою роботу — від фотографій до дисертації чи історичних романів — вам конче необхідно налаштувати собі резервне копіювання, инакше ви ризикуєте в будь-який момент втратити результати своєї праці. Існує безліч програм для резервного копіювання і безліч способів налаштування. Цей допис — для користувачів Gnu/Linux, але якщо Ви працюєте у Windows, для вас теж є безліч програм для резервного копіювання. Я розповім про програму, якою користуюся сам.

Отже, знайомтесь: obnam. Ця програма має декілька цікавих переваг над традиційними засобами резервного копіювання:

  • Кожна нова резервна копія — це новий повноцінний «зріз» ваших даних. «Зрізи» не діляться на повні й часткові (full / incremental), як в традиційних системах резервного копіювання, і не залежать один від одного. Можна вилучити будь-який з попередніх зрізів, не боячись, що наступні пошкодяться.
  • При тому, в межах резервного носія дані не дублюються. Усі дані, які є спільними для різних «зрізів», зберігаються на резервному носії в одному екземплярі. Коли ви робите резервну копію, програма копіює лише дані, які відрізняються від того, що на резервному носії вже є. Незалежно від того, чи ви перейменували, чи перемістили якийсь файл, obnam «впізнає» його за вмістом і не буде дублювати його вміст на резевному носії. Тобто obnam нівелює дублювання даних на рівні самого вмісту, а не назв чи дат файлів.

Користуватись obnam просто. Ви створюєте простенький файл налаштування, де вказуєте, що і куди копіювати, і після того лише запускаєте команду obnam backup щоразу, коли вам треба зробити резервну копію.

Налаштування

Файл налаштувань (.obnam.conf у вас у домашній теці) може мати приблизно такий вміст:

[config]
repository: /run/media/yurb/YurBbackup/BACKUP/
root: /home/yurb/keep, /home/yurb/work, /home/yurb/university
exclude: .*\.nobackup
keep: 2d,2w
log: /home/yurb/.obnam/log
log-level: warning

Найважливіші тут два параметри: repository вказує, куди здійснювати резервне копіювання, а root — які теки потрібно копіювати. repository може розміщуватися як на зовнішньому носії (як у моєму випадку) чи додатковому жорсткому диску, так і на віддаленому сервері (через SFTP). Параметр exclude — це шаблон назви файлів/тек, які ви бажаєте не включати до резеревного копіювання. У моєму випадку це будь-що, що закінчується на .nobackup.

Ще один корисний, хоч і не обов'язковий параметр — keep. Він визначає, які «зрізи» програма залишить на носії резервного копіювання, коли ви запустите команду obnam forget. У моєму випадку вона залишає два останні зрізи, але не більше 1 на кожен календарний день (літера d — day), і також два останні зрізи з інтервалом у тиждень (літера w — week).

Параметр log вказує файл журналу (він не є необхідним для відновлення даних — у ньому міститься суто інформація для користувача); log-level — мінімальний рівень важливости повідомлень, які потраплятимуть у журнал.

При бажанні можна також створювати шифровані резервні копії — для цього obnam використовує gnupg. В такому випадку ви вказуєте ключ gnupg, яким бажаєте зашифрувати резервні копії, в параметрі encrypt-with.

Користування

Коли ви вказали бажані налаштування у файлі .obnam.conf і приготували носій для резервних копій, залишається тільки під'єднати його і запустити: obnam backup. Перший раз програма створить повну копію ваших даних на резервному носії. Кожна наступна резервна копія створюється тією ж командою — obnam backup. При тому надалі програма копіюватиме тільки дані, яких ще немає на резервному носії. Періодично після створення резервної копії варто запускати команду obnam verify, яка порівняє копію з оригіналом ваших файлів, щоб впевнитися, що резервний носій в доброму стані й дані копіюються без проблем (перед цим найкраще його вийняти і знову вставити, щоб система очистила кеш даних в оперативній пам'яті). Час від часу, коли місця на резервному носії стає менше, можна запускати команду obnam forget — вона вилучить з резервного носія усі попередні зрізи окрім тих, які ви вказали залишити в параметрі keep у файлі налаштувань. Також можна «забути» конкретний зріз, вказавши його номер після команди forget (список зрізів можна побачити, запустивши команду obnam generations). Щоб відновити якийсь файл чи всі файли з резервного носія існує команда obnam restore --to=Куди_відновлювати /який/файл/відновити.

Щоб побачити повний список файлів на резервному носії, скористайтесь командою obnam ls. Як і у випадку з будь-якою иншою командою в лінуксі, повну інформацію про її можливості можна отримати, запустивши man obnam.

Навідміну від таких програм, як rsync, obnam дає можливість зберігати попередні зрізи ваших даних, що дуже корисно, оскільки не завжди втрату даних можна помітити відразу, і може виникнути потреба повернутися до якоїсь з минулих версій файлу. Разом з тим, порівняно з системою повних і часткових зрізів, як у tar, з obnam немає потреби проходити по всіх рівнях часткових зрізів, щоб відновити дані.

Бережімо свої дані, бо ми того варті!:)

Зазначення авторських прав: світлина знищеного серверакористувач John з flickr; ліцензія CC BY 2.0.