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"?

macek
sumber

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.

John T
sumber
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.

amit singh
sumber