Saya pikir --includedigunakan 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 -mbendera 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