2013-09-26 21 views
27
Bir hedefe bir kaynaktan dosyaları senkronize etmek rsync kullanıyorum

: önle rsync

rsync -av --delete source destination 

ben değil, hedef tarafında tek bir dizin var kaynak taraf Rsync'in bu dizini silmesini engellemek istiyorum. Bu dizinin senkronizasyon sonrasında silinmesini önlemek için rsync'e geçebileceğim bir seçenek var mı?

cevap

34

Dosyaları/dizinleri --exclude ile hariç tutabilirsiniz. Şu anda kabul edilen yanıt aksine

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

:

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

Eğer 'somedir' dizin ağacındaki sadece belirli bir konumdan çıkarmak isterseniz, dışarda tutmayı bir "/" ile sabitleyebilirsiniz. Bu, performansı artıracak - rsync sadece yolu bir kez kontrol etmek zorunda kalacak! Örneğin. rsync -avrc --delete --exclude/yol/p2/somedir kaynak hedef ' –

+0

@RandySkretka - bu ipucu için teşekkürler. Bu benim eksik olduğum şey. – Corin

+1

'-r',' -a' tarafından belirtilmiştir ve zorunlu değildir. –

21

bir similar question belirtildiği gibi, bu protect kuralıyla --filter seçeneği kullanılarak yapılabilir: Bu silinen senkronize edilmesini somedir dizini/önleyecektir --filter kullanarak, --exclude'u --delete-excluded ile kullanmak isterseniz, kullanışlıdır.