RSync - Belirli bir alt dizini ve alt dizinin farklı düzeylerde bulunduğu çocukları hariç


36

İyi günler,

Aşağıdaki gibi bir şey görünen uzaktaki bir klasör ağacını özyinelemeli olarak senkronize etmek için rsync kullanıyorum:

/folderA/a1/cache
/folderA/a1/cache/A1
/folderA/a1/cache/A2
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder/cache
/folderB/cache/
/folderB/b1/somefolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache/B1
/folderB/b1/somefolder/yetanotherfolder/cache/B2

Klasör ağacının nasıl görüneceğini bilmiyorum ve zamanla değişecek. Yani yapabilmek istediğim tekrarlı bir şekilde yukarıdakileri rsync yapmak ama "önbellek" klasörünü ve içerdiği herhangi bir alt klasörü dışlamak , böylece nihayetinde senkronize etmem gerekiyor:

/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/

Baska öneri?


Yanıtlar:


53

--excludeBayrağı istiyorsun . Örneğin, yerel bir rsync:

rsync -a --exclude cache/ src_folder/ target_folder/

Gerçekten bu kadar basit - dışlama kuralı, ağacınızın herhangi bir yerinde "önbellek" adlı bir dizinle eşleşecek.

Daha fazla bilgi için, rsync man sayfasındaki "--exclude" ve "FILTER RULES" bölümüne bakın:

http://www.samba.org/ftp/rsync/rsync.html


1
Doh !!. Teşekkürler en sevdiğim basit cevaplar :-)
TheEdge

1
Ağacın hiçbir yerinde yok mu? Gibi, sadece hariç a/cache. UPD Bu cevabı
x-yuri

2
Ayrıca --exclude /cache/(baştaki / ile birlikte) yalnızca a/cachedizini dışlar , adında bir dizin olmaz cache.
Amir Ali Akbari

Neden a/ b/yukarıdaki komut satırında, bu ne anlama geliyor?
Danijel

1
@Danijel: Eşitlediğimiz a/(veya kopyaladığımız) dizin; b/Senkronize ettiğimiz dizin.
Jander
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.