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:
Anda menginginkan
--exclude
benderanya. Misalnya, rsync lokal: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
sumber
a/cache
. UPD Lihat jawaban ini--exclude /cache/
(dengan yang terdepan /) hanya akan mengecualikana/cache
direktori, bukan direktori yang bernamacache
.a/ b/
di baris perintah di atas, apa artinya?a/
adalah direktori tempat kami menyinkronkan (atau menyalin);b/
adalah direktori yang sedang disinkronkan.