web-dev-qa-db-ja.com

tar内の多数の「._」ファイル

Linuxマシンで生成されたtarを持っています。そのtarの一部を別のLinuxマシンにアップロードする必要があります。完全なtarは巨大で、アップロードに数時間かかります。私は今Mac OSXマシンを使用していますが、これが私の問題です。

  1. Tarをフォルダーに抽出し、新しいサーバーにアップロードする必要があるものを見つけます
  2. アップロードしたいものだけを含む小さなtarを作成します。
  3. それを新しいLinuxマシンにアップロードして抽出します
  4. サーバーを見ると、._ファイルでいっぱいです。アップロードされたすべてのファイルには、._text1.txt._text1.txttext2.txt...などの._text2.txtファイルがあります。

OSXはこれらのファイルをtarに含めています。

私はこれをやろうとしました

tar --exclude='._*' -cvf newTar  . 

違いなし。

現在、新しいサーバーにsshアクセスできません。

それを解決するにはどうすればよいですか?クリーンなtarを生成する方法を教えてください。

8
SpaceDog

私の理解では、tar --exclude='._*' -cvf newTar .は機能するはずです。Finderは._*ファイルを作成しますが、newTarにはそれらを含めないでください。

ただし、パススルーモードでtarを呼び出すことにより、これらのファイルを完全にバイパスできます。たとえば、some/pathの下にあるoldTarからのファイルのみをコピーするには、次を使用します。

tar -cf newTar --include='some/path/*' @oldTar

._ファイルは、OS X bsdtarがOS X固有の拡張属性とリソースフォークを処理する方法です。 (これはAppleDoubleとして知られているメカニズムであり、実際にはTARアーカイブ以外にも適用されます。MacOSリソースフォークとFinder情報を保持するためのネイティブメカニズムがないいくつかのストレージ形式で見られます。)

それらがtarファイルに追加されないようにするには、COPYFILE_DISABLE=1をtarの環境変数として。

COPYFILE_DISABLE=1 tar cf newTar.tar /your/files

19
pdo

「._ *」で始まるこれらのファイルは、Appleによる特定のロケーションインジケーターファイル THIS POST によるものであり、端末にログインしているときにそれらを取り除くことはできません) om OSX、同じページによると、Apple以外のOSにファイルをアップロードし、それらのファイルを削除して、再度tarで圧縮する必要があります。これが唯一の解決策のようです。

2
MelBurslan