Linux
由於編碼問題,相同的文件,不同的文件名?
我正要從它的源中對備份進行比較,以手動驗證數據是否正確。一些字元,比如 åäö,在原始數據上沒有正確顯示,但是當客戶端(通過 samba)正確解釋它時,沒有什麼可擔心的。從備份中恢復的數據正確顯示了字元,導致 diff 不認為它們是相同的文件(有差異,而是完全不同的文件)。
md5 總和,相同的文件但名稱不同。
# 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
掛載選項和文件系統
/dev/sdb1 on /original type ext4 (rw,noatime,errors=remount-ro) /dev/sdc1 on /frombackup type ext4 (rw)
當地的
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=
從 -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
Unix 文件系統往往與語言環境無關,因為文件名由字節組成,如果這些字節超出 ASCII 範圍,則由應用程序決定它們的含義。除了一些遺留環境(主要是亞洲環境)之外,今天的 Unix 慣例是以 UTF-8 對文件名和其他所有內容進行編碼。另一方面,Windows 文件系統往往具有在文件系統屬性中指定的編碼。
如果您需要使用不同編碼的文件名,請使用convmvfs創建該文件系統的翻譯視圖。請參閱 通過 ssh 使用不同編碼的文件名
您的原始系統似乎具有以 latin-1 編碼的文件名。
å
您目前的系統使用 UTF-8,而latin-1 ( ) 中表示的單字節序列\345
是 UTF-8 中的無效序列,ls
列印為?
. 您的備份過程不知何故導致文件名以 UTF-8 編碼。Samba 根據其配置翻譯文件名。要使用本機編碼訪問原始文件,請重新編碼視圖:
mkdir /original-recoded convmvfs -o icharset=LATIN1,ocharset=UTF8 /original /original-recoded diff -r /original-recoded /frombackup
(您可能需要其他選項,具體取決於您想要獲得的權限和所有權。)