マウントされたファイルシステムをコードページ間で変換するにはどうすればよいですか?

マウントされたファイルシステムをコードページ間で変換するにはどうすればよいですか?

ext3以前 Linksys NLSU2 NAS デバイスに接続されていた、(基本的に)でフォーマットされた外付けドライブがあります。現在、NSLU2 は壊れており、ファイル名が Windows コードページ ( cp850) を使用しているため、ディスク上のファイルの復元に苦労しています。Windows の「ext2fsd」というツールを介してディスクにアクセスでき、適切なコードページを選択するオプションがあります。ただし、私の Windows コンピューターはかなり古く、ext2fsd ツールは時々クラッシュします。

Ubuntu でディスクをマウントしようとすると、コードページが非標準であるためファイル名が壊れていると思われます。次のことが可能ですか?

  1. ディスクで使用されているコードページを使用して、Ubuntu でドライブを ext3 としてマウントしますか?
  2. 変換するコードページを ext3 に適した標準のものに変更しますか?

答え1

ファイル名を修正するにはconvmv、Windowsで利用できるかどうかはわかりませんが、Ubuntuにはリポジトリがあります。これはまさにこのユースケースで使用したツールです。マニュアル:

convmv は、単一のファイル名、ディレクトリ ツリーとそれに含まれるファイル、またはファイル システム全体を別のエンコーディングに変換するのに便利です。ファイル名のみを変換し、ファイルの内容は変換しません。convmv の特別な機能は、シンボリック リンクも処理し、シンボリック リンク ターゲットが変換される場合はシンボリック リンク ターゲット ポインターも変換することです。

これらはすべて、古い 8 ビット ロケールから UTF-8 ロケールに切り替えたい場合に非常に便利です。また、すでに部分的に UTF-8 でエンコードされているディレクトリを UTF-8 に変換することもできます。convmv は、特定のファイルが UTF-8 でエンコードされているかどうかを検出し、デフォルトでそれらをスキップします。このスマート機能をオフにするには、--nosmart スイッチを使用します。

関連情報