Soru rsync ve include / exclude. Ne kadar zor olabilir?


Ben sadece html dosyalarını tutarak, bir dizin / dosya yapısını bir dizinden diğerine kopyalamaya çalışıyorum. İçermeli / içermemelidir basit bir durumda olmalı?

İlk önce dosyaları yazdırmak istiyorum. Bunu doğru yaptığımda onları kopyalarım.

rsync -a --list-only -v SOURCEDIR --exclude='.*' --include='**/*.html' 

Bana tüm dosyaları veriyor.

rsync -a --list-only -v SOURCEDIR --include='**/*.html' --exclude='*' 

ve

rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*' 
rsync -a --list-only -v SOURCEDIR --include=*.html --exclude=*

Bana dosya ver.

rsync -a --list-only -v SOURCEDIR --include='*.html' --exclude='*.*'

Bana tüm dizin yapısı ve sadece html dosyaları verir gibi görünüyor. Ama boş dizinler istemiyorum.

Yardım et!

Mac OS 10.6'da


6
2017-07-01 17:48


Menşei




Cevaplar:


Zor işini yapmak için bulmayı kullanmayı düşündün mü?

Çizgileri boyunca bir şey

find ./ -name "*.html" -exec rsync -R {} /target/base/directory/ \; 

html dosyalarının bulunduğu ./ dizin dizinini yeniden oluşturacak ve / target / base / directory altında aynı şeyi oluşturacaktır.


0
2017-07-01 20:24





Rsync, bunun gibi seçici kopyalar hakkında kafa karıştırıcı olabilir. İstediğiniz görevi yapmak için aşağıdakileri kullanıyorum:

rsync -avP \
--filter='+ */' \
--filter='+ **/*.html' \
--filter='- *' \
--prune-empty-dirs \
--delete \
/source/ \
/dest/

Temel olarak, tüm dizinleri aramaya dahil etmeniz ve ardından tümünü eklemeniz gerekir. *.html dosyaları listeye, diğer tüm dosyaları dışlayın.

--prune-empty-dirs seçeneği olmayan bir dizini hariç tutması için kullanışlıdır *.html dosya.


11
2017-07-01 20:22





Bunu yapmanın en iyi [0] yolu olduğundan% 100 emin değilim, ancak son denemenize çok hafif bir ince ayar ekleyebilir ve çalışmasını sağlayabilirsiniz. Sadece ekle kuru erik dizinleri seçenek (--prune or -m).

rsync -am --list-only -v SOURCEDIR --include='*.html' --exclude='*.*'

[0] 'En iyi' olarak, en temiz ve en verimli yolu kastediyorum. Bunu ifade etmenin daha zarif bir yolu olmalı gibi görünüyor, ama ne olduğunu bilmiyorum.


0
2017-07-01 19:21



Eklemeyi unuttun. - Dennis Williamson
Hayır, yapmadım. O başlangıçta, 'rsync -am'. '-A' ile '-a' birleştirdim. - Christopher Cashell