Gunakan rsync untuk menyalin semua file kecuali untuk nama file tertentu dengan ekstensi tertentu


28

Saya memiliki dua kartu flash berukuran sama, dan saya ingin menyalin konten satu ke yang lain berdasarkan aturan berikut:

  1. Saya ingin semua direktori dan subdirektori tersedia
  2. Saya ingin mengecualikan file jenis .FOO, .BAR, dan .ZIM (semua file lain disalin)
  3. Bonus: Akan sangat keren jika menghasilkan nama file saat disalin karena akan menyalin ~ 8 GB informasi

Mungkinkah ini dilakukan dengan "menemukan"?

Jawaban:


41

Ini akan jauh lebih mudah menggunakan rsync dengan --excludesakarnya.

rsync -av --exclude='*.FOO' --exclude='*.BAR' --exclude='*.ZIM' /source /dest

The -vswitch akan memberikan output verbose yang file sedang disinkronkan.


Sedikit tindak lanjut di sini: salinan selesai dan / src / * sekarang di / dest / src / * Bagaimana cara menggunakan rsync untuk mendapatkan / src / * in / dest / *?
macek

Coba/source/ /dest
John T

Ini tidak bekerja Saya masih melihat file * .FOO yang sedang disalin.
Jake

Ini ditentukan bagaimana Anda harus memberikan jalan untuk --exclude. Jika Anda memiliki masalah dengan itu, periksa jawaban ini .
totymedli

0

Jika Anda memiliki banyak ekstensi untuk dikecualikan, Anda dapat membuat file dan menuliskan semua ekstensi atau file untuk dikecualikan dan menggunakan hanya satu opsi pengecualian untuk membuatnya sederhana.

rsync -ravz --exclude = '. / abc, txt' / source / dest

Itu selalu baik untuk menggunakan opsi z untuk kompresi dan r jika Anda harus menyalin secara rekursif.

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.