Saya ingin menyalin sejumlah besar file ke drive USB yang diformat FAT32 (dan sayangnya, tidak dapat diformat apa pun).
Banyak dari file ini memiliki nama dengan karakter seperti :
dan ?
yang FAT32 tidak izinkan. Mencoba menggunakan cp
atau rsync
, file-file ini tidak disalin dan sebuah kesalahan dilaporkan menyatakan demikian.
Saya tidak ingin mengubah nama file pada sumbernya, tetapi saya juga tidak peduli apa nama file tersebut pada drive USB tujuan.
Klarifikasi tujuan (berlaku untuk komentar lain juga): Ini untuk pemutar mp3 di dalam mobil dan perangkat lunak hanya memungkinkan FAT32. Jadi bukan untuk cadangan. Dan alasan nama file memiliki karakter aneh adalah karena mereka, misalnya judul mp3, atau nama artis.
Saya sudah mencoba beberapa hal:
--iconv
Opsi rsync . Tampaknya ini tidak berhasil, tetapi mungkin saya tidak menggunakannya dengan benar.rdiff-backup
, yang saya baca tidak konversi ini secara default. Namun, file sumber adalah tautan simbolis yang ingin saya ikuti (yaitu-L
opsi rsync ), dan dari halaman manual sepertinya tidakrdiff-backup
memiliki opsi ini.
Ada saran lain?
rsync
's--iconv
pilihan tidak dibuat untuk apa yang Anda coba untuk menggunakannya untuk.--iconv
apakah konversi set karakter, misalnya, latin1 <-> utf8. Bukan yang Anda cari.Jawaban:
Rsync dengan
--iconv
akan menjadi opsi, tetapi pertama-tama Anda harus mendefinisikan suatu pengkodean di mana?
,:
dan yang lain dikodekan dengan karakter yang diizinkan pada sistem file FAT.Untuk kasus penggunaan Anda, Anda tidak menggunakan semua kekuatan rsync untuk ini. Tugas ini dapat dilakukan dalam beberapa baris skrip shell.
Berikut adalah script bash yang salinan
~/Music
ke/media/usb99
, melewatkan file yang lebih tua pada target, dan bertobat:
dan?
untuk_
. Itu tidak mendeteksi bentrokan (saya berasumsi Anda tidak memiliki keduanyafoo:bar.mp3
danfoo?bar.mp3
).Skrip ini berfungsi di bawah zsh dengan modifikasi kecil: ganti
shopt -s dotglob globstar
dengansetopt dot_glob
dan[[ $target -ot $source ]]
oleh[[ ! -e $target || $target -ot $source ]]
.sumber
Jika itu untuk tujuan cadangan, cukup sembunyikan tarball. Tidak ada kerepotan nama file seperti itu.
sumber