Dokumentáció/SL9.3/Szolgáltatások/Fájlszinkronizálás

Icon-restore.png Manapság sok ember használ több gépet – egyet otthon, egyet vagy többet a munkahelyen és esetleg utazás közben egy noteszgépet vagy PDA-t. Sok fájlra az összes számítógépen szükség van. Lehet, hogy szeretne az összes gépen dolgozni, fájlokat módosítani, majd pedig azt szeretné, hogy az összes gépen rendelkezésre álljanak a legfrissebb adatok.

A rendelkezésre álló adatszinkronizációs szoftverek

Az adatszinkronizálás nem gond olyan számítógépek esetén, amelyek állandóan egy gyors hálózatra vannak csatlakoztatva. Ebben az esetben használjon hálózati fájlrendszert (például NFS-t), és tárolja a fájlokat a szerveren; így az összes gép ugyanazokat a fájlokat éri el a hálózaton keresztül. Ez a megközelítés nem lehetséges, ha a hálózati kapcsolat lassú vagy nem állandó. Ha úton van egy noteszgéppel, akkor a szükséges fájlok másolatát a helyi merevlemezen kell tárolni. Ezután a módosított fájlokat szinkronizálni kell. Ha a fájlt az egyik számítógépen módosítja, akkor gondoskodjon róla, hogy a fájl egy másolata az összes számítógépre rákerüljön. Alkalmi másolatok esetén ez kézzel az scp vagy rsync parancs segítségével hajtható végre. Ha sok fájl érintett, akkor az eljárás bonyolult lehet és nagy körültekintést igényel a hibák elkerülése (például hogy ne írjunk felül egy új fájlt a régivel).

Icon-Caution.png Adatvesztés kockázata

Mielőtt az adatokat egy szinkronizációs rendszerre bízza, ismerje meg alaposan a használni kívánt programot és tesztelje annak funkcióit. A fontos fájlok biztonsági mentését nem szabad elhanyagolni.

Az adatok kézi szinkronizálásának időigényes és könnyen elhibázható feladata elkerülhető olyan programok alkalmazásával, amelyek különböző eljárások segítségével automatizálják ezt a feladatot. Az alábbi összefoglalók mindössze be kívánják mutatni e programok működését és használatát. Ha használni kívánja őket, akkor olvassa el a programok saját dokumentációját.

Unison

A Unison nem egy hálózati fájlrendszer. Használatával a fájlok helyileg kerülnek mentésre és szerkesztésre. A Unison program kézzel futtatható a fájlok szinkronizálásához. Az első szinkronizáció végrehajtásakor a két gépen létrejön egy adatbázis, amely a kiválasztott fájlok ellenőrzőösszegét, időbélyegét és jogosultságait tartalmazza. A következő végrehajtáskor a Unison felismeri, hogy mely fájlok kerültek módosításra, és javaslatot tesz az átvitelre egy másik gépről vagy gépre. Általában az összes javaslat elfogadható.

CVS

Az általában a programok forrásverzióinak kezelésére használt CVS lehetőséget ad arra, hogy a fájlok másolatait több számítógépen legyenek tárolhatók. Ennek megfelelően adatszinkronizálásra is jó. A CVS egy központi adattárat tart a szerveren, és ebbe menti a fájlokat és módosításaikat. A helyileg végrehajtott módosítások elküldésre kerülnek az adattárba és lekérhetők más számítógépekről egy frissítés segítségével. Mindkét műveletet a felhasználónak kell kezdeményeznie.

A CVS nagyon hibatűrő, ha több gépen is történnek változások. A módosítások összefésülésre kerülnek, és ha változások vannak ugyanabban a sorban, akkor a rendszer ütközési jelentést küld. Ha ütközés van, az adatbázis konzisztens állapotban marad. Az ütközés a feloldás érdekében csak a kliensgépen látható.

subversion

Az idő során »kialakult« CVS-sel szemben a subversion egy következetes módon megtervezett projekt. A subversiont a CVS technikailag javított utódának készítették.

A subversion az elődjéhez képest számos javítást tartalmaz. Az előtörténete miatt a CVS csak a fájlokat tartja karban, a könyvtárakat figyelmen kívül hagyja. A subversion a könyvtárak verzióinak történetét is tartalmazza; ezek a fájlokhoz hasonlóan átmásolhatók és ánevezhetők. Metadatok is hozzáadhatók minden fájlhoz és könyvtárhoz. Ezek a metadatok a verziókezelés segítségével teljesen karbantarthatók. A CVS-sel ellentétben a subversion támogatja az átlátszó hálózati elérést dedikált protokollok – például a WebDAV (Web-based Distributed Authoring and Versioning) – segítségével. A WebDAV kiterjeszti a HTTP protokoll funkcióit, hogy lehetővé tegye a távoli webszervereken található fájlok együttműködő jellegű írási elérését.

A subversiont nagyrészt a meglévő szoftvercsomagok alapján rakták össze. Ezért a subversion mellett mindig fut Apache webszerver és a WebDAV kiterjesztés.

mailsync

Az előző részben bemutatott szinkronizálási eszközökkel ellentétben a mailsync csak az e-mail üzeneteket szinkronizálja a postafiókok között. Az eljárás alkalmazható a helyi postafiókfájlokra, de az IMAP-szerveren található postafiókokra is.

Az e-mail fejlécében lévő üzenetazonosító alapján az egyedi üzenetek szinkronizálásra vagy törlésre kerülnek. A szinkronizálás lehetséges az egyedi postafiókok és a postafiók-hierarchiák között is.

rsync

Ha nincs szükség verziókövetésre, de nagy könyvtárstruktúrákat kell szinkronizálni lassú hálózati kapcsolatokon keresztül, akkor az rsync kiváló mechanizmust kínál ahhoz, hogy csak a fájlok módosításai kerüljenek átküldésre. Ez nem csak a szövegfájlok, hanem a bináris fájlok esetében is működik. A fájlok közötti különbségek megállapításához az rsync a fájlokat blokkokra osztja és ellenőrzőösszeget számol.

A módosítások észlelésére fordított erőfeszítésnek ára van. A szinkronizálandó rendszereket körültekintően kell méretezni az rsync használatához. A memóriamennyiség különösen fontos.

Szempontok a program kiválasztásához

Kliens-szerver vagy egyenrangú?

Az adatok szétosztásához általában két különböző modellt használnak. Az első modellben az összes kliens egy központi szerverrel szinkronizálja a fájlokat. A szervert legalább időnként az összes kliensnek el kell érnie. Ezt a modellt használja a subversion, a CVS és a WebDAV.

A másik lehetőség, hogy az összes hálózati gép egymással, mint egyenrangú féllel szinkronizálja az adatokat. Ezt az alapelvet követi a unison. Az rsync valójában kliens módban működik, de bármely kliens működhet szerverként is.

Hordozhatóság

A subversion, a CVS és a unison számos más operációs rendszeren is rendelkezésre áll, a különböző UNIX- és Windows-rendszereket is beleértve.

Interaktív vagy automatikus?

A subversion, CVS, WebDAV és Unison programban az adatszinkronizálást a felhasználó maga kezdeményezi. Ez lehetővé teszi az adatok kifinomult felügyeletét és az ütközések kezelése is egyszerűbb. Azonban ha a szinkronizációs időközök túl hosszúak, akkor nagyobb valószínűséggel történnek ütközések.

Ütközések okok és megoldások

A subversion és CVS programban ritkán történnek ütközések; még akkor sem, ha több ember dolgozik egy nagy projekten. Ennek az az oka, hogy a dokumentumok egyedi sorok alapján kerülnek összefésülésre. Ha ütközés történik, akkor is csak egy kliensre van hatással. A subversion és a CVS programokban az ütközés általában egyszerűen feloldható.

A unison jelentést készít az ütközésekről, így az érintett fájlok kizárhatók a szinkronizálásból. A változások azonban nem fésülhetők össze olyan egyszerűen, mint a subversion és CVS esetén.

A subversion és CVS programokkal ellentétben, amelyekben ütközés esetén a módosítások részben elfogadhatók, a WebDAV csak akkor hajtja végre a bejegyzést, ha a teljes módosítás sikeresnek számít.

Az rsync-ben egyáltalán nincs ütközéskezelés. A felhasználó felelős azért, hogy ne írja véletlenül felül a fájlokat és hogy kézzel feloldja a lehetséges ütközéseket. A biztonság kedvéért egy verziókezelő rendszer – például az RCS – is használható.

Fájlok kiválasztása és hozzáadása

A szokásos konfigurációban a Unison a teljes könyvtárfát szinkronizálja. A fában megjelenő új fájlok automatikusan bekerülnek a szinkronizációba.

A subversion és CVS programokban az új könyvtárakat és fájlokat az svn add, illetve a cvs add parancs segítségével explicit módon meg kell adni. Így a felhasználók jobban kézben tarthatják a szinkronizálandó fájlokat. Másrészt viszont könnyebb kifelejteni az új fájlokat, különösen akkor, ha az svn update és svn status vagy cvs update parancs kimenetében lévő kérdőjeleket a fájlok nagy száma miatt figyelmen kívül hagyjuk.

Előzmények

A subversion és CVS további funkciója, hogy a régi fájlverziók rekonstruálhatók. Rövid szerkesztési megjegyzések szúrhatók be a módosításokhoz, a fájlok fejlesztése a tartalom és a megjegyzések alapján később egyszerűen nyomon követhető. Ez értékes segítség például dolgozatok és programszövegek írásakor.

Adatkötet- és merevlemez-követelmények

Az elosztott adatokhoz elegendő szabad területre van szükség az összes érintett gépen. A subversion és a CVS további területet igényel a szerveren az adattár adatbázisa számára. A fájlok előzményei szintén a szerveren tárolódnak, ami még több területet igényel. A szöveges formátumú fájlok módosításakor csak a megváltozott sorokat kell elmenteni. A bináris fájlok minden módosításkor további területet igényelnek.

GUI

A Unison grafikus felhasználói felületet kínál a Unison szinkronizálási folyamatainak megjelenítéséhez. Fogadja el a javaslatot vagy hagyjon ki egyes fájlokat a szinkronizálásból. Szöveges módban interaktívan erősítse meg az egyes eljárásokat.

A tapasztalt felhasználók a subversion vagy a CVS programot általában parancssorból futtatják. Emellett azonban rendelkezésre állnak grafikus felhasználói felületek Linux alá (pl. a cervisia), és más operációs rendszerekhez is (pl. wincvs). Számos fejlesztőeszköz (pl. a kdevelop) és szövegszerkesztő (pl. az emacs) támogatja a CVS és subversion használatát. Az ütközések feloldását gyakran egyszerűbb ezeken a felhasználói felületeken végrehajtani.

Felhasználóbarátság

A Unison és az rsync használata meglehetősen egyszerű és kezdők számára is könnyű. Az CVS és subversion használata némileg bonyolultabb. A felhasználóknak meg kell érteniük az adattár és helyi adatok közötti interaktív kapcsolat működését. Az adatmódosításokat először helyileg össze kell fésülni az adattárral. Ez a cvs update vagy az svn update segítségével hajtható végre. Ezután a cvs commit vagy svn commit parancs segítségével az adatokat vissza kell küldeni az adattárnak. Ha ezt az eljárást átlátják, akkor az új felhasználók a CVS vagy a subversion programot is kényelmesen használhatják.

Védelem a támadásokkal szemben

Az átvitel során az adatokat védeni kell lehallgatás és módosítás ellen. A Unison, a CVS, az rsync és a subversion egyszerűen használható ssh-n keresztül, ezáltal biztonságot nyújt az ilyen támadások ellen. A CVS vagy Unison rsh-n keresztüli használatát érdemes elkerülni. A CVS pserver mechanizmuson keresztüli elérése nem biztonságos hálózatokban szintén nem ajánlott. A subversion Apache szoftverrel együttes futtatása már biztosítja a szükséges biztonsági szintet.

Védelem az adatvesztéssel szemben

A CVS-t a fejlesztők már régóta használják programozási projektek kezelésére, lévén rendkívül stabil. Mivel a fejlesztési előzmények mentésre kerülnek, a CVS bizonyos felhasználói hibák – például a fájl véletlen törlése – ellen is védelmet nyújt. Annak ellenére, hogy a subversion nem olyan általános, mint a CVS, már alkalmazzák éles környezetekben (például magában a subversion projektben) is.

A Unison még viszonylag új, de magasszintű stabilitást biztosít. Ez azonban sokkal érzékenyebb a felhasználói hibákkal szemben. A fájltörlések szinkronizálásának megerősítése után a fájl nem állítható vissza.


Táblázat: A fájlszinkronizálási eszközök jellemzői: -- = nagyon gyenge , - = gyenge vagy nem áll rendelkezésre, o = közepes, + = jó, ++ = kitűnő, x = rendelkezésre áll
unison CVS/subv. rsync mailsync
Kliens/szerver egyenlő C-S/C-S C-S egyenlő
Hordozhatóság Lin,Un*x,Win Lin,Un*x,Win Lin,Un*x,Win Lin,Un*x
Interaktivitás x x/x x -
Sebesség - o/+ + +
Ütközések: o ++/++ o +
Fájlkiválasztás Könyvtár Kiv./fájl, könyvt. Könyvtár Postafiók
Előzmények - x/x - -
Merevlemez-terület o -- o +
GUI + o/o - -
Bonyolultság + o/o + o
Támadások +(ssh) +/+(ssh) +(ssh) +(SSL)
Adatvesztés + ++/++ + +


Az Unison bemutatása

A Unison kitűnő megoldás teljes könyvtárfák szinkronizálására és átviteléhez. A szinkronizáció minden könyvtárban megtörténik és egy grafikus felület segítségével vezérelhető. Konzolos változat is használható. A szinkronizáció automatizálható, így nincs szükség felhasználói beavatkozásra.

Követelmények

A Unisont a kliensen és a szerveren is telepíteni kell. Ebben a kontextusban a szerver kifejezés egy második, távoli gépre utal (a CVS-sel ellentétben, lásd: CVS).

Az alábbi részben a Unison SSH-val együtt kerül alkalmazásra. Ebben az esetben az SSH-klienst a kliensen, az SSH-szervert pedig a szerveren kell telepíteni.

Az Unison használata

Az Unison által használt megközelítés két (gyökér) könyvtár összerendelése egymással. Ez az összerendelés szimbolikus – nem online kapcsolat. Ebben a példában a könyvtárelrendezés az alábbi:

Ezt a két könyvtárat kell szinkronizálni. A felhasználó neve a kliensen tux, a szerveren pedig geeko. Először a kliens-szerver kommunikáció működését kell tesztelni:

unison -testserver /home/tux/dir1 ssh://geeko@server//homes/geeko/dir2

A leggyakrabban előforduló problémák:

  • A klinesen és a szerveren használt Unison-változatok nem kompatibilisek.
  • A szerver nem engedélyezi az SSH-kapcsolatokat.
  • Egyik megadott elérési út sem létezik.

Ha minden működik, akkor hagyja ki a -testserver lehetőséget. Az első szinkronizálás során a Unison még nem ismeri a két könyvtár közötti kapcsolatot és javaslatokat tesz az egyedi fájlok és könyvtárak átviteli irányára. A Művelet oszlopban levő nyilak jelzik az átvitel irányát. A kérdőjel azt jelenti, hogy a Unison nem tud javaslatot tenni az átvitel irányával kapcsolatban, mivel mindkét változat módosult vagy új.

A nyilak segítségével beállítható az egyedi bejegyzések átviteli iránya. Ha a megjelenített bejegyzések átviteli iránya megfelelő, akkor egyszerűen kattintson a Mehet gombra.

A Unison jellemzői (például az, hogy a tiszta esetekben a szinkronizáció automatikusan végrehajtható-e) a program elindításakor megadott parancssori paraméterek segítségével vezérelhetők. A unison --help parancs segítségével tekintse meg a paraméterek teljes listáját.


Icon-example.png Példa: A ~/.unison/example.prefs fájl

root=/home/tux/dir1
root=ssh://wilber@server//homes/wilber/dir2
batch=true

A ~/.unison felhasználói könyvtárban minden párhoz van egy szinkronizációs napló. A konfigurációs halmazok, mint például a ~/.unison/example.prefs, szintén tárolhatók ebben a könyvtárban. A szinkronizáció elindításához a unison example.prefs parancsban adja meg ezt a fájlt parancssori paraméterként.

További információ

A Unison hivatalos dokumentációja rendkívül jól használható. Emiatt ez a rész csak egy rövid bevezetőt nyújt. A teljes leírás megtalálható a http://www.cis.upenn.edu/~bcpierce/unison/ címen, valamint a unison SUSE csomagban.

Bevezető a CVS-hez

A CVS akkor felel meg leginkább szinkronizálásra, ha az egyedi fájlok gyakran kerülnek módosításra, és olyan fájlformátumban kerülnek tárolásra, mint például ASCII szöveg vagy program forrásszöveg. A CVS más formátú adatok (például JPEG-fájlok) szinkronizálására is használható, de ez nagyon sok adatot eredményez, mivel a fájl minden verziója állandóan tárolásra kerül a CVS szerveren. Ilyen esetekben a CVS legtöbb funkciója nem használható. A CVS csak akkor használható fájlok szinkronizálásához, ha az összes munkaállomás el tudja érni ugyanazt a szervert.

CVS-szerver beállítása

A szerver az a gép, amelyen az összes érvényes fájl megtalálható, a fájlok legújabb változatát is beleértve. Bármelyik állandó munkaállomás használható szerverként. Ha lehetséges, akkor a CVS-adattár adatait érdemes belevenni a szokásos biztonsági mentésekbe.

Egy CVS-szerver beállításakor jó ötlet SSH-n keresztüli hozzáférést adni a felhasználóknak a szerverhez. Ha a felhasználó neve a szerveren tux és a CVS szoftver telepítve van a szerveren és a kliensen is, akkor az alábbi környezeti változókat kell beállítani a kliensoldalon:

CVS_RSH=ssh CVS_ROOT=tux@server:/serverdir

A CVS-szerver kliensoldalról a cvs init parancs segítségével inicializálható. Ezt csak egyszer kell végrehajtani.

Végül a szinkronizációhoz hozzá kell rendelni egy nevet. A kliensen válasszon ki vagy hozzon létre egy könyvtárat kizárólagosan a CVS segítségével kezelendő fájlok tárolásához (a könyvtár üres is lehet). A könyvtár neve a szinkronizáció neve is. Ebben a példában a könyvtár neve synchome. Lépjen át ebbe a könyvtárba és adja ki az alábbi parancsot a szinkronizációs név synchome értékre állításához:

cvs import synchome tux wilber

Számos CVS-parancshoz szükség van megjegyzésekre. Erre a célra a CVS elindít egy szerkesztőt (a $EDITOR környezeti változóban megadott szerkesztő, vagy ha nincs megadva, akkor a vi). A szerkesztő meghívása elkerülhető, ha a parancssorban előre megadja a megjegyzést a következő példához hasonló módon:


cvs import -m 'this is a test' synchome tux wilber

A CVS használata

A szinkronizációs adattár most már a cvs co synchome paranccsal az összes gépről kiiktatható. Ez létrehoz egy új synchome alkönyvtárat a kliensen. A módosítások elküldéséhez a szerverre lépjen át a synchome könyvtárba (vagy ennek egyik alkönyvtárába) és adja ki a cvs commit parancsot.

Alapértelmezés szerint az összes fájl átküldésre kerül a szerverre (az alkönyvtárakkal együtt). Egyedi fájlok vagy könyvtárak átküldése a következő módon adható meg: cvs commit fájl1 könyvtár1. Ha új fájlokat és könyvtárakat szeretne hozzáadni az adattárhoz, akkor azokra a szerverre küldés előtt egy ehhez hasonló parancsot kell kiadni: cvs add fájl1 könyvtár1. Ezután az újonnan hozzáadott állományok a cvs commit fájl1 könyvtár1 parancs segítségével átküldhetők.

Ha másik munkaállomásra lép át, akkor iktassa ki a szinkronizációs adattárat, ha ez egy korábbi munkamenetben még nem történt meg ugyanazon a munkaállomáson (lásd fent).

A cvs update parancs segítségével indítsa el a szinkronizálást a szerverrel. Az alábbi módon frissítse az egyedi fájlokat vagy könyvtárakat: cvs update fájl1 könyvtár1. Az aktuális fájlok és a szerveren tároltak közötti különbségek megjelenítéséhez használja a cvs diff vagy cvs diff fájl1 könyvtár1 parancsot. A cvs -nq update parancs segítségével tekintse meg, hogy a frissítés mely fájlokat érinti.

A frissítés során például ilyen állapotszimbólumokkal találkozhat:

U
A helyi verzió frissítésre került. Ez minden, a szerveren meglévő és a helyi rendszeren hiányzó fájlt érint.
M
A helyi verzió módosításra került. Ha voltak módosítások a szerveren, az eltérések a helyi változatban összefésülhetők voltak.
P
A helyi változat kijavításra került a szerveren lévő változattal.
C
A helyi fájl ütközött az adattárban lévő aktuális változattal.
?
A fájl nem létezik a CVS-ben.Az M egy helyileg módosított fájlt jelöl. Küldje el a helyi másolatot a szervernek, vagy távolítsa el a helyi fájlt és futtassa újra a frissítést. Ebben az esetben a hiányzó fájl lekérésre kerül a szerverről. Ha elküld egy helyileg módosított fájlt, amely ugyanabban a sorban módosult és elküldésre került, akkor ütközés léphet fel, amelyet a C jelöl.

Ebben az esetben tekintse meg az összeütközésjeleket a fájlban, és döntsön a két verzió között. Ilyenkor törölje le a helyi fájlokat, és adja ki a cvs up parancsot az aktuális verzió lekéréséhez a szerverről.

További információ

Ez a fejezet csak egy rövid ismertetést tartalmaz a CVS számos lehetőségéről. Részletesebb dokumentációt a következő címeken talál:

http://www.cvshome.org/
http://www.gnu.org/manual/

A subversion program bemutatása

A subversion egy ingyenes nyílt forráskódú verziókövető rendszer, amelyet sok szempontból a CVS utódjának tekintenek. Ez azt jelenti, hogy a CVS-ben már megismert funkciók általában megtalálhatók a subversion szoftverben is. Használata különösen akkor ajánlott, ha ki szeretnénk használni a CVS előnyeit, de hátrányait nem tudjuk elfogadni. A funkciók nagy részének ismertetésével már találkozhatott a következő részben: subversion.

Subversion szerver telepítése

Az adattár adatbázisa viszonylag egyszerűen telepíthető egy szerveren. A subversion programnak erre a célra van egy dedikált adminisztrációs eszköze. Új adattár létrehozására szolgáló parancs:

svnadmin create /adattar/eleresi/utja

A többi lehetőség az svnadmin help paranccsal jeleníthető meg. A CVS-sel ellentétben a subversion nem az RCS-re, hanem a Berkeley adatbázisra épül. Figyeljen rá, hogy ne telepítsen adattárat távoli fájlrendszerekre, például NFS-re, AFS-re vagy Windows SMB-re. Az adatbázishoz szükség van a POSIX zárolási mechanizmusokra, amelyeket ezek a fájlrendszerek nem támogatnak.

Az svnlook parancs tájékoztatást nyújt egy meglévő adattárról.

svnlook info /adattar/eleresi/utja

A szervert úgy kell beállítani, hogy a különböző felhasználók hozzáférhessenek az adattárhoz. Ehhez vagy az Apache webszerver használható WebDAV-val, vagy az svnserve program, ami egy, a a subversionnal együtt szállított szervercsomag. Ha az svnserve elindult és működik, akkor az adattár egy svn:// vagy svn+ssh:// előtaggal kezdődő URL-lel érhető el. Az /etc/svnserve.conf fájlban adhatók meg a felhasználók, akiknek az svn meghívásakor hitelesíteniük kell magukat.

Az Apache vagy svnserve melletti döntés számos tényezőtől függ. Mindenképpen ajánlatos a subversion könyv áttanulmányozása. További információ: További információ.

Használat és működés

Az svn parancs használatával (a cvs-hez hasonlóan) elérhető a subversion adattár. A megfelelő adattárhoz illeszkedő, helyesen beállított szerver által biztosított tartalmakat bármelyik kliensről el lehet érni az alábbi parancsok valamelyikével:

svn list http://svn.example.com/projekt/eleresi/utja

vagy

svn list svn://svn.example.com/projekt/eleresi/utja

Az svn checkout parancs segítségével mentsen el egy meglévő projektet az aktuális könyvtárba:

svn checkout http://svn.example.com/projekt/eleresi/utja projektneve

A kiiktatás a kliensen létrehoz egy új projektneve alkönyvtárat, amihez fájlok adhatók hozzá, illetve amin másolási, átnevezési, törlési műveletek végezhetők:

svn add file
svn copy oldfile newfile
svn move oldfile newfile
svn delete file

Ezek a parancsok könyvtárakra is alkalmazhatók. A subversion egy fájl vagy könyvtár tulajdonságait is rögzítheti:

svn propset license GPL foo.txt

Az előző példa a license tulajdonsághoz beállítja a GPL értéket. Az svn proplist parancs segítségével jelenítse meg a tulajdonságokat:

svn proplist --verbose foo.txt
 Properties on 'foo.txt':
 license : GPL

Az svn commit parancs segítségével mentse el a módosításokat a szerverre. A többi felhasználó is felveheti a változtatásokat a munkakönyvtárba, ha szinkronizálja azt a szerverrel az svn update parancs segítségével.

A CVS-sel ellentétben, a munkakönyvtár állapota a subversion programban anélkül is megjeleníthető, hogy az svn status paranccsal elérnénk az adattárat. A helyi módosítások öt oszlopban jelennek meg, ezek közül az első a legfontosabb:

Nincsenek módosítások.
'A'
Hozzáadásra kijelölt objektum.
'D'
Törlésre kijelölt objektum.
'M'
Módosított objektum.
'C'
Ütköző objektum.
'I'
Figyelmen kívül hagyott objektum.
'?'
A verziókövetés által nem karbantartandó objektum.
'!'
Hiányzóként lejelentett objektum. Ez a jelző akkor jelenik meg, ha az objektum az svn parancs használata nélkül került törlésre vagy áthelyezésre.
'~'
Az objektum fájlként volt fenntartva, de könyvtárra cserélődött, vagy ennek ellenkezője történt.A második oszlop a tulajdonságok állapotát jeleníti meg. A többi oszlop jelentése a subversion könyvben található.

Az svn help parancs segítségével lekérhető a parancs paramétereinek leírása:

svn help proplist
proplist (plist, pl): List all properties on files, dirs, or revisions.
usage: 1. proplist [PATH...]
       2. proplist --revprop -r REV [URL]

  1. Lists versioned props in working copy.
  2. Lists unversioned remote props on repos revision.
  ...

További információ

Hasznos információkat tartalmaz a subversion projekt kezdőoldala: http://subversion.tigris.org/. Ajánlott továbbá, a subversion-doc csomag telepítése után a file:///usr/share/doc/packages/subversion/html/book.html könyvtárban található dokumentáció tanulmányozása, amely online módon is elérhető a http://svnbook.red-bean.com/svnbook/index.html címen.

Az rsync bemutatása

Az rsync akkor hasznos, ha rendszeresen nagy mennyiségű, de kismértékben módosított adatot kell átvinni egyik helyről a másikra, ilyen például a biztonsági mentések létrehozása. Egy másik lehetséges alkalmazási mód az állomásoztató szerverek. Ezek olyan szerverek, amelyek tárolják a webszerverek teljes könyvtárstruktúráját, és időnként tükrözésre kerülnek a DMZ egy webszerverére.

Beállítás és működés

Az rsync két különböző módban tud működni. Az adatok archiválására és másolására is használható. Ennek végrehajtásához a célrendszeren csak egy távoli parancsértelmezőre van szükség (például ssh-ra). Az rsync démonként is használható, hálózati könyvtárak biztosítására.

Az rsync alapvető működési módja nem igényel speciális beállításokat. Az rsync használatával teljes könyvtárak másolhatók át egy másik rendszerre. Az alábbi parancs például létrehozza a tux saját könyvtárának másolatát a sun mentési szerveren:

 rsync -baz -e ssh /home/tux/ tux@sun:backup
 

Az alábbi parancs visszaállítja a könyvtárat:

 rsync -az -e ssh tux@sun:backup /home/tux/
 

Eddig a pontig a kezelés nem különbözik lényegesen egy hagyományos mentőeszközétől, mint amilyen például az scp.

Az összes funkció eléréséhez az rsync-et »rsync« módban kell futtatni. Ez az rsyncd démon egyik rendszeren való elindításával hatjható végre. Állítsa be ezt az /etc/rsyncd.conf fájlban. Ahhoz például, hogy a /srv/ftp könyvtár rsync segítségével elérhető legyen, használja az alábbi konfigurációt:

gid = nobody
uid = nobody
read only = true
use chroot = no
transfer logging = true
log format = %h %o %f %l %b
log file = /var/log/rsyncd.log

[FTP]
        path = /srv/ftp
        comment = Egy példa
 

Majd az rcrsyncd start parancs segítségével indítsa el az rsyncd-t. Az rsyncd a rendszerindítási folyamat során automatikusan is elindítható. Ez kétféleképpen állítható be: ha aktiváljuk a szolgáltatást a YaST futásiszint-szerkesztőjében, vagy ha kézzel beírjuk az insserv rsyncd parancsot. Az rsyncd az xinetd segítségével is elindítható. Ez azonban csak olyan szervereken ajánlott, ahol ritkán kell használni az rsyncd eszközt.

A példa egy naplófájlt is készít, amely felsorolja az összes kapcsolatot. Ezek az adatok a /var/log/rsyncd.log fájlban kerülnek tárolásra.

Ezután tesztelhető az átvitel egy kliensrendszerből. Ennek végrehajtásához adja meg a következő parancsot:

rsync -avz sun::FTP 

Ezzel kilistázhatók a szerver /srv/ftp könyvtárában lévő fájlok. Ez a kérés szintén bekerül a /var/log/rsyncd.log naplófájlba. Egy tényleges átvitel elindításához adjon meg egy célkönyvtárat. Az aktuális könyvtár megnevezése a .. Például:

rsync -avz sun::FTP .
 

Alapértelmezés szerint az rsync-kel való szinkronizálás során nem kerülnek törlésre fájlok. Ha mégis erre volna szükség, akkor meg kell adni egy kiegészítő --delete paramétert is. Annak biztosításához, hogy az újabb fájlok ne kerülhessenek törlésre, a --update paraméter használható. Minden felmerülő ütközést kézzel kell feloldani.

További információ

Az rsync legfontosabb jellemzőinek leírása a man rsync és man rsyncd.conf kézikönyvoldalakon (man) olvasható. Az rsync működési alapelveivel kapcsolatban technikai referenciaadatokat tartalmaz az /usr/share/doc/packages/rsync/tech_report.ps fájl. Az rsync-kel kapcsolatos legfrissebb információkat a http://rsync.samba.org/ címen található oldalon találja meg.

A mailsync bemutatása

A mailsync elsősorban az alábbi három feladatra alkalmas:
  • A helyileg tárolt e-mail üzenetek szinkronizálása a szerveren tárolt levelekkel
  • Postafiókok átállítása egy másik formátumra vagy másik szerverre
  • A postafiókok integritásának ellenőrzése vagy többször szereplő példányok keresése

Beállítás és használat

A mailsync különbséget tesz a postafiók (a tároló) és a két postafiók közötti kapcsolat (a csatorna) között. A tárolók és csatornák definíciói a ~/.mailsync fájlban találhatók. Az alábbiakban bemutatunk néhány példát a tárolókra.Egy egyszerű definíció a következőképpen nézhet ki:

store saved-messages {
   pat Mail/saved-messages
prefix  Mail/
}

A Mail/ a felhasználó saját könyvtárában levő alkönyvtár, amely az e-mail mappákat tartalmazza, a saved-messages mappát is beleértve. Ha a mailsync a mailsync -m saved-messages parancs segítségével került elindításra, akkor kilistázza a saved-messages mappában lévő üzenetek indexét. Ha a definíció az alábbi volt:

store localdir {
pat     Mail/*
prefix  Mail/
}

akkor a mailsync -m localdir a Mail/ alkönyvtárban tárolt összes üzenetet megjeleníti. Ezzel ellentétben a mailsync localdir parancs a mappaneveket jeleníti meg. Egy IMAP-szerveren lévő tároló specifikációja a következőképpen néz ki:

store imapinbox {
server {mail.edu.harvard.com/user=gulliver}
ref    {mail.edu.harvard.com}
pat    INBOX
}

A fenti példa csak az IMAP-szerver fő mappáját címzi meg. Az almappák tárolója az alábbi módon nézne ki:

store imapdir {
server {mail.edu.harvard.com/user=gulliver}
ref {mail.edu.harvard.com}
pat INBOX.*
prefix  INBOX.
}

Ha az IMAP-szerver támogatja a titkosított kapcsolatokat, akkor a szerverspecifikációt a következőképpen érdemes módosítani:

server {mail.edu.harvard.com/ssl/user=gulliver}

vagy, ha a szervertanúsítvány nem ismert, akkor a következőképpen:

server {mail.edu.harvard.com/ssl/novalidate-cert/user=gulliver}

Ezt az előtagot a későbbiekben tárgyaljuk.

Ezután a Mail/ könyvtár alatt lévő mappákat csatlakoztatni kell az IMAP-szerveren lévő alkönyvtárakhoz:

channel folder localdir imapdir {
msinfo .mailsync.info
}

A mailsync az msinfo fájlt használja a már szinkronizált üzenetek nyomonkövetéséhez.

A mailsync folder parancs a következőket csinálja:

  • Mindkét oldalon kiterjeszti a postafiók-mintát.
  • Kiveszi az előtagot az eredményül kapott mappanevekből.
  • Párokban szinkronizálja a mappákat (vagy ha nem léteznek, létrehozza ezeket).

Az IMAP-szerveren lévő INBOX.sent-mail mappa szinkronizálásra kerül a Mail/sent-mail helyi mappával (feltéve hogy a fent bemutatott definíciók léteznek). Az egyedi mappák közötti szinkronizáció az alábbi módon kerül végrehajtásra:

  • Ha az üzenet már mindkét oldalon létezik, akkor nincs adatcsere.
  • Ha az üzenet az egyik oldalon hiányzik és új (nem szerepel az msinfo fájlban), akkor itt átadásra kerül.
  • Ha az üzenet csak az egyik oldalon létezik és régi (már szerepel az msinfo fájlban), akkor itt törlésre kerül (mivel az üzenet, amely nyilvánvalóan létezett a másik oldalon, törlésre került).

Ha előre tudni szeretné, hogy a szinkronizáció során mely üzenetek fognak átvitelre és melyek törlésre kerülni, indítsa el a mailsync-et egy csatornával és egy tárolóval a mailsync folder localdir paranccsal. Ez a parancs elkészíti azoknak az üzeneteknek a listáját, amelyek újak a helyi gépen, és azokét, amelyek a szinkronizálás alatt az IMAP-oldalon törlésre kerülhetnek. Ehhez hasonlóan a mailsync folder imapdir parancs listát készít az IMAP-oldalon új üzenetekről, és azokról, amelyek a szinkronizálás alkalmával a helyi gépen kerülnek törlésre.

Lehetséges problémák

Adatvesztés esetén a legbiztonságosabb módszer a megfelelő csatornanaplófájl – msinfo – törlése. Ennek következményeképpen a csak az egyik oldalon létező üzenetek újként jelennek meg, és a következő szinkronizálás során átadásra kerülnek.

Csak az üzenetazonosítóval rendelkező üzenetek kerülnek bele a szinkronizálásba. Az üzenetazonosítóval nem rendelkező üzeneteket a rendszer egyszerűen figyelmen kívül hagyja, ami azt jelenti, hogy ezek nem kerülnek továbbításra, de nem is törlődnek. A hiányzó üzenetazonosítót általában sérült programok okozzák egy üzenet küldésekor vagy írásakor.

Bizonyos IMAP-szervereken a fő mappa INBOX néven, az almappák pedig véletlenszerűen kiválasztott névvel kerülnek címzésre (az INBOX és INBOX.name fájllal ellentétben). Ilyen IMAP-szerverek esetén nem lehet kizárólag az almappákhoz mintát megadni.

Az üzenetek IMAP-szerverre való sikeres átvitele után a mailsync által használt postafiók-illesztőprogramok (c-client) beállítanak egy speciális állapotjelzőt. Emiatt néhány e-mail program (például a mutt) nem tudja újként felismerni ezeket az üzeneteket. A -n kapcsoló segítségével tiltsa le ezt a speciális állapotjelzőt.

További információ

Az /usr/share/doc/packages/mailsync/ könyvtárban lévő README fájl (a mailsync része) további információt biztosít. Ezzel kapcsolatban az RFC 2076 »Common Internet Message Headers« szabvány külön figyelmet érdemel.