数日前、NTFSリムーバブルハードドライブにいくつかのLinuxファイルをバックアップしましたが、今回は削除する必要がありました。しかし、私は次の理由でこれが難しいと思います。
Windowsでは、「製品が見つかりません」
OS ubuntu 12.04がインストールされている仮想マシンからハードドライブをマウントし(「ntfs-3g」を使用しているようです)、「」を使用すると
rm
「苦情」が発生します。そのファイルやディレクトリはありません。";"ls
"もファイルをインポートできません。
それでは、このファイルを正しく破砕する方法はありませんか?
答え1
走るchkdsk /f
Windowsで。無効な文字を含むファイルを削除したり手動で削除したりできるように、ファイル名を変更する必要があります。
答え2
NTFSは、一般的なUNIXファイルシステムとは異なり、HFS+「フォーク」などの「ストリーム」をサポートしています。
Windowsの規則は、ファイル名とストリーム名を区別して、ファイル名の一部としてストリーム名を指定することです:
。これが「このアイテムが見つかりません」というメッセージが表示される理由です。 「Here:try this」という名前の場合、Windowsは次のようになります。 「here」ファイルで「try this」ストリームを見つけます。 Windowsでこのようなファイル名を解析しないように指示することはできますが、方法はわかりません。
ntfs-3gには互換性のあるストリーム名解決を有効にするマウントオプションがあり、fsをマウントすると、-o streams_interface=windows
ntfs-3gは:
同じ方法でファイル名を処理します。したがって、これを確認するにはmount|grep windows
十分に機能する必要があります。
答え3
以前にコロンを含むntfs-3gファイルシステムでWindows chkdskを実行しようとしましたが、システムがLinuxまたはオプションなしでインストールされ使用されているwindows_names
場合、streams_interface=windows
NTFSファイルシステムの整合性を復元する唯一の方法は、次のものを起動することです。 Windowsオペレーティングシステムでは、Windowsがchkdsk
コロンを含むすべてのファイルを永久に削除することを許可します。
言い換えれば:はいとても慎重です。chkdsk
Linuxでntfs-3gを使用して作成されたNTFSファイルシステムでWindowsを実行します。コロンを含むファイルはすべて失われます。
ntfs-3g相互作用を使用すると、2つの結果が発生します。
TuxeraはNTFSアルファベットの仕様に従い、ファイル名へのコロンの使用を許可します。ただし、Windowsと特に互換性がなく、Windowsで使用する意図が全くないNTFSファイルシステムを使用する人はほとんどいないため、ほとんどすべての人が実際にはデフォルトではない動作が必要です。
破損したNTFSファイルシステムを修復するためにTuxeraが推奨する安全な方法は、Windowsオペレーティングシステムを起動してからです
chkdsk
。 (これは、Windowsオペレーティングシステムを起動し、ファイルシステムを修復する必要があることを検出した場合でも自動的に発生します。)
したがって、ファイルシステムの長期的な安定性とセキュリティに興味がある場合は、最終的にはWindowsオペレーティングシステムを起動してchkdsk
修復する必要があります。ただし、Windowsがchkdsk
実行されると、ファイル名にコロンを含むすべてのファイルが削除されます。プロンプトや警告はありません。
残念ながら、多くの人がNTFSを移植性とバックアップのための汎用ファイルシステムとして使用しています。ファイル名を含むLinuxの2つの一般的なファイルは、タイトル行(Re:、Fwd:など)に基づいて名前付きEメールとMaildir形式を使用して保存されたEメールです。したがって、この目的のために最初からntfs-3gファイルシステムを作成する場合は、常にwindows_names
mountオプションとmountを使用する必要があります。ファイルシステムで生成されたすべてのファイルは、/etc/fstab
最終的に実行する必要があるときに有効でなければなりません。chkdsk
これを怠ると、Windowsの誤ったファイル(コロンなどを含むファイル)の大部分またはすべてを削除または回復できない可能性があります。間違ったファイルが作成されると、Windowsはファイルが消去されるまでファイルシステムが破損していると見なし、Windowsでのみファイルシステムを修復できます。したがって、Linuxではファイルを回復または削除できません。
答え4
これがなぜ問題を引き起こすのか理解できません。次のテストはNTFSファイルシステムで実行されます。
$ mount| grep win
/dev/sda3 on /winblows type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other,blksize=4096)
$ grep winb /etc/fstab
UUID=C0BCD19CBCD18D72 /winblows ntfs defaults 0 0
$ pwd
/winblows/foo
したがって、NTFSパーティションは次のように実行します。
$ touch :a a: a:b
$ ls
:a a: a:b
$ rm :a a: a:b
とにかく、これらのコマンドはすべて機能し、考えられる解決策は次のとおりです。
rm \:a
rm -- :a
rm ':a'
rm *:*
find . -name "*:*" -delete