GNU/Linux >> Linux の 問題 >  >> Linux

隠しファイルを除いて、ディレクトリのtarアーカイブを作成しますか?

特定のディレクトリ(もちろんそのサブディレクトリを含む)のtarアーカイブを作成したいと思います。しかし、tarコマンドを使用して実行すると、含まれているファイルのリストが表示されます。例:

calendar_final /._ style.css

calendar_final / style.css

ご覧のとおり、同じファイルには2つのバージョンがあります。これはすべてのファイルに当てはまり、多くのファイルがあります。 ._プレフィックスが付いた一時ファイルをtarアーカイブから除外するにはどうすればよいですか?

承認された回答:

MacOSXシステムで作業しているというコメントを投稿しました。これは、これらの._*の目的に対する重要な手がかりです。 ファイル。

これらの._* アーカイブエントリは、対応するファイル(._のないファイル)に関連付けられた追加情報を含むAppleDoubleデータのチャンクです。 プレフィックス)。これらは、Mac OSX固有のcopyfile(3)によって生成されます。 関数のファミリー。 AppleDouble BLOBは、アクセス制御データ(ACL)と拡張属性(通常、 Finder )を格納します フラグと「リソースフォーク」ですが、xattrsを使用してあらゆる種類のデータを保存できます。

システム提供のMacOSXアーカイブツール(bsdtartarともシンボリックリンクされています )、gnutar 、およびpax )は._*を生成します 拡張情報が関連付けられているファイルのアーカイブメンバー。 「アーカイブ解除」モードでは、それらのアーカイブメンバーもデコードし、結果の拡張情報を関連ファイルに適用します。これにより、HFS +ファイルシステムが保存できるすべての情報を保存し、後で抽出することで、MacOSXシステムで使用するための「完全忠実な」アーカイブが作成されます。

他のシステムの対応するアーカイブツールは、これらの._*に特別な処理を与えることを知りません。 ファイルなので、通常のファイルとして解凍されます。このようなファイルは他のシステムではかなり役に立たないため、「ジャンクファイル」と見なされることがよくあります。同様に、Mac以外のOS Xシステムが、._で始まる通常のファイルを含むアーカイブを生成する場合 、Mac OS Xアーカイブ解除ツールは、これらのファイルを拡張情報としてデコードしようとします。

ただし、システム提供のMac OS Xアーカイバーを他のUnixシステムと同じように動作させるための文書化されていない(?)方法があります。COPYFILE_DISABLE環境変数です。この変数を(空の文字列を含む任意の値に)設定すると、アーカイバーが._*を生成できなくなります。 アーカイブされたファイルに関連付けられた拡張情報を表すアーカイブメンバー。その存在はまた、アーカイブ担当者がそのようなアーカイブメンバーを拡張情報として解釈しようとするのを防ぎます。

COPYFILE_DISABLE=1 tar czf new.tar.gz …
COPYFILE_DISABLE=1 tar xzf unixy.tar.gz …

この方法を頻繁に実行したい場合は、シェルの初期化ファイルでこの変数を設定できます。

# disable special creation/extraction of ._* files by tar, etc. on Mac OS X
COPYFILE_DISABLE=1; export COPYFILE_DISABLE

次に、機能を再度有効にする必要がある場合(拡張情報を保持/復元するため)、個々のコマンドの変数を「設定解除」できます。

(unset COPYFILE_DISABLE; tar czf new-osx.tar.gz …)

Mac OS X 10.4のアーカイバーも同様のことを行いますが、異なる環境変数を使用します:COPY_EXTENDED_ATTRIBUTES_DISABLE

関連:一時ファイルなしでSTDERRとSTDOUTを異なる変数にリダイレクトしますか?
Linux
  1. 最大サイズのブロックに分割されたtarアーカイブを作成しますか?

  2. Tarballを抽出するときにターゲットディレクトリを作成しますか?

  3. ワイルドカードを使用して tar アーカイブ内の特定のファイルを抽出する

  1. ソートされた順序でファイルを tar する方法は?

  2. tbz ファイルへのファイルの追加

  3. 正規表現を使用して TAR アーカイブからファイルを除外する方法は?

  1. Linuxで特定のディレクトリまたは別のディレクトリにtarファイルを抽出する方法

  2. Linuxですべてのユーザーの共有ディレクトリを作成する方法

  3. Linuxでファイルとディレクトリをアーカイブする方法[パート1]