Ekstra dosyaları dest dir rsync ile silinsin mi?


51

Benim dediğimi söyle

SRC 
  001.jpg
  002.jpg
  001.txt
  a.zip

DEST
  hello.jpg

rsync -d --delete SRC:{*.jpg,*.txt} DEST

Hello.jpg 'yi DEST'ten kaldırmıyor, bunun nasıl arşivleneceği hakkında bir fikriniz var mı?

Yanıtlar:


72

Komutunuzun çalışmamasının nedeni, rsync kullanım kılavuzunda açıklanmaktadır (vurgu eklenmiştir):

--delete

Bu, rsync'e harici dosyaları alıcı taraftan (gönderen tarafta olmayanlar) silmelerini, ancak yalnızca senkronize edilen dizinler için bildirmelerini sağlar. Jokerin kabuk tarafından genişletildiğinden ve rsync tarafından alındığından, rsync'den tüm dizini (ör. "Dir" veya "dir /") direktörün içeriği için bir joker karakter kullanmadan göndermesini istemeniz gerekir. Bireysel dosyaları aktarma isteği, dosyaların üst dizinine değil --Delete-exclude seçeneğini kullanmadığınız veya kuralları yalnızca gönderen taraftaki eşleşme olarak işaretlemediğiniz sürece, aktarımın dışında bırakılan dosyalar da silinmez. (FİLTRE KURALLARI bölümünde değiştiricileri dahil etme / hariç tutma bölümüne bakın).

Böylece, koşarken

$ rsync -d --delete SRC:{*.jpg,*.txt} DEST

DEST'teki istenmeyen dosyalar silinmiyor çünkü aslında bir dizinin senkronize edilmesini istemediniz, fakat sadece bir avuç belirli dosya için. İstediğiniz sonuçları elde etmek için, şunun gibi bir şey deneyin:

rsync -d --delete-excluded --include '*.jpg' --include '*.txt' --exclude '*' SRC/ DEST/

İçerdiği emirlerin direktifleri içerdiği ve hariç tuttuğunu unutmayın. Temel olarak, her dosya göründükleri sırayla desenleri dahil etme veya hariç tutma ile kontrol edilir. Bu nedenle, .jpg veya .txt uzantılı dosyalar, dışlanan "*" modeliyle eşleşmeden önce "dahil edilen" modellerle eşleştiğinden senkronize edilir. Diğer her şey --exclude '*'model tarafından dışlanır . Bu --delete-excludedseçenek, DEST tarafındaki dışlanan dosyaların bile silinmesini sağlar.


@ Cheng, biraz daha açıklamak ister misiniz? Bir sorun / gelişme olursa cevabımı güncellemek için mutlu olurum.
Steven D

İşe yarıyor. Sanırım. - Süreç işleri kafamı karıştırıyor, tekrar aktarıldığını düşündürüyor.
Cheng

Cevabımı biraz daha açıklamak için düzenlemiştim.
Steven D

2
@ Cheng: İstemediğinizden şüpheleniyorum --delete-excluded. Onsuz, sadece *.jpgve *.txthedef tarafta silinebilir. Bununla beraber, ilgisiz dosyalar da silinir. Rsync filtreleri hakkında bu eğitimde ilginizi çekebilir .
Gilles 'SO- kötülük'

3
Teşekkürler! Benim için kaynak dizindeki sondaki kesiklik eksikti.
vaughan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.