backup-with-rdiff-backup-blog-header_640

Zálohování s rdiff-backup a rdiff-backup-fs FUSE filesystem.

Linux mini-howto?
Krátce o nástrojích ze života sysadmina.

Zálohování s rdiff-backup

Poslední dobou je na scéně kolem filesystémů pro Linux opět trochu život, upřímně chtěl bych stabilní filesystém s podporou snapshotování, co máme k dispozici? BTRFS není stable (netvrdím, že nedrží data, ale na produkci?, zatím stále ne), ZFS se mi líbí moc moc, prošel ohněm, je vyspělý, ale na produkci, když není v jádře a je to port ze Solarisu, kvůli kterému se musela napsat část “runtime” prostředí Solarisu, netvrdím, že to nejde, vpsFree.cz a Pavel Šnajdr dokazuje opak, ale pro komerční prostředí a support to není možné, respektive nepřistoupí na to.

Nově se nám na scéně ukazuje bcachefs, těžko cokoliv hádat, je to tak mladé (srpen 2015, https://lkml.org/lkml/2015/8/21/22) a slibuje to mnoho vlastností BTRFS a ZFS, nechme se překvapit. Ano pak tu máme LVM a snapshoty, ale LVM není filesystém a do dat o vrtstvu “vejš” nevidí, je moc fajn, ale né samospasitelné.

Nově se na scéně objevil (byl uvolněn) jaderný modul Datto Block Driver, modul přidává podporu pro snapshotování a inkrementální zálohování pro libovolné blokové zařízení (“přidává” COW, copy-on-write vlastnost trackováním write systémového volání, ze zdrojového kódu je vidět, že hookuje syscall table), aktuálně testuji, hraju si, čtu kód na workstation a samostatném disku, subjektivně je to dost rychlé.

Peleton nám uzavíra XFS filesystém, který používáme na produkci a na vše ostatní je tu EXT4, ani jeden z těchto filesystémů nepodporuje snapshoty.


rdiff-backup

Co používáme a proč? Chceme inkrementálně zálohovat data (ať už adresáře mezi sebou nebo přes síť), mít možnost jednoduše procházet zálohy a vracet se v čase, mazání starších záloh než XY, zrcadlový obraz původních dat, ACL, uchovávat pouze rozdíly, nenáročnost na přenosové pásmo, jednoduchost.

  • rdiff-backup
  • rdiff-backup-fs

Rdiff-backup je nástroj napsaný v Pythonu a splňuje naše potřeby, http://www.nongnu.org/rdiff-backup/features.html, uvnitř je postaven na knihovně librsync , existuje určitě bezpočet skvělých scriptů postavených nad rsync nástrojem a potulujích se po internetu, ale proč nepouží rdiff-backup přímo z repositáře.

Skvělou možnost přidáva právě rdiff-backup-fs, což je modul pro FUSE (Filesystem in Userspace), díky němu je možné připoji (mount) zálohy do adresářové struktury a získat tak přístup ke “snapshotům” dat v čase formou adresářů v mount složce s datumem a časem pořízení zálohy.

S takto udělaným backup se dá trochu čarovat a zpřístupnit zpětně uživateli jeho zálohy jako read-only, např. přes Sambu, NFS apod., přiznávám není to tak elegantní jako udělat na ZFS snapshot pool/test@mojezaloha a mít to vše včetně read-only.

Dnes to bude bez praktické ukázky, jednak nechci ukazovat data ze záloh na produkci ani osobní workstation a druhak je to velmi jednoduché.

rdiff-backup dir1 dir2
rdiff-backup dir1 user@system::/dir2

# nejnovější obnova
rdiff-backup -r now /backupdit/data1 /obnova/data1

# obnova stav před 5 dny
rdiff-backup -r 5D /backupdit/data1 /obnova/data1

# obnova stav k datu
rdiff-backup -r 2015-09-20 /backupdit/data1 /obnova/data1

# odstranění záloh starší než ...
rdiff-backup --remove-older-than 31D /backupdir/data1

# rdiff-backup-fs (FUSE), mount zálohy přes FUSE
# ---
rdiff-backup-fs /mnt /backupdir/data1
ls -la /mnt
umout /mnt

Pozn 1.: Pokud budete obnovovat data do stejné složky odkud probíhala záloha a pujde o přepis tak rdiff bude křičet, je nutné použít parametr –force.

Pozn 1.: K rdiff-backup-fs mount složce je nutné přistupovat jako root (dáno std FUSE technologií), pokud se to nehodí mrkněte do /etc/fuse.conf.

Rdiff-backup má jako většina nástrojů v unixech “hromadu” přepínačů, studujte man rdiff-backup.

A to je vše, užívejte moudře a zálohujte, díky za pozornost.

František Havel, MOJEservery.cz