2013-09-26 7 views
27

Używam rsync do synchronizacji plików ze źródła do miejsca przeznaczenia:Prevent rsync z usunięciem pliki docelowe, które pasują do podanego wzorca

rsync -av --delete source destination 

mam jeden katalog na stronie docelowej, która nie znajduje się na strona źródłowa. Chciałbym uniemożliwić rsync usunięcie tego katalogu. Czy istnieje opcja, którą mogę przekazać do rsync, aby zapobiec usunięciu tego katalogu podczas synchronizacji?

Odpowiedz

34

Można wykluczyć pliki/katalogi za pomocą --exclude. Zapobiegnie to katalog somedir z synchronizowanych/usunięte:

rsync -avrc --delete --exclude somedir source destination 
+5

Jeśli chcesz wykluczyć 'somedir' z tylko jednej określonej lokalizacji w drzewie katalogów, możesz zakotwiczyć wykluczenie za pomocą"/". Poprawi to wydajność - rsync będzie musiał tylko raz sprawdzić ścieżkę! na przykład. 'rsync -avrc --delete --exclude/path/p2/somedir source destination'' –

+0

@RandySkretka - dzięki za tą wskazówkę. Tego właśnie mi brakowało. – Corin

+1

'-r' jest implikowane przez' -a' i nie jest wymagane. –

21

Jak wspomniano w similar question, można to osiągnąć za pomocą opcji --filter z protect zasady:

$ rsync ... --filter 'protect /remote-directory-to-keep/' ... 

odróżnieniu od obecnie przyjętego odpowiedź , przy użyciu --filter jest przydatna, na przykład, jeśli chcesz również użyć --exclude z --delete-excluded.

Powiązane problemy