G'Day,
Korzystam z rsync do rekurencyjnej synchronizacji zdalnego drzewa folderów, które wygląda mniej więcej tak:
/folderA/a1/cache
/folderA/a1/cache/A1
/folderA/a1/cache/A2
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder/cache
/folderB/cache/
/folderB/b1/somefolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache/B1
/folderB/b1/somefolder/yetanotherfolder/cache/B2
Nie wiem, jak będzie wyglądać drzewo folderów, które z czasem się zmieni. Chcę więc rekursywnie zsynchronizować powyższe, ale wykluczę folder „cache” i wszystkie zawarte w nim podfoldery, aby ostatecznie zakończyć synchronizację:
/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/
Jakieś sugestie?
Odpowiedzi:
Chcesz
--exclude
flagę. Na przykład lokalny rsync:To naprawdę takie proste - reguła wykluczania będzie pasować do katalogu o nazwie „pamięć podręczna” w dowolnym miejscu w drzewie.
Aby uzyskać więcej informacji, poszukaj „--exclude” i sekcji „FILTER RULES” na stronie man rsync:
http://www.samba.org/ftp/rsync/rsync.html
źródło
a/cache
. UPD Zobacz tę odpowiedź--exclude /cache/
(z wiodącym /) wyklucza tylkoa/cache
katalog, a nie katalog o nazwiecache
.a/ b/
w powyższej linii poleceń co to oznacza?a/
to katalog, z którego synchronizujemy (lub kopiujemy);b/
to katalog, do którego synchronizujemy.