rsync patterns - jak zalohovat jen vybranme adresare? - SOLVED

OldFrog oldfrog na volny.cz
Sobota Prosinec 17 19:21:45 CET 2005


 > Jak zalohovat v danem rsync modulu jen vybrane
 > adresare a ostatni vynechat?

Resenim je pridat postupne cestu az do te urovne,
na ktere si budeme chtit jednotlive polozky
vybirat a teprve pak  je pridat, nakonec pausalne
odebrat vse. Zalezi tedy na poradi cili na tom,
ktera cast hiearchie je v okamzik vyberu dostupna.


Priklad:

rsync \
   -a \
   --verbose \
   --progress \
   --stats \
   --filter='+ /aa/'     \
   --filter='+ /aa/a**'  \
   --filter='+ /aa/b**'  \
   --filter='+ /bb/'     \
   --filter='+ /bb/**'   \
   --filter='- /**'      \
   src/ trg/;

Zahrne do vyberu adresar /aa/ a polozky uvnitr /aa/ zacinajici
znakem 'a' bez ohledu na to, zda to je adresar ci soubor. Dale
zahrne cely adresar /bb/ vcetne uplneho obsahu.

Pokud bychom chteli zahrnout v adresari /aa/ pouze _adresare_
zacinajici znakem 'a', postupovali bychom takto:

   --filter='+ /aa/'       \
   --filter='+ /aa/*/'     \
   --filter='+ /aa/a/**'   \
   --filter='+ /aa/b/**'   \
   --filter='- /**'        \

V tom pripade by se sice pridal i adresar /aa/c/ ale nikoli
uz jeho obsah. Soubor /aa/ahoj by se - narozdil od prvniho
pripadu - nezahrnul.

Nafunguje vyber pomoci

   --filter='+ /aa/**'  \
   --filter='- /**'  \

protoze cesta /aa/ neni dostupna, neprovede se tedy
zadny pozitivni vyber. Posledni pravidlo se uplatni
na tu cast cesty, ktera nebyla matchnuta drive, tedy se
v danem pripade odebere uplne vse. Vysledkem je nulovy
vyber, neprida se ani adresar /aa/ .

Misto opakovaneho --filter= lze take pouzit

   --filter='. /path/to/rsync-pattern.txt'

Vse je celkem podrobne vysvetleno v man strance, ale
chvili trva, nez to cloveku dojde, jak vidite.

Priklady jsem testoval na rsync version 2.6.6.

Poslusny rsync preje
OldFrog.

-- 
------------------------------
Ondrej Nemecek alias 'OldFrog'
------------------------------


Další informace o konferenci Linux