web-dev-qa-db-ja.com

mac os xのtarコマンドで「隠し」ファイルを追加するのはなぜですか?

私は自分のtarアーカイバを書いています。アプリ内ではすべて正常に動作しますが(他のツールで生成されたtarを読み取る場合でも)、tarファイルをサードパーティのtarファイルリーダーで動作させることができません。そこで、コマンドラインでtarファイルを作成し、コードを使用して1つを作成し、2つをバイナリで比較してみました。

しかし、問題があるようです:

Tarに追加したいTest.txtというテキストファイルがあるので、ターミナルで次のコマンドを実行します。

tar -c -f x.tar Test.txt

これを行うとき:

tar -tf x.tar

次のリストが表示されます。

./._Test.txt
Test.txt

これはMacOS XLionのターミナルにあります。

それはどこにありますか./._Test.txtファイルはどこから来たの? ls-aを実行しても表示されません

Tarの内容を調べると、バイナリデータのようですが、どこから来たのかわかりません。

26
Joris Mans

これは、ファイルのリソースフォーク/拡張属性を表したものです。

ls -l@ Test.txtxattr -l Test.txtを試して、OSXがファイルに追加したものを確認してください。

5
blahdiblah

以下をbashrcファイルに追加できます-

export COPYFILE_DISABLE=true

または、抽出時にこのオプションをtarコマンドに追加できます

tar -xzpvf x.tar --exclude="._*"
37
jaypal singh

Bsdtar 3.0.3 - libarchive 3.0.3(およびおそらくそれ以前)の時点で、--disable-copyfileファイルの作成を抑制するための._という新しい(Mac OS X固有の)オプションがbsdtarコマンドにあります。

20
mdm

これは、ターゲットファイルシステムがファイルシステムフォークをサポートしていない場合に、OSXがファイルシステムフォークを保存する方法です。

参照: http://en.wikipedia.org/wiki/Fork_(file_system)

2
al01