Bidirectorial rsync s vlastnou hash funkciou

m3l1sk0

Bidirectorial rsync s vlastnou hash funkciou
« kdy: 15. 06. 2016, 16:12:45 »
Zdravim. Chcel by som si spravit NAS server kde by sa mi v pravidelnych internvaloch spustal backup a ktory by bol dostpny cez verejnu IP. Rozmyslal som nad cron+rsync no ma to par nevyhod. Povedzme ze chcem backupovat napr mp3.

Prvy backup prebehne fajn. Ale medzi casom reorganizujem zbierku (vytvorim adr pre zanre a tam zaradim skladatelov a pod.). Ako nasledne poviem rsyncu aby nekopiroval data znova ale aby ich len popresuval do novych adresarov vramci backupu? Dalsi problem je ked zmenim id3 tagy v mp3. rsync pouziva hash, pri zmene id3 tagu bude samozrejme aj iny hash suboru.

Potrebujem nieco ako rsync co dokaze pouzivat vlastnu hashovaciu funkciu (taku ktora preskoci x bajtov potrebnych na id3 a vyrata hash len zo suboru - pouzitim dd a md5sum to nieje problem napisat). Potom viem jednoducho cez find xargs etc. vytiahnut id3 a zmenit ich v backupe (kedze budu mat rovnaku adresarovu strukturu). Dalsi problem je s bidirectorial syncom. Viem ze rsync nieje na toto vhodny.

Nasiel som mnoho nastrojov ktore pouzit (csync vs csync2 vs bsync vs unison vs osync vs tsyncd) ale vela znik uz nieje aktivne vyvyjana resp posledny update je par rokov stary, radsej by som sa naucil nieco co sa aktivne vyvja a kde sa bugy opravuju, ako nieco co je par rokov stare a nikto sa o to nestara. Dakujem
« Poslední změna: 15. 06. 2016, 21:53:24 od Petr Krčmář »


Re:bidirectorial rsync s vlastnou hash funkciou
« Odpověď #1 kdy: 15. 06. 2016, 16:32:49 »
Jinou hashovací funkci nepotřebujete. Rsync pozná, že se soubor změnil (primárně podle data změny), zdrojový soubor rozdělí na bloky, spočítá jejich hash, a pak na cílovém serveru hledá, zda v cílovém souboru není blok se stejným hashem. Pokud ano, použije daný blok, pokud ne, přenese daný blok ze zdrojového souboru. Pokud tedy změníte id3 tagy souboru, změní se jen jeho malá část, a rsync přenese jen blok obsahující tuto část souboru. Tohle přenášení pouze změněných částí je důvod, proč rsync vznikl.

Oboustranná synchronizace by také neměl být problém, ale musí vám jít na obou stranách správně hodiny, aby rsync poznal, co je novější verze. A samozřejmě rsync nepozná konfliktní změny, použije vždy novější verzi – musíte si pohlídat, abyste jeden soubor neměnil na obou stranách různým způsobem.

To přesouvání souborů zkuste řešit parametrem --fuzzy a souvisejícími, ale s tím bude mít problém každý systém, který vidí jenom aktuální obraz souborového systému. Řešil by to nějaký verzovací systém, který přesuny souborů sleduje – ale nenapadá mne žádný určený pro binární soubory.

Re:Bidirectorial rsync s vlastnou hash funkciou
« Odpověď #2 kdy: 15. 06. 2016, 21:58:09 »
Existující verzovací systémy mohou bez problému evidovat i přesuny binárních souborů. Ale řešení tazatelova problému to asi není.

S přesuny souborů by si mohly poradit nástroje na deduplikaci souborů. Ty zajistí, že skutečná data budou na disku jen jednou a tedy bude zcela jedna, jaké je jejich umístění.

Pro zálohy jsem používal rdiff-backup, který umí udržovat historii změn. Fungovalo to dobře, ale pokud jsem adresář s fotkama přejmenoval,  kopíroval data skutečně znova. Což byl asi hlavní problém toho jinak bezvadného řešení.

Re:Bidirectorial rsync s vlastnou hash funkciou
« Odpověď #3 kdy: 16. 06. 2016, 07:15:29 »
Existující verzovací systémy mohou bez problému evidovat i přesuny binárních souborů.
To ano, ale už si neporadí s efektivním přenosem těch binárních souborů přes síť, a dokonce ani s jejich uložením. Resp. nevím o žádném verzovacím systému, který by ukládal jen rozdíly binárních souborů podobným způsobem,  jako je rsync přenáší přes síť.

i

Re:Bidirectorial rsync s vlastnou hash funkciou
« Odpověď #4 kdy: 16. 06. 2016, 07:45:55 »
Už léta používám unison, kterým synchronizuji pracovní adresáře který má dnes 2GB mezi počítači v práci, doma a osobním VPS. Synchronizaci z práce provádím dokonce přes internet z mobilu (GPRS) a tato přesto trvá asi 10 vteřin.

Jedinou nevýhodu kterou vidím u unison-u je, že pokud náhodou dojde ke kolizi, tak to musím řešit, ale k té mi dochází vzácně a je dobré některé vĚci dělat ručně.



m3l1sk0

Re:Bidirectorial rsync s vlastnou hash funkciou
« Odpověď #5 kdy: 21. 06. 2016, 08:39:09 »
Už léta používám unison, kterým synchronizuji pracovní adresáře který má dnes 2GB mezi počítači v práci, doma a osobním VPS. Synchronizaci z práce provádím dokonce přes internet z mobilu (GPRS) a tato přesto trvá asi 10 vteřin.

Jedinou nevýhodu kterou vidím u unison-u je, že pokud náhodou dojde ke kolizi, tak to musím řešit, ale k té mi dochází vzácně a je dobré některé vĚci dělat ručně.

Mozem sa opytat preco resp kedy moze dojst ku kolizii?

Re:Bidirectorial rsync s vlastnou hash funkciou
« Odpověď #6 kdy: 21. 06. 2016, 09:08:27 »
Mozem sa opytat preco resp kedy moze dojst ku kolizii?
Změníte soubor na jedné straně a dřív, než dojde k synchronizaci, změníte ho i na druhé straně. Třeba něco změníte na domácím počítači, pak vezmete notebook, který zrovna nemáte připojen k internetu, pracujete na něm a přitom změníte stejný soubor.

Re:Bidirectorial rsync s vlastnou hash funkciou
« Odpověď #7 kdy: 21. 06. 2016, 12:09:24 »
Alespoň některé z těch problémů by měl řešit Syncthing (https://syncthing.net/). Doporučuji vyzkoušet.