rsync: Bagaimana cara mengecualikan Dotfiles hanya di direktori paling atas?

8

Saat melakukan pencadangan di bawah Bash dengan rsync, saya mencoba untuk mengecualikan semua dotfile dan direktori tersembunyi di direktori teratas, tetapi tidak di direktori yang ditargetkan lain. Sebagai contoh:

/copyme.c  
/.dontcopythisfile  
/.dontcopythisdirectory/or_its_contents  
/directory/.butcopymetoo

rsync -a --include=".includeme" --exclude=".*" . DESTgagal menyalin dotfile yang diinginkan dalam subdirektori, tetapi variasi seperti --exclude="./.*"juga gagal.

Saran? Apakah ini memerlukan aturan filter yang bertentangan dengan yang lebih sederhana --exclude?


sumber

Jawaban:

12

Anda harus menggunakan jangkar, dan dalam rsync karakter jangkar adalah '/'.

Jadi dalam string Anda harus:

rsync -a --include="/.includeme" --exclude="/.*" ./ DEST
Alexander Pogrebnyak
sumber
0

Saya biasanya lebih suka membuat file .rsync-filter yang berisi pola:

- /.*

Seperti itu,

rsync -hxDPavilyzHFF --stats --delete ./ remote:/backup/

adalah perintah cadangan yang ideal. Pemfilteran dilakukan oleh flag -FF.

Perhatikan bahwa menggunakan metode ini, Anda dapat memiliki berbagai file .rsync-filter di berbagai subdirektori, yang berlaku untuk masing-masing sub pohon. Anda dapat mengganti pengecualian dalam subdirektori juga, menggunakan metode ini.

lihat
sumber