mac tarを取得して、._ *ファイル名をtarアーカイブに入れない[複製]


46

重複の可能性:
OS Xのtarballで._fooなどのファイルを取得するのはなぜですか?

Macでautoconfスクリプトを作成します。tarが実行されると、これらのすべての._ foob​​ar名がアーカイブに入れられます。

libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpf
libewf-20110312/borlandc/builder5/ewfacquire/._ewfacquire.bpr
libewf-20110312/borlandc/builder5/ewfacquire/ewfacquire.bpr

現在起こっているのは、AppleのHFSファイルシステムが._ foob​​ar名にファイルプロパティを入れて、別のMacシステムで復元できるようにすることです。しかし、私はそれらを望んでいません---彼らは私にとってはただのジャンクです。それらを抑制する方法はありますか?



2
@geekosaur unix.SEのユーザーは、あきらめて間違った答えを受け入れました。
ダニエルベック

また、同じソリューションを使用するアーカイブ(たとえばからファイルを適切に抽出._*.__init__.pyすることに関する関連する質問SUの質問があります
クリスジョンセン

回答:


69

別の質問への回答ごとに undocumented(?)環境変数COPYFILE_DISABLEを設定して、システムが提供するプログラムのいくつか(tarを含む)が._*アーカイブメンバーに特別な意味を与えないようにすることができます。特に、次のことを防ぎます。

  • ._*アーカイブメンバーに拡張属性データ(リソースフォークを含む)を保存する
    (つまり、Mac OS Xで作成されたが他のシステムでの使用を目的としたアーカイブを「汚染しない」)

  • のような名前のアーカイブメンバーから拡張属性またはリソースを抽出しようとします._*
    (つまり._*、他のシステムのアーカイブ内のアーカイブメンバーを誤って解釈しないでください)。

環境変数に使用する値は重要ではありません(空の文字列でも構いません)。0、などの値falseは機能を再度有効にしません。重要なのは、変数が設定されているかどうかだけです(機能を再度有効にするには、変数を「設定解除」する必要があります)。

Bourneスタイルのシェル(shkshbashzshなど)の機能を利用して、コマンドの前に追加の環境変数を追加することにより、個々のコマンドでこの変数を使用できます。

COPYFILE_DISABLE=1 tar cf new.tar …

問題が頻繁に発生する場合は、シェルの初期化ファイルの1つでこの変数を設定してエクスポートすることをお勧めします。

# turn off special handling of ._* files in tar, etc.
COPYFILE_DISABLE=1; export COPYFILE_DISABLE

必要に応じて、個々のコマンドの変数を設定解除できます。

(unset COPYFILE_DISABLE; tar cf somefile.tar …)

このMac OS X 10.6システムでは、次のコマンドはすべてCOPYFILE_DISABLEについて認識しているようです。

  • /usr/bin/tar(へのシンボリックリンクbsdtar
  • /usr/bin/bsdtar
  • /usr/bin/gnutar
  • /bin/pax

COPYFILE_DISABLEは、Mac OS X 10.5で発生しました。10.4をサポートする必要がある場合、COPY_EXTENDED_ATTRIBUTES_DISABLEは同じように機能します。


ワオ。まさに私が探していたもの。ありがとう。私のautoconfファイルはずっときれいになります。
vy32

0

専門家ではありませんが、少しグーグルがこれを見つけました:http : //www.ofzenandcomputing.com/zanswers/3422

そしてこれ:http : //hintsforums.macworld.com/archive/index.php/t-28703.html

2番目のコマンドは、スクリプトに組み込むことができるように見えます...リソースフォークファイルの作成を防ぐことはできないかもしれませんが、後で自動的に削除できます。

編集:これは悪い結果をもたらす可能性があると述べたはずですが、あなた自身の責任で使用してください。


1
このスクリプトは、ローカルディスク上のファイルからリソースフォークを削除します。これらは通常、目的(特定のファイルに関連付けられたアプリケーションの変更など)に役立つため、これには大きな警告が必要です。
ダニエルベック

スクリプトは私を助けません。tarアーカイブからではなく、ディスクからファイルを削除します。ディスクにリソースファイルがないことがわかりました。しかし、それらはアーカイブに入れられています。また、zipファイルとは異なり、tarアーカイブからファイルを削除することはできません。
vy32

(bah、タイムアウト)実際にはtar、BSD libarchiveベースのもの(Mac OS Xを含む)以外のほとんどを使用することができますが、信頼できない場合があります。GNU tarをインストールするのは良いアイデアです。(しかし、それは苦痛です。それらをすべてリストし、コマンドラインでそれらの名前を渡す必要があると思います。)また、リソースフォークは技術的にはディスク上にありますが、HFS +では拡張属性に格納されます。._ファイルは、拡張属性をサポートしない場所にリソースフォークを格納するOS Xの方法です。
ギーコサウルス

0

独自のをコンパイルtarするか、MacportsまたはFinkからインストールできます(Homebrewにはありません)。いくらかの「運」があれば、OS Xメタデータを知らず、それらのファイルの作成をスキップする必要があります。


投票権の説明をお願いします。ありがとうございました。
ダニエルベック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.