
Macに「␀␀␀␀HFS+ Private Data」というフォルダがあります。削除しようとしていますが、unlink、rm、mvが息を呑むように混ざった奇妙な文字がたくさん含まれており、削除と内容を削除するのは難しいです。 unlink/rm/mv バイナリが別の作業を行う場合に備えて unlink() を直接呼び出すコードを書いてみました。しかし、いいえ、unlink()はこの文字を解析できません。
私はこれがどの文字であるかを調べるためにechoとodを使用します。
************@Trinity:~/Desktop/test$ echo -e "␀" | od -t oC -An
342 220 200 012`
ここで342を確認しました。http://ascii-code.com- そしてそれがLatin-1セットの一部であることがわかりました。 UTF-8に変換しようとしています。
************@Trinity:~/Desktop/test$ iconv -f latin1 -t utf-8 "␀␀␀␀HFS+ Private Data"
iconv: ␀␀␀␀HFS+ Private Data: I/O error
では、このフォルダをどのように削除しますか? 16進/ 8進コードをrmやmvなどに渡すことはできますか? rm*、sudo 呼び出しなど考えられるすべてを試しました。問題は、そのキャラクターの連結解除ブロックなので、なんとかそのキャラクターを変更しなければならないということです。私はまた、Debianを仮想マシンにインストールし、このフォルダへのアクセスを許可して、OS X環境のツールに問題がある場合に備えてそこで試してみることを検討しています。
編集:私はこれを試しました:
************@Trinity:~/Desktop/test$ echo -e "␀␀␀HFS+ Private Data" | od -t oC -An
342 220 200 342 220 200 342 220 200 110 106 123 053 040 120 162
151 166 141 164 145 040 104 141 164 141 012`
************@Trinity:~/Desktop/test$ echo "\342\220\200\342\220\200\342\220\200\110\106\123\053\040\120\162\151\166\141\164\145\040\104\141\164\141\012" | xargs rm
rm: 342220200342220200342220200110106123053040120162151166141164145040104141164141012: No such file or directory
************@Trinity:~/Desktop/test$ echo "\342"
\342
EDIT2: Unlink() エラーが表示される
************@Trinity:~/Desktop/test$ unlink test3.txt
************@Trinity:~/Desktop/test$ unlink "␀␀␀␀HFS+ Private Data/1.txt"
unlink: ␀␀␀␀HFS+ Private Data/1.txt: Invalid argument
************@Trinity:~/Desktop/test$ cd "␀␀␀␀HFS+ Private Data/"
************@Trinity:~/Desktop/test/␀␀␀␀HFS+ Private Data$ unlink 1.txt
unlink: 1.txt: Invalid argument
EDIT3:これがHFS + /ファイルシステムの問題ではなくファイル名の問題であることを示しています。
************@Trinity:~/Desktop/test$ mkdir "␀␀␀␀testTest"
************@Trinity:~/Desktop/test$ rm -r "␀␀␀␀testTest"
rm: ␀␀␀␀testTest: Invalid argument
EDIT4:これは進行状況かもしれません...次に、ロケール設定を混乱させます。
************@Trinity:~/Desktop/test$ ls | grep -i *test* | xxd
0000000: e290 80e2 9080 e290 80e2 9080 7465 7374 ............test
0000010: 5465 7374 0a Test.
************@Trinity:~/Desktop/test$ rm -r $'\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80\x74\x65\x73\x74\x54\x65\x73\x74\x0a'
rm: ␀␀␀␀testTest
: No such file or directory
Follow-up to this: nope, false hope. I dropped the \x0a on the end and it 'worked'... kind of.
************@Trinity:~/Desktop/test$ rm -r $'\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80\xe2\x90\x80\x74\x65\x73\x74\x54\x65\x73\x74'
rm: ␀␀␀␀testTest: Invalid argument
答え1
~によるとhttps://apple.stackexchange.com/questions/31734/hfs-private-directory-dataこのフォルダは、ファイルシステムの内部操作に使用されます。あなたはできるできない削除すると、ファイルシステムが破損する可能性が高くなります。
答え2
OPでは、この問題がすでに修正されていることを知っていますが、この問題を偶然発見した人にとっては、これが10.11 El Capitanの唯一の問題のようです。 OS X 10.4 TigerとOS X 10.10 Yosemiteでこの文字を含むファイルを削除してみたので、他のファイルでも機能する可能性が高いです。
答え3
参考としてのみ使用してください。
「␀␀␀␀HFS+ Private Data」フォルダは、実際のファイルデータとハードリンクされたファイルのメタデータを保持するHFS +特殊フォルダです。
したがって、複数のディレクトリエントリは、この隠しディレクトリの「ファイル」を指し、そこには実際のファイルデータと属性が追加されます。
これには、名前の前に4文字の0文字があるなど、いくつかの特別な属性があり、メタデータには一般的な使用時にエンドユーザーがその内容を「見る」可能性を下げるその他のビットもあります。
一部のバックアップに表示されるフォルダが見つかった場合(ライブコピーなし)、安全に削除できます。
フォルダのハードリンク情報を格納する「.HFS+ Private Directory Data」という同様の隠しファイルがあります。
答え4
一つあるようです。(引退?) 仕様はこちら:
間接ノードファイルは、次の特殊ディレクトリにあります。メタデータディレクトリ。このディレクトリはボリュームのルートディレクトリにあります。メタデータディレクトリの名前は次のとおりです。ヌル文字4個その後に文字列が続くHFS+個人データ。ディレクトリ作成日は、ボリュームルートディレクトリ作成日に設定されます。これkは見えないそしてロック名ビットはディレクトリの Finder 情報に設定されます。 Finder 情報のアイコン位置をポイント位置に設定(22460、22460)。これらのFinder情報の設定は必須ではありませんが、メタデータディレクトリへの偶発的な変更を減らす傾向があります。ハードリンクを自動的に追跡する実装は、通常のファイルシステムインターフェイスからメタデータディレクトリにアクセスできないようにする必要があります。。
メモ:
HFS Plusと大文字と小文字を区別しないHFSXで使用される大文字と小文字を区別するUnicode文字列比較は、NULL文字を他のすべての文字の後にソートするため、メタデータディレクトリは通常ルートディレクトリの最後のエントリです。大文字と小文字を区別するHFSXボリュームでは、NULL文字は他の文字より前にあるため、メタデータディレクトリは通常ルートディレクトリの最初のエントリです。
POSIXセマンティクスはオープンファイルを受け入れます。接続解除(削除済み)。開いているが接続されていないファイルは、ハードリンクのようにHFS Plusボリュームに保存されます。開いたファイルが削除されると、名前が変更され、メタデータディレクトリに移動されます。新しい名前は、文字列 "temp"と10進テキストに変換されたディレクトリノードIDです。この一時ファイルは、ファイルが最終的に閉じられると削除される可能性があります。マウント解除されたHFS Plusボリュームを回復すると、その一時ファイルがすべて削除されることがあります。
メタデータディレクトリの回復
ハードリンクまたはメタデータディレクトリを使用してHFS Plusボリュームを回復するときは、次の状況を回復する必要があります。
開いていたが削除された(現在は別々の)ファイルです。
分離された間接ノードファイル(該当するリンクを参照するハードリンクはありません)
ハードリンクが失われました(ハードリンクは存在しますが間接ノードファイルは存在しません)。
リンク数が正しくありません。
リンク参照は0です。
開いているが削除されたファイルは、名前が「temp」で始まり、メタデータディレクトリにあるファイルです。ボリュームが使用中でない場合(マウントされていないか他のユーティリティーで使用されていない場合)、このファイルを削除できます。。ジャーナルを含むボリューム、アクティブなトランザクションがないボリュームにも削除する必要があるファイルが開いていますが、削除されていない可能性があります。
分離された間接ノードファイル、壊れたハードリンク、または間違ったリンクの数を検索するには、ディレクトリ内のすべてのハードリンクファイルを見つけ、各リンクで参照されている見つかったハードリンクの数をその間接ノードファイルのリンク数と比較する必要があります。
リンク参照がゼロのハードリンクは無効です。これらのハードリンクは、ディレクトリレコードの権限を使用しない実装またはユーティリティによってハードリンクをコピーまたは復元した結果です。正しいリンク参照を確認してハードリンクを回復できます。それ以外の場合は、ハードリンクを削除する必要があります。