Portál AbcLinuxu, 30. dubna 2025 14:25

Synchronizace souborů - unison

1.12.2006 15:18 | Přečteno: 3538× | blog | Výběrový blog

Unison je software pro dvoucestnou synchronizaci adresářů. Dvoucestnost je hlavním rozdílem oproti mirrorovacímu nástroji rsync. Změny mohou probíhat na obou stranách a unison se je pokusí sloučit a replikovat na oba uzly. To jej v mých očích přímo předurčuje ke správě přenosné "aktovky" na flashdisku.

Instalace proběhla jednoduše, nebo spíše neproběhla. Jak cygwin, tak FreeBSD mají unison v záklaních repositářích balíků, takže po instalaci balíků bylo hotovo. Existuje sice i grafická verze, ale já jsem zůstal u verze textové, neboť ně zajímá hlavně dávkové použití.

Základní použití:

    unison /home/martin/Poznamky/ /umass/briefcase/Poznamky/

Další zajímavé paramtry

    -auto               automatically accept default actions
    -batch              batch mode: ask no questions at all
    -rsync              activate the rsync transfer mode
    -silent             print nothing (except error messages)

Unison může být řízen takzvaným profilem. To je textový soubor obsahující stejné přepínače jako lze zadat na příkazovém řádku. Zadává-li se přepínač na příkazovém řádku bez parametru, např. `-silent`, potom v profilu má parameter `true` nebo `false`, pokud má parametr s hodnotou jako např. přepínač `diff`, potom se k přepínači v profilu píše tato hodnota.

Konfigurace profilu začala příkazem `vim .unison/default.prf`, jeho obsah je následující:

    # Unison preferences file
  
    # Roots of the synchronization
    root = /home/martin
    root = /umass/briefcase
  
    # Paths to synchronize 
    path = Dokumenty
    path = Poznamky
    path = Projekty
    path = Texty
  
    # Keep a backup copy of the entire replica
    backup = Name *
  
    # Use this command for displaying diffs
    diff = diff -y -W 79 --suppress-common-lines
  
    # /umass je FAT32
    ignorecase = true
    perms = 0o0000
  
    # regexps specifying names and paths to ignore
    ignore = Name temp.*
    ignore = Name *~
    ignore = Name .*~
    ignore = Name *.clean
    ignore = Name .*.clean
    ignore = Name *.tmp
    ignore = Name *.swp
  
    # merging conflict files
    merge = Name *.txt -> diff3 CURRENT1 CURRENTARCH CURRENT2 -m > NEW

V definicích `ignore` a dalších je možné používat exaktní cestu (relativní k adresáři `root`) nebo jméno včetně divokých znaků shellu nebo regulární výrazy. Která z možností se použije definuje klíčové slovo, které ji předchází.

    Regex regexp
    Name name
    Path path

Příklad:

    ignore = Name {CVS,*.cmo}
    ignore = Path */tmp

Konflikty je možné řešit předprogramovaným příkazem, který se pokusí konfliktní verze souborů sloužit do jednoho výsledku:

  merge = <PATHSPEC> -> <MERGECMD>

Příklad:

  merge = Name *.txt -> diff3 CURRENT1 CURRENTARCH CURRENT2 -m > NEW

Všechno není jen růžové. Při vložení nových adresářů do synchronizace se někdy stává, že se nedaří je synchronizovat automaticky a při prvním pokusu o synchronizaci se tváří, že neví co s nimi a je potřeba zopakovat synchronizaci s ručním zadáním směru. Také synchronizace na FAT neumí zachovat datum změny. To sice synchronizaci nevadí, ale je to nepříjemné.

Unison toho umí mnohem více Např. nepoužívám režim `remote` synchronizace pomocí protokolu ssh, nebo socket (vlastní server unisonu). Příjemné je, že unison běží na un*xech (vč. MacOS) a též na windows, nejen pomocí cygwin, ale i kompilován pomocí mingwin do binárky bez potřeby cygwin knihoven.

Pokud potřebujete synchronizovat soubory, třeba mzi domácím a pracovním počítačem, jako já, určitě se zvládnout unison vyplatí.

       

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

1.12.2006 15:37 Kníže Ignor | skóre: 19 | blog: stoupa
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
Odpovědět | Sbalit | Link | Blokovat | Admin
Fešný zápisek. Jenom jsem nepochopil, jak to udělátko pozná, kterým směrem má daný soubor synchronizovat. Bez nějaké databáze na obou stranách to asi není možné, ne?

Jinak roli mé aktovky plní SVN repozitář.
Jestli máš zálohu mého blogu, tak mi ji pošli. Nějak jsem si ho smazal :-)
1.12.2006 15:52 Kníže Ignor | skóre: 19 | blog: stoupa
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
BTW (http://www.cis.upenn.edu/~bcpierce/unison/status.html):
Unison is no longer under active development as a research project. (Our research efforts in this area are now focused on a follow-on project called Harmony—more details are available on the Harmony home page.) At this point, there is no one whose job it is to maintain Unison, fix bugs, or answer questions.

However, the original developers are all still using Unison daily. It will continue to be maintained and supported for the foreseeable future, and we will occasionally release new versions with bug fixes, small improvements, and contributed patches.
Jestli máš zálohu mého blogu, tak mi ji pošli. Nějak jsem si ho smazal :-)
Josef Kufner avatar 1.12.2006 16:44 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
To zní, jak kdyby to byl další program, který dosáhnul dokonalosti a už na něm není co dělat ;-)
Hello world ! Segmentation fault (core dumped)
4.12.2006 10:49 Martin Lebeda | skóre: 22 | blog: Martinuv_blog | Plzeň
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
Tím lépe, protože mám rád programy, které se mi nemění pod rukama.
zager avatar 11.1.2008 09:09 zager | skóre: 23 | Praha
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
Jen jsem nedavno klukum sfouknul nove ikony, ale jinak se opravdu deje jen malo. Aplikace nicmene funguje :)
Webdesign a grafika, to je můj život na vitavalka.cz
1.12.2006 16:04 petr
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
Jen je škoda, že to neumí běžet např. přes HTTP protokol... V práci jsou čur..i a nedovolí mi víc než http popř. https. Takže nějakej socket či ssh si můžu strčit tak leda ... víme kam...

Ale myslím, že to využiju jen na jedné straně – tj. doma a budu chodit s flashkou (když si ji koupím...)

Děkuji za perfektní nakopnutí (mně totiž nevadí, že se projekt nevyvíjí...)
2.12.2006 10:16 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
To mas z toho, ze si lamer :-)

Ak mas https, tak mas dost. Tiez som v praci, kde vonku prejde iba http (ide to cewz proxy, takze to skutocne musi byt http) na 80/tcp a https na 443/tcp. No lenze, do https nevidno, pretoze je od zaciatku sifrovane, takze sa neda zistit, co na nom bezi, aj ked tiez musi ist cez proxy.

Pustil som si doma ssh server okrem standardneho portu aj na porte 443. A z prace sa napojim domov pomocou putty (je aj verzia pre linux), kde cielovy port je 443 a je v nom zadana proxy a jej typ HTTP. V inom ssh klientovi nez putty som nenasiel podporu proxy, ale to az tak nevadi. Putty je slusne a navyse podporuje aj tunely, takze popri putty si mozem tunelom tahat cez scp (sice je to 2x sifrovane, ale nevadi, uzke hrdlo je linka a nie procak) alebo si otvorit dalsie spojenie v konsole atd.
If you hold a Unix shell up to your ear, you can you hear the C.
4.12.2006 10:41 Martin Lebeda | skóre: 22 | blog: Martinuv_blog | Plzeň
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
Ano - má databázi v adresáři ~/.unison (nebo v odpovídajícím adresáři na windows) - to že v té databázi nenajde něco, co neví zda to má smazat na jedné straně nebo naopak naopírovat na druhou způsobuje zmíněné zmatení při přidání adresáře...
6.12.2006 06:39 Martin Lebeda | skóre: 22 | blog: Martinuv_blog | Plzeň
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
O použití SVN jsem také uvažoval, ale pak jsem to zavrhl, protože tohle mi přišlo mnohem jednodužší. Ale to může být prostě tím, že SVN neovládám tak dobře...
1.12.2006 17:41 Lukáš Zapletal | skóre: 42 | blog: lzapův svět | Olomouc
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
Odpovědět | Sbalit | Link | Blokovat | Admin
http://www.linuxexpres.cz/praxe/unison-1
Later --- Lukáš Zapletal
4.12.2006 10:47 Martin Lebeda | skóre: 22 | blog: Martinuv_blog | Plzeň
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
no vida - další potvrzení toho, že vše již bylo napsáno...
4.12.2006 21:17 Leoš Literák | skóre: 74 | blog: LL | Praha
Rozbalit Rozbalit vše Re: Synchronizace souborů - unison
Odpovědět | Sbalit | Link | Blokovat | Admin
Mohl bys to prosim pridat do katalogu software? Mohlo by se to nekdy hodit :-)
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.