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?

regex  bash  rsync 

Jawaban:


12

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

Jadi dalam string Anda harus:

rsync -a --include="/.includeme" --exclude="/.*" ./ DEST

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.

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.