Zálohování na USB disk v Linuxu jednoduše

kojot4

  • ***
  • 217
    • Zobrazit profil
    • E-mail
Zálohování na USB disk v Linuxu jednoduše
« kdy: 17. 06. 2015, 21:09:44 »
Dlouho jsem se potýkal s problémem zálohování svého linuxového stroje. Prošel jsem si spoustu nástrojů na zálohování, ale u většiny jsem vždy narazil na zásadní problémy - buďto byly příliš primitivní (neumožňovali excludovat složky, inkrementální zálohy, šifrování, komprese), nebo se jednalo o komplexní enterprise nástroje (vyžadovali vlastní SQL databázi, složitou konfiguraci, agenta, server atd... což je pro jeden počítač trošku moc).

Proto jsem uvažoval na to jak to řešit, nejdříve jsem chtěl napsat vlastní aplikaci v Pythonu, která bude dělat inkrementální ZIP soubory, řešit šifrování, mít vlastní databázi v SQLite apod., ale nebyl na to čas a i tak mi dané řešení přišlo příliš složité.

Postupem času jsem našel relativně jednoduché a funkční řešení. Používám dm-crypt, btrfs a rsync. Přes dmcrypt vytvořím šifrovaný container, v btrfs zapnu kompresi a přes snapshoty udělám inkrementální zálohy tím, že do nového snapshotu nakopíruji RSyncem změny.

Co jsem si s tím tak hrál, tak výsledky jsou velmi dobré. Všechno vyžadovalo skript o 20ti řádkách, software není potřeba žádný (obnova je tedy jednoduchá), žádná databáze a inkrementální zálohování je opravdu velmi, velmi rychlé (na 1TB disku, kde je 600GB dat například při změně 1GB proběhne inkrementální záloha na usb disk do minuty).

Celé své dílo jsem pod GNU/GPL v3 zveřejnil na https://github.com/koss822/misc

Uvažuji o následujících věcech:

  • Jak zajistit retention (dochází místo na usb disku, jak to detekovat a promazat starší zálohy)
  • Jak vylepšit dokumentaci a vysvětlení (chtěl bych, aby to používalo více lidí, protože vím, že to dost lidí poměrně řeší)
  • Nějaké nápady na rozšíření vylepšení?

Řekl bych, že dané řešení je poměrně dost elegantní, rychlé, přehledné a nabízí i možnosti jako například použití šifrovacího klíče z disku (takže není třeba zadávat heslo).

Kdyby někoho trápilo to samé, a chtěli byste to například otestovat, dát mi feedback atd., ocenil bych to... Nerad si dělám věci do šuplíku a danou utilitu už 2 měsíce ke své spokojenosti používám...


Jenda

Re:Zálohování na USB disk v Linuxu jednoduše
« Odpověď #1 kdy: 17. 06. 2015, 22:06:36 »
Hezké, už nějakou dobu používám totéž, akorát jsem si to musel napsat sám.

To promazávání v závislosti na místě by bylo fajn, já byl moc líný to implementovat, takže prostě držím poslední dva měsíce a mám vyzkoušeno že to je při produkci dat tady tak akorát na velikost toho disku. Efektivně by stačilo seřadit si zálohy podle data a potom je v cyklu po jedné odmazávat dokud nebude místa zase dost (+ nastav něco jako že když by zbylo méně než 5 záloh tak je to nesmaže a uživatele to upozorní).

kojot4

  • ***
  • 217
    • Zobrazit profil
    • E-mail
Re:Zálohování na USB disk v Linuxu jednoduše
« Odpověď #2 kdy: 18. 06. 2015, 00:51:00 »
Hezké, už nějakou dobu používám totéž, akorát jsem si to musel napsat sám.

To promazávání v závislosti na místě by bylo fajn, já byl moc líný to implementovat, takže prostě držím poslední dva měsíce a mám vyzkoušeno že to je při produkci dat tady tak akorát na velikost toho disku. Efektivně by stačilo seřadit si zálohy podle data a potom je v cyklu po jedné odmazávat dokud nebude místa zase dost (+ nastav něco jako že když by zbylo méně než 5 záloh tak je to nesmaže a uživatele to upozorní).

Trošku uvažuji nad problémem definice "dost místa". To je totiž docela zákeřné, když třeba přesunu velkou složku, tak může mít inkrement 150GB a já si definuji jako "dost místa 100GB". Stejně tak pokud jsou inkrementy 1GB, je zbytečné mazat o staré zálohy. Stejně tak držení například minimálně 2 starých záloh, zní to fajn, ale jakmile uděláš poměrně zásadní změny (třeba přesuneš 300GB dat do jiných složek), tak to může být omezující.

Já osobně třeba používám 2 usb disky, které rotuji na off-site zálohu, takže v době když zálohuji, kdyby došlo ke kompromitaci primárního úložiště (blesk, vykradení, lidská chyba), tak stále mám vždy off-site další disk s funkčními zálohami, takže nepotřebuji řešit nějaké "co kdybych si vymazal starší zálohu při vytváření nové". Ale asi by bylo fajn zanést do dokumentace, že skript je určen pro rotaci 2 usb disků (což je IMHO stejně nejlepší a nejbezpečnější způsob řešení, kort při dnešní ceně 2.000 Kč za 1TB disk)

Co se týká mazání starých záloh, uvažuji, že nejlepší řešení by bylo sledovat spíše error výstup, takže kdybych tam doplnil něco ve stylu:

Kód: [Vybrat]
while true; do
  rsync... 2> /tmp/rsync.err
  if ! grep -q "No space left" /tmp/rsync.err; then
    break
  fi
  # remove old backup
  oldest=$(ls -ltr ... | tail -n1 | awk ...)
  backups=$(ls -ltr ... | wc -l)
  # možná bych ještě doplnil kontrolu, že nechám poslední backup
  if [ "$backups" -le "1" ];
    read -n1 -r -p "Do you want to delete last backup, there is no space on device... [y/n]" key
    if [ ! "$key" = "y" ]; then
      echo "No space left, exiting..."
      exit 1
   fi
   btrfs subvolume delete $oldest
done

kojot4

  • ***
  • 217
    • Zobrazit profil
    • E-mail
Re:Zálohování na USB disk v Linuxu jednoduše
« Odpověď #3 kdy: 19. 06. 2015, 11:04:22 »
tak jsem do GitHubu commitnul změnu s tím promazáváním starších záloh, tak kdyby tu ještě někdo měl nápad na vylepšení :)

TKL

Re:Zálohování na USB disk v Linuxu jednoduše
« Odpověď #4 kdy: 19. 06. 2015, 14:13:20 »
No já si nejsem jist, zda nevynalézáte znovu kolo...
https://launchpad.net/deja-dup


kojot4

  • ***
  • 217
    • Zobrazit profil
    • E-mail
Re:Zálohování na USB disk v Linuxu jednoduše
« Odpověď #5 kdy: 19. 06. 2015, 14:51:39 »
No já si nejsem jist, zda nevynalézáte znovu kolo...
https://launchpad.net/deja-dup

Tak proto to sem píšu, protože to člověk nikdy neví. Je fakt, že o tomhle SW jsem nevěděl, ale když jsem kliknul v Ubuntu Software Center na recenze, tak to byla síla - recenze jsou hodně slabé a typu "software je buggy, obnovy se nedaří, nedaří se zálohy atd..". Nevím jestli bych něco takového použil...

nobody

Re:Zálohování na USB disk v Linuxu jednoduše
« Odpověď #6 kdy: 19. 06. 2015, 15:08:28 »
k DejaDup - recenze... jsou tak i kladne recenze, a dalsi vec je tak ze vetsinou ti co jsou spokojeni mlci, ty co maji problemy bud nahlasi bug a/nebo si zanadavaj v recenzi, z report bugu muze vzniknout oprava v dalsi verzi a komentar jiz zustane (i kdyz treba se zminkou o jakou verzi slo) pokud si ale jen zanadaval, tezo vyvojari z toho budou mit dost infa na opravu bugu...

ale k tomu tvemu + obecne - jiste, je uz toho spousta, ale pokud si chces napsat neco pro sebe, a jak vidim chces aby to bylo i pro ostatni, neco se na tom naucit tak proc ne :)

nekolik podnetu k zamysleni:
zobrazeni dialogu pro selectivni vyber zaloh k smazani s info o jejich velikosti, pripadne prednastavene ty nejstarsi, ktere by velikostne stacili na vytvoreni zalohy nove

pouziti yad (nebo alespon zenity ktere bejva nainstalovano by default) a pri detekci behu pod Xkama zobrazovat dialogs, progress, notifikace v GUI

pripravit udev rulez na automaticke pousteni tohoto scriptu (pri behu v gui s moznym dotazem) detekovanim UUID, nebo pomoci dalsiho scriptu(resp. klidne toho jednoho s volanim parametrem, nebo pomoci symlinku jineho jmena) detekovanim souboru/adresare na disku

uchovavani informaci (a jejich zpetne zobrazeni pokud o to pozadas) o datumu zaloh, jejich velikosti, uspechu, pripadne i jake soubory byli zalohovane

rozsirit z pouziti na usb na dalsi uloziste jako sshfs, sftp..., pripadne to pouzit jen jako moznost sekundarni zalohy onoho USB...

btw: co budes rikat kdyz ten kdo to vyzkousi napise komentar "je to na h*vno" ale nenapise co, kdy,proc, nedoda logy apod ? asi ti dojde co sem psal o DejaDup ;)

TKL

Re:Zálohování na USB disk v Linuxu jednoduše
« Odpověď #7 kdy: 19. 06. 2015, 17:44:02 »
No já si nejsem jist, zda nevynalézáte znovu kolo...
https://launchpad.net/deja-dup

Tak proto to sem píšu, protože to člověk nikdy neví. Je fakt, že o tomhle SW jsem nevěděl, ale když jsem kliknul v Ubuntu Software Center na recenze, tak to byla síla - recenze jsou hodně slabé a typu "software je buggy, obnovy se nedaří, nedaří se zálohy atd..". Nevím jestli bych něco takového použil...

No já to používám už docela dlouho a na problém jsem díky bohu nenarazil. Dělá to vše, co píšte že potřebujete, navíc ukládá deduplikovaně. Součástí je i kontrolní ověřování konzistence zálohovaných dat čas od času. Léta používám souběžně s linuxem i Mac OS X, dlouho před tím, než udělali Time Machine, takže zálohovacích utilit jsem vyzkoušel hodně. Mám i své řešení na serverech na bázi rsyncu (no řešení je silné slovo, prostě skript v cronu). Jestli můžu hodnotit, tak DejaDup mi připadá jako druhé nejblbuvzdornější desktopové zálohování hned po TM.