Saya pikir --include
digunakan untuk menyertakan subset file yang dikecualikan oleh --exclude
, daripada hanya menyertakan file-file itu. Dengan kata lain: Anda harus memikirkan tentang memasukkan makna, jangan mengecualikan .
Coba saja:
rsync -zarv --include "*/" --exclude="*" --include="*.sh" "$from" "$to"
Untuk rsync versi 3.0.6 atau lebih tinggi, urutan perlu dimodifikasi sebagai berikut (lihat komentar):
rsync -zarv --include="*/" --include="*.sh" --exclude="*" "$from" "$to"
Menambahkan -m
bendera akan menghindari pembuatan struktur direktori kosong di tujuan. Diuji dalam versi 3.1.2.
Jadi jika kita hanya ingin file * .sh kita harus mengecualikan semua file --exclude="*"
, termasuk semua direktori --include="*/"
dan menyertakan semua file * .sh --include="*.sh"
.
Anda dapat menemukan beberapa contoh bagus di bagian Sertakan / Kecualikan Aturan Pola di halaman manual