web-dev-qa-db-ja.com

rm / unlinkなしで削除する方法

私が尋ねた別の質問に関連して ここ[https://unix.stackexchange.com/questions/253932/rename-folder-with-odd-characters]

通常のrm/rmdir/unlinkバイナリをバイパスして、別の方法でファイルを削除することは可能かどうか疑問に思っています。たぶん、ファイルまたはフォルダがディスク上のどこにあるかを正確に見つけ、その場所に別のデータを書き込んで、フォルダまたはファイルを一掃することによって言うかもしれません。どのようにそれを行うのでしょうか、そしてそれはOSやファイルシステムに問題を引き起こすでしょうか?

または、..ファイルと呼ぶのをためらっていますが、このフォルダー/ファイルへの正確な参照を見つけてリンクを解除するために、16進エディターで表示および編集できるディスクの領域はありますか?そして、HFS +やOSXに固有の別の方法はありますか?

編集1:ここでファイルの内容を削除するのではなく、rm/unlink以外のメソッドを使用してファイルやフォルダーを削除することに興味があります。フォレンジックな意味でデータを削除しようとしているのではなく、削除を拒否するフォルダーを削除しようとしています(上記のリンク先の質問を参照)。

2
Harv

ディスクイメージの編集は可能ですが、非常に危険です。これを支援できる適切なエディターがある場合は、変更するデータのコピー(書き込みまたはその他)があることを確認する価値があります。

最も重要なことは、ディスクがマウント解除されて使用されていない状態で試行してはならないということです。ブート/システムディスクの場合は、レスキューディスクなど、別のメカニズムを使用してブートする必要があることを意味します。

私が好むLinuxベースのRescueCDは SystemRescueCD ですが、HFSツールが含まれているかどうかは定かではありません(パッケージのリストからわかるように)。これが 別の可能な解決策 、標準のUbuntuインストールディスクを使用していますが、2009年のものであるため、非常に古くなっている可能性があります

2
roaima

元のデータが引き続き存在することを気にせず、文字エンコードの問題のために直接削除できないファイルを削除したい場合は、これが解決策です。これには、ファイル名を使用してファイルの名前を変更し、ファイルを削除できるようにすることが含まれます。以下の例では、現在のディレクトリ内のすべてのファイル名とディレクトリ名からすべての非ASCII文字を削除します。

rename 's/[^\x00-\x7F]//g' ./*
rm new-filenames

正規表現[^\x00-\x7F]これから来ました スタックオーバーフローの質問

サブディレクトリに移動するには、findを使用します。

find . -exec rename -n 's/[^\x00-\x7F]//g' "{}" \;

名前を変更するファイルを通知するのではなく、-nフラグを削除して名前を変更します。

0
user2121874