バックアップをソースと比較して、データが正しいことを手動で確認する予定です。一部の文字(例:åäö)は生データに正しく表示されませんが、クライアント(Sambaを介して)がそれを正しく解釈しても心配する必要はありません。バックアップから復元されたデータは文字を正しく表示し、diffで同じファイル(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=
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
答え1
Unixファイルシステムは、ファイル名がバイトで構成されているため、ロケールに依存しない傾向があり、そのバイトがASCIIの範囲外の場合、その意味を決定するのはアプリケーションによって異なります。今日のUnixの慣例は、UTF-8を使用して、いくつかのレガシー環境(主にアジア環境)を除いて、ファイル名やその他すべてをエンコードすることです。一方、Windowsファイルシステムはファイルシステムプロパティにエンコードされている傾向があります。
別の方法でエンコードされたファイル名を使用する必要がある場合は、次のコマンドを使用してそのファイルシステムの翻訳ビューを作成します。ファイルシステム変換。バラより SSHで異なるエンコードされたファイル名を使用する
元のシステムには、latin-1でエンコードされたファイル名があるようです。現在のシステムはUTF-8を使用しており、å
latin-1()で表されるシングルバイトシーケンスは、として印刷された\345
UTF-8の無効なシーケンスです。バックアップ処理のため、ファイル名はUTF-8でエンコードされます。 Samba は設定に従ってファイル名を変換します。ls
?
デフォルトのエンコードを使用して元のファイルにアクセスするには、再エンコードされたビューを作成します。
mkdir /original-recoded
convmvfs -o icharset=LATIN1,ocharset=UTF8 /original /original-recoded
diff -r /original-recoded /frombackup
(持ちたい権限と所有権によっては、他のオプションが必要になる場合があります。)
答え2
Unix / Linuxでは、ファイル名には'\0'
(ASCII NUL)および'/'
(スラッシュ、ディレクトリ区切り文字)を除く任意の文字を含めることができます。特に、奇妙なエンコーディングで漢字でファイル名を指定するには、続行してください。横説説や他の命令が見えるかもしれませんが、ls(1)
悪いことは起こりません。på
以下は、「不明/非ASCII文字」の一般的なショートカットですp?
。'?'
両方のファイル名を実行して、od -c
次のようにします。例:
ls /the/dir/offending/fi* | od -c
(globは無関係な名前をフィルタリングし、好みに合わせて調整することです)。
出力が異なる場合にのみ心配され始めます。しかし、Svedishの設定を考えると、正しい名前はpå
おそらく他の名前は前の設定から残ったLatin-4の名前です。