Saya akan membuat cadangan dari sumbernya untuk memverifikasi secara manual bahwa datanya benar. Beberapa karakter, seperti åäö, tidak ditampilkan dengan benar pada data asli tetapi karena klien (lebih dari samba) menafsirkannya dengan benar, tidak ada yang perlu dikhawatirkan. Data yang dipulihkan dari cadangan menunjukkan karakter dengan benar, menyebabkan diff tidak menganggapnya sebagai file yang sama (dengan file diff, tetapi agak berbeda).
jumlah md5, file yang sama tetapi nama yang berbeda.
# md5sum /original/iStock_000003637083Large-barn*
e37c34968dd145a0e25692e1cb7fbdb1 /original/iStock_000003637083Large-barn p? strand.jpg
# md5sum /frombackup/iStock_000003637083Large-barn*
e37c34968dd145a0e25692e1cb7fbdb1 /frombackup/iStock_000003637083Large-barn på strand.jpg
Pasang opsi dan sistem file
/dev/sdb1 on /original type ext4 (rw,noatime,errors=remount-ro)
/dev/sdc1 on /frombackup type ext4 (rw)
Lokal
LANG=sv_SE.UTF-8
LANGUAGE=
LC_CTYPE="sv_SE.UTF-8"
LC_NUMERIC="sv_SE.UTF-8"
LC_TIME="sv_SE.UTF-8"
LC_COLLATE="sv_SE.UTF-8"
LC_MONETARY="sv_SE.UTF-8"
LC_MESSAGES="sv_SE.UTF-8"
LC_PAPER="sv_SE.UTF-8"
LC_NAME="sv_SE.UTF-8"
LC_ADDRESS="sv_SE.UTF-8"
LC_TELEPHONE="sv_SE.UTF-8"
LC_MEASUREMENT="sv_SE.UTF-8"
LC_IDENTIFICATION="sv_SE.UTF-8"
LC_ALL=
od -c
# ls "/original/iStock_000003637083Large-barn p� strand.jpg" | od -c
0000000 / v a r / w w w / m e d i a b a
0000020 n k e n _ i m a g e s / k u n d
0000040 i d 8 0 / _ B a r n / i S t o c
0000060 k _ 0 0 0 0 0 3 6 3 7 0 8 3 L a
0000100 r g e - b a r n p 345 s t r a
0000120 n d . j p g \n
0000127
# ls "/frombackup/iStock_000003637083Large-barn på strand.jpg" | od -c
0000000 / d a t a / v a r / w w w / m e
0000020 d i a b a n k e n _ i m a g e s
0000040 / k u n d i d 8 0 / _ B a r n /
0000060 i S t o c k _ 0 0 0 0 0 3 6 3 7
0000100 0 8 3 L a r g e - b a r n p 303
0000120 245 s t r a n d . j p g \n
0000135
linux
diff
character-encoding
pengguna135361
sumber
sumber
Jawaban:
Unix filesystems cenderung bersifat agnostik lokal dalam arti bahwa nama file terdiri dari byte dan bisnis aplikasi untuk memutuskan apa arti byte tersebut jika berada di luar rentang ASCII. Konvensi unix hari ini adalah untuk menyandikan nama file dan yang lainnya di UTF-8, terlepas dari beberapa lingkungan lama (kebanyakan Asia). Sistem file Windows, di sisi lain, cenderung memiliki penyandian yang ditentukan dalam properti filesystem.
Jika Anda perlu bekerja dengan nama file dalam pengkodean yang berbeda, buat tampilan terjemahan sistem file itu dengan convmvfs . Lihat bekerja dengan nama file dalam pengkodean berbeda melalui ssh
Tampaknya sistem asli Anda memiliki nama file yang disandikan dalam bahasa latin-1. Sistem Anda saat ini menggunakan UTF-8, dan urutan satu byte yang mewakili
å
latin-1 (\345
) adalah urutan yang tidak valid di UTF-8 yangls
dicetak sebagai?
. Proses pencadangan Anda entah bagaimana menghasilkan nama file yang disandikan dalam UTF-8. Samba menerjemahkan nama file berdasarkan konfigurasinya.Untuk mengakses file asli dengan penyandian asli Anda, buat tampilan yang dikodekan ulang:
(Anda mungkin perlu opsi lain tergantung pada izin dan kepemilikan apa yang ingin Anda peroleh.)
sumber
Di Unix / Linux, nama file dapat berisi karakter apa pun kecuali
'\0'
(ASCII NUL) dan'/'
(slash, pemisah direktori). Secara khusus, jika Anda ingin memberikan nama file Anda di Kanji dalam beberapa penyandian aneh, langsung saja. Anda mungkin hanya akan melihat omong kosong padals(1)
atau perintah lain, tetapi tidak ada hal buruk yang akan terjadi. Itulah yang Anda lihat,på
diterjemahkan sebagaip?
, di'?'
sini adalah jalan pintas umum untuk "karakter tidak dikenal / non-ASCII".Coba jalankan kedua nama file melalui
od -c
, yaitu melakukan sesuatu seperti:(Gumpalan adalah untuk menyaring nama yang tidak relevan, sesuaikan dengan selera).
Hanya jika hasilnya berbeda maka saya mulai khawatir. Tetapi mengingat pengaturan Svedish Anda, saya menduga nama yang benar
på
. Mungkin yang lain adalah nama dalam sisa Latin-4 dari pengaturan sebelumnya?sumber