RSync - Tidak termasuk subdirektori tertentu dan anak-anaknya di mana subdirektori ada di level yang berbeda


37

Gak,

Saya menggunakan rsync untuk secara sinkron menyinkronkan pohon folder jarak jauh yang terlihat seperti berikut:

/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

Saya tidak tahu seperti apa struktur folder dan akan berubah seiring waktu. Jadi yang ingin saya lakukan adalah melakukan rsync secara rekursif di atas tetapi mengecualikan folder "cache" dan setiap sub folder yang dikandungnya sehingga saya akhirnya menyinkronkan:

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

Ada saran?


Jawaban:


55

Anda menginginkan --excludebenderanya. Misalnya, rsync lokal:

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

Sesederhana itu - aturan mengecualikan akan cocok dengan direktori bernama "cache" di mana saja di pohon Anda.

Untuk informasi lebih lanjut, lihat bagian "--exclude" dan "ATURAN FILTER" pada halaman manual rsync:

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


1
Doh !!. Terima kasih itu adalah jawaban sederhana yang paling saya sukai :-)
TheEdge

1
Bagaimana kalau tidak di mana saja di pohon? Seperti, hanya mengecualikan a/cache. UPD Lihat jawaban ini
x-yuri

2
Juga --exclude /cache/(dengan yang terdepan /) hanya akan mengecualikan a/cachedirektori, bukan direktori yang bernama cache.
Amir Ali Akbari

Mengapa a/ b/di baris perintah di atas, apa artinya?
Danijel

1
@Danijel: a/adalah direktori tempat kami menyinkronkan (atau menyalin); b/adalah direktori yang sedang disinkronkan.
Jander
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.