rsync megértése

Fórumok

Hali!

Nézegetem az rsync-et, de nem tudom, hogy pontosan mit is csinál. Rendesen belekavarodtam.

Leírom, hogy mire keresek megoldást:
Egy emberkének van cucca pl. külföldön és Pesten is.
Mindkét helyen van szerver, ahonnan (LAN-on) gyorsan el tudná érni a dolgait, de a szerverek közötti kommunikáció (WAN) lassú.
Arra gondoltam, hogy a szerverek esténként szinkronizálhatnák a dolgait, amikor senki sem használja.
Mindkét helyen módosítgatja a dolgait és mindig máshol.

Meg lehet oldani az rsync-el ezt? Valahogy furcsa, hogy az rsync-nél csak egy irányban lehet dolgozni (source/target -et kell beállítani).
Remélem érthető voltam. :)

Valakinek valami ötlete?
Remélem nem nagy hülyeség a kérdés.

Az rsync-nek van kétirányú verziója is?

Hozzászólások

A kérdés nem hülyeség, a válasz: nem. A kérdés utáni "magyarázkodás", na, az tényleg "hülyeség", mert az rsync tükrözésre való (anno engem is megzavart a neve), neked pedig szinkronizálni kéne. Ha nem tudod, mi a különbség, akkor gondolkozz el ezen a kérdésen (ami a szinkronizálás lényege): ha egy file csak az 1-es szerveren van rajta, akkor azt a 2-esre fel kell másolni vagy az 1-esről is törölni kell?

A problémádra megoldást adhat pl. a Novell-féle iFolder, bár még én sem vettem rá a fáradságot, hogy kipróbáljam...

Kösz a segítséget, épp ez volt az, ami nem volt teljesen tiszta.
A kétirányban működő rsync -re a google-ban bukkantam rá. A http://lists.samba.org/archive/rsync/2002-October/003825.html oldalon.
Gondolom a szinkronizálás is összehasonlítások, másolások törlések, stb. sorozatából születik.Ha így van, akkor egy algoritmussal meg lehetne oldani.Nem?

Én rsynckel oldottam meg és működik.
Van egy "server" gép (rsync szerver) és "client" gép (rsync kliens).
"server" gépen "shared" rsync megosztás (/mnt/shared).
"client" gépen /mnt/shared könyvtár.

"client" gépen az alábbi kétsoros script fut le:
rsync -azru /mnt/shared server::shared
rsync -azru server::shared /mnt/shared

Nálam így jó.

"Ha használod a --delete kapcsolót is a fent említett két sorban, vajh mi lesz az eredmény?"

torli a serverrol a felesleget...

Amugy ertem mire gondolsz es 4 megoldast latok igy hirtelen:

--1--
Onnan indulunk ki, hogy az "egyik" helyen van az adat, a "masik" helyen semmi, hivjuk az "egyik"-et servernek, a "masik"-at clientnek es kossuk ki, hogy egyszerre mindig csak az egyik helyen dolgozik az adatokkal.
Amikor megerkezik a client helyre lefuttat egy ilyet:

      rsync --delete  server->client

ekkor a client hely naprakesz. Mikor vegzett, lefuttat egy ilyet:

      rsync --delete client->server

ekkor a server naprakesz.

--2--
Ha maceras, h a munkamenet elejen ki kell varni egy esetleg hosszabb folyamatot, meg lehet oldani igy is:

Elso hasznalat elott, es mindig, mikor a server helyen vegzett a munkaval, (ott, a server helyen) futtat egy:

      rsync --delete  server->client

Client helyen vegzett a munkaval, (ott, a client helyen) futtat egy:

      rsync --delete client->server

--3--
Unison

--4--
Valamilyen network filesystem.

Hat en is keresek valami megoldast ket szerveren egy adott konyvtar szinkronban tartasahoz. Igaz nalam egyik helyen irjak/olvassak, masik helyen csak olvassak, de nalam az kell, hogy amit felirtak _egybol_ olvashato legyen a masikon. igy rsync nemjo...
drbd-t probaltam, de ott meg csak akkor tudta a masik olvasni, ha az elso "leszallt" rola. :(

--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

Erre talaltak ki a CODA-t.
---------------------
Ригидус а бетегадьбол

unison
en 4 eve hasznalom szinkronizalasra, windows/linux kozott is
tobbnyire ssh keresztul, de gyakran hasznalom usb drive-on source cippelesre is

amugy az unison is az rsync patchelest hasznalja

Egy korábban lementett rendszer rootját húznám át "A" gépről "B" gépre. A lementett rendszer egy "C" gépről való.
A problémám az, hogy pl. /var/run/mysql uid:gid forrásgépben még 104, de "B" gépre áthúzva már 70.
Mivel "C" root szerkezét "A" gépről érem el (ott van lebackupolva), az uid:gid megfelelőjét "A" gépről veszi, ahol a 104-es uid avahi. Áthozza "B" gépre ott meg avahi 70-es uiddal fut, így rsync a fájl uidját 70-re írja át.

Többször belefutottam már ebbe a problémába.
Hogyan lehetne megmondani az rsyncnek, hogy ne írja át az user-group ID-t?

Amivel próbálkoztam:
rsync -va forrás cél # általában ezt használom
rsync -vazog # google dobta ki, de az eredmény változatlan

Ez nem rsync probléma.
Átmásolás előtt:
*
/etc/init.d/mysqld stop
Átmásolás után:
chown -c -R mysql /var/lib/mysql
chgrp -c -R mysql /var/lib/mysql
/etc/init.d/mysqld start
*
Ha nem csak a mysql adatbázist másoltad, hanem a teljes rendszert, akkor a rendszer indítása után hajtsd végre a fent leírtakat, a két csillag közötti részt.
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba és kész!

Mysql csak egy példa volt. Sajnos bármelyik fájlnál előjöhet ahol rsync egyezést talál a másolandó és a futó rendszer között. Userek, daemonok fájljainál is megvan ez a jelenség. Most nem tesztelem már le, de anno azt hiszem megnéztem, hogyha a másolandó fájl uid:gid-je nincs benne a futó rendszerben, tehát nem tudja valós UNIX usernévhez társítani, akkor nem bántja.

Nem értem, nálam nem akarja az igazságot.

rsync --no-o --no-g -va domain.hu:/mnt/forrás /mnt/cél/

Forrás helyen:
drwxr-xr-x 5 104 107 4096 2010-06-23 03:48 mysql

Cél helyen:
drwxr-xr-x 5 70 107 4096 jún 23 03.48 mysql

szerk: 2 irányból is próbáltam, tehát A-ról B-re, B-ről A-ra, de ugyanaz.
szerk2: elnézést, azt hittem updateli a jogokat, de nem. Le kell törölnöm célhelyen (példánál maradva) a mysql mappát.

Ekkor ez lesz:
drwxr-xr-x 5 0 0 4096 jún 23 03.48 mysql

Tehát át sem hozza az uid:gid -et. Sajnos szintén nem szerencsés megoldás.

szerk3:
A megoldás: rsync --numeric-ids -va

Melynek eredményeképp: drwxr-xr-x 5 104 107 4096 jún 23 03.48 mysql

Azért köszönöm a segítséget, hogy foglalkoztatok a problémámmal.