Tegnapelőtt megígértem, hogy bemutatom, hogy lehet fájlokat szinkronizálni több kliens között. Íme: fájlszinkronizáció Unison segítségével több operációs rendszer és kliens között.
A fájlszinkronizáció jóval bonyolultabb, mint a levelek, névjegyek és a naptár szinkronizációja – de mindent csak egyszer kell beállítani, utána már működik szinte magától. Ráadásul leírva minden gyakorlat bonyolultabbnak tűnik, mint a valóságban. Ezért lehet a fájlszinkronizáció a MobileMe egyetlen valóban létező igényt kielégítő szolgáltatása, bár úgy tűnik a híradásokból, hogy fájlokat csak Mac-ek között tud szinkronizálni.
Az én megoldásomhoz szükség van egy távoli linuxos (Mac-es, Windows-os) szerverre, akkora kapacitással, amennyi fájlt szinkronizálni szeretnénk. Nem elég ftp- vagy webtárhely, olyan szolgáltatásra van szükség, ami lehetővé teszi, hogy parancsot futtathassunk parancssorból (ssh hozzáférés kell). Szolgáltatásaink között érdemes szétnéznie annak, aki komolyan fontolgat egy ilyen opciót, bár én nem nagyon találtam.
A cél az, hogy több, akár különböző operációs rendszert futtató számítógépen is mindig ugyanazokat a fájlokat találjuk, ugyanabban az állapotban. Ezért nem elég valamilyen ingyenes archiváló rendszert használni, mert az csak egyetlen kliensről tudja távolra frissíteni az adatokat, ami problémákat okozhat. Képzeljük el, hogy mondjuk Windows-os laptopunkon szerkesztünk egy szövegfájlt, aztán mondjuk asztali Mac-en akarunk dolgozni vele. Ha a Windows-os gépen a kész fájlt archiváljuk (feltötljük egy távoli szerverre), még nem fog megjelenni a Mac-ünkön. Ha viszont a Macről archiválunk, a régebbi verziójú fájl felülírja a szerveren lévő frissebbet, és lőttek a Windows-os gépen végzett módosításoknak. Az egyirányú archiválás helyett több irányú rendszerre van szükség, amely mindig mindegyik kliensre mindenből a legfrisebb verziót tölti le vagy tölti fel, ha ott van a frissebb.
Erre az egyetlen többplatformos és ingyenes megoldás az Unison nevű program, amit kifejezetten erre a célra fejlesztenek. Mindig megvizsgálja a saját (helyi) fájlajit és összeveti a távoli gép fájljaival, és több irányú művelettel összefésüli őket. A lényeg: a művelet végén mindkét kliensen egyformán friss fájlok lesznek. Ha új fájlt készítettünk, felkerül a szerverre, ha viszont a szerveren emellett olyan fájlt is talál, ami frissebb a nálunk lévőnél, letölteti oda is. Így több gépről is dolgozhatunk ugyanazokkal a fájlokkal.
1. minden kliensen azonos alverziójú Unisonnak kell lennie. 2. a programmal több könyvtár (és az alkönyvtárai) szinkronizálható, de érdemes mindenhol egyetlen könyvtárat készíteni a szinkronizálandó fájlokhoz egyetlen beállítási profillal (a kijelölt könyvtárak nevének nem kell egyezniük). 2. az Unison biztonságos távoli shell-el másolja a fájlokat, ezért minden résztvevőn szükség van legalább egy ssh-kliensre és egy ssh-szerverre. Linuxokon és Mac-eken ez eleve rendelkezésre áll, Windowson viszont külön kell telepíteni.
A legtöbb linux-disztribúcióhoz van bináris Unison, tehát nem kell forrásból fordítani. Ubuntuhoz pédául jár, tehát apt-get-tel fel lehet telepíteni. Installálás után nem sok dolgunk marad: el kell készíteni egy könyvtárat a szinkronizálandó fájloknak. Minden más beállítást a klienseken végzünk.
Persze még nincs automatizálva a folyamat, mert mindig kézzel kell indítani a frissítést, de van erre is megoldás: AppleScript. Ahelyett, hogy elmagyaráznám, megmutatom inkább az enyémet. A könyvtárak és a szerver nevét kell benne kicserélni, majd a szinkronizálandó foldernél beállítani FolderActionnek.
(*
ADD - NEW ITEM ALERT
©2002 Apple Computer
This Folder Action script is designed for use with Mac OS X version 10.2 and higher.
This Folder Action handler is triggered whenever items are added to the attached folder.
The script will display an alert
containing the number of items added and offering the user
the option to reveal the added items in Finder.
*)
property parancs : "cd ~/Library/Application\\ Support/Unison/ && unison -ui text -batch -auto diszk.prf"
-- itt kell megváltoztatni a profil nevét (.prf)
property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.
on adding folder items to this_folder after receiving added_items
do shell script "say 'unison is syncing'"
try
do shell script parancs
on error the error_message
do shell script "say 'error!'"
display dialog error_message
end try
end adding folder items to
Unison letöltése: http://www.cis.upenn.edu/~bcpierce/unison/