Ketika saya menyalin file dari partisi ext3 ke FAT32 menggunakan cp:
cp -R /ext3/stuff /fat32/partition/
Saya mendapatkan pesan argumen yang tidak valid untuk semua file dengan titik dua dan tanda tanya di.
Apakah ada cara untuk mendapatkan cp untuk menghapus karakter yang tidak valid untuk sistem file target?
sunting: Saya sudah memeriksa opsi cp lagi, dan kecuali saya bodoh, tidak ada apa-apa di sana. Saya yakin saya bisa menulis skrip, tapi rasanya harus ada solusi yang lebih bersih!
sumber
Berdasarkan posting oleh Gilles saya menguji daftar berikut:
Saya mencoba untuk menyalinnya ke kartu MicroSDHC ponsel Android dengan sistem file vfat dan
pax
perintah halus sampai semuanya bekerja. Itu mungkin masih belum cukup untuk Windows dan Unicode:Anda mungkin juga ingin menggunakan opsi -k untuk memastikan tidak ada overwrite (karena tabrakan pada nama file). Kedua daftar yang saya berikan di komentar berbeda dari perilaku Linux vfat.
sumber
Saya menerima "Argumen tidak valid" ketika menyalin dengan cp -r sumber usbstick dan menemukan penyebabnya adalah namafile nama file yang diakhiri dengan spasi. Menghapus ruang membersihkan pesan. File dengan nama yang salah terjadi BTW dalam hal ini berada di direktori program mailer.
sumber
Saya hanya punya alasan untuk perlu melakukan ini, dan sementara
pax
jawaban berbasis itu baik, masih mengalami masalah dengan karakter beraksen.Jadi saya merasa lebih mudah untuk menggunakan
tar
dan mendapatkannya untuk mengganti semua karakter yang tidak diizinkan dengan garis bawah:Tidak diragukan lagi mungkin untuk membuat daftar karakter yang diizinkan yang lebih baik daripada yang di atas, tetapi ini berhasil.
sumber
Setelah membaca jawaban atas pertanyaan yang sangat menarik ini dan melakukan beberapa percobaan dengan kartu SD untuk Android (exfat) dan sistem hiburan mobil (vfat), saya muncul menggunakan skrip bash kecil ini.
Dibutuhkan tujuan (mount point) sebagai argumen dan digunakan
find
untuk menemukan semua file di repositori musik saya.Untuk setiap jalur file, ini menghitung jalur tujuan dan nama file dengan mendahului tujuan dan mengganti karakter yang menyinggung dengan garis bawah
_
. Saya menggunakan daftar putih karakter (huruf, angka,-
,/
,.
,.
(
,)
Dan_
) untuk menghilangkan tanda baca yang tidak diinginkan.Bergantung pada lokasinya, ini akan meninggalkan huruf beraksen di jalur dan nama file, yang OK untuk sistem file FAT modern, seperti yang terlihat.
Untuk setiap jalur dan nama file tujuan, direktori dibuat sesuai kebutuhan menggunakan
mkdir -p
, kemudian file disalin, kecuali sudah ada.Perhatikan kutipan
"
karakter di berbagai tempat, mereka diminta untuk menjaga jalur dan nama dengan spasi di dalamnya agar tidak berantakan.sumber