Documents and Settings
Puppy LinuxのUSB Liveを使用して、Windows XPシステムのフォルダをNTFS外部ディスクにコピーしようとしています。
名前ファイルにエンコードの問題があります。システムがイタリア語の特殊文字(utf-8の一部)を認識しないため、cp
またはGUIファイルマネージャを使用するとエラーが発生しますinvalid or incomplete multibyte or wide character
。
名前に特殊文字を含むファイルをNTFSドライブにコピーする方法は?
答え1
ファイル名がNTFSファイルシステムで有効であることは確実ですか?
ファイル名は同じにする必要がありますか?
そうでない場合は、「奇妙な」文字を削除して生活をより簡単にすることができます。
これを行うツールがあります。detox
。
ファイル名を最初に変更しなくても名前の変更内容を確認できます。
$ detox -n somedir/*
その後、実際に次のようにします。
$ detox somedir/*
別のアプローチは、独自にファイル名をクリーンアップ(「削除」)する方法でNTFSファイルシステムをマウントすることです。
この機能を有効にするインストールオプションがありますwindows_names
。
~からman ntfs-3g
:
windows_names
This option prevents files, directories and extended attributes
to be created with a name not allowed by windows, either because
it contains some not allowed character (which are the nine
characters " * / : < > ? \ | and those whose code is less than
0x20) or because the last character is a space or a dot.
Existing such files can still be read (and renamed).
答え2
rsync は、オプションで、ターゲットファイルシステムに合わせてファイル名を変更できます。マニュアルページから:
--iconv=CONVERT_SPEC
Rsyncはこのオプションを使用して、文字セット間でファイル名を変換できます。 "." に CONVERT_SPEC を使用すると、rsync はロケールを介してデフォルトの文字セットを検索するように指示します。または、--iconv = LOCAL、REMOTEの順序でローカルおよびリモートの文字セットを指定して、実行する変換を完全に指定できます(たとえば、--iconv = utf8、iso88591)。この順序に従うと、ファイルをプッシュまたはプルしてもオプションは変わりません。
努力する
rsync --iconv=. --archive /source /destination
または、ローカルファイルシステムがISO-8859-1であることを指定します。
rsync --iconv=ISO-8859-1,. --archive /source /destination
2つのドライブをローカルにマウントすると、どのファイルシステムがソースであり、どのファイルシステムがターゲットであるかを決定する方法がわかりません。しかし、これが私にとって効果的です。
答え3
iocharset=utf8
インストールオプションに追加してください。
mount -o iocharset=utf8 /dev/sdd1 /mnt/external
これで、MS Windows標準に違反するファイルをNTFSパーティションにコピーできるようになりました。
Windowsの外付けドライブでこれを行うと問題が発生しますchkdsk
が、ファイルシステムが破損しないように注意することができます。 :-)