2009-07-15 11 views
12

Mam katalog zawierający pliki i katalogi. Chciałbym zrobić kopię rsync kilku folderów z tego katalogu. Na przykład, powiedzmy, że mam to:rsync do kopiowania tylko określonych folderów

/home/user 
-- drwxr-xr-x folderA 
-- drwxr-xr-x folderB 
-- drwxr-xr-x folderC 
-- -rw-r--r-- file.1 
-- -rw-r--r-- file.2 

Chcę skopiować folderA i folerB pomocą rsync. Stworzyłem plik rsync_folders.txt

+ /folderA/** 
+ /folderB/** 

Moim problemem jest to, że rsync zawsze skopiować pliku, chyba że pasuje wyklucza wzór. Ale jeśli dodaję nic nie jest kopiowane, ponieważ rsync najpierw dopasowuje się do wykluczonych wzorców.

Wszelkie pomysły?

Uwaga: Nie mogę wyświetlić wszystkich folderów i plików, które chcę wykluczyć. Będzie się zmieniać od czasu do czasu.

+1

Na czym polega problem z programem rsync --recursive folderA folderB folderC destination? – p00ya

+0

Bez problemu. Niech to będzie odpowiedź, a ja ją zaakceptuję :). –

+0

Zauważ, że w najnowszych wersjach rsync/*** robi to, co chcesz ... –

Odpowiedz

14

Użyj albo rsync -av src1 src2 src3 ... dst albo umieść wszystkie foldery, które chcesz, aby rsync w pliku tekstowym (każdy folder w osobnym wierszu) i użyj rsync -arv --files-from=sources.txt dst.
Należy zauważyć, że domyślnie -a implikuje --recursive, ale nie wtedy, gdy jest używany --files-from, więc w tym przypadku musi być określony jawnie -r.

+0

Umieszczenie wszystkich folderów w pliku testowym nie działa dla mnie, ponieważ używam już kilku reguł wykluczania i dołączania. rsync src1 src2 src3 działa dla mnie. –

+0

@http: //stackoverflow.com/users/4052/georgy-bolyuba ... Napisałem scenariusz. Upraszczając znacznie, stworzyłem jedną funkcję do wykonania samego polecenia 'rsync' i przekazałem:' scr' i 'dst' foldery, które wywołuję, gdy skrypt" argument "spełnia wymagania _rules_. – will

Powiązane problemy