tarコマンドで ._ ファイルが生成される原因と削除・抑制方法

# tarコマンドで ._ ファイルが生成される原因と削除・抑制方法
tarコマンドを使用してファイルを圧縮・展開する際に、突然 ._ という名前のファイルが生成されることがあります。これらのファイルはMac OS Xでよく見られます。この記事では、tarコマンドが ._ ファイルを生成する原因と、これらのファイルを削除・抑制する方法について説明します。
tarコマンドが ._ ファイルを生成する主な原因は、macOSの環境でファイルを展開する際に、デフォルトでMac OS X 互換モードが有効な状態でtarコマンドが動作することです。このモードは、Mac OS Xのファイルシステムの特徴を考慮してファイルを展開するために使用されますが、結果として ._ ファイルが生成されることがあります。
この記事では、これらのファイルを削除する方法と、tarコマンドのオプションを使用して ._ ファイルの生成を抑制する方法について説明します。
tarコマンドで ._ ファイルが生成される原因
tarコマンドを使用すると、ファイルを展開した後に ._ という名前のファイルが突然出現することがあります。これらのファイルはMac OS Xでよく見られます。tarコマンドが ._ ファイルを生成する主な原因は、macOSの環境でファイルを展開する際に、デフォルトでMac OS X 互換モードが有効な状態でtarコマンドが動作することです。このモードは、Mac OS Xのファイルシステムで使用される拡張属性を保存するために使用されます。
tarコマンドが ._ ファイルを生成するもう一つの原因は、ファイルのメタデータを保存するために使用されるAppleDoubleフォーマットです。このフォーマットは、Mac OS Xのファイルシステムで使用されるファイルのメタデータを保存するために使用されます。tarコマンドがAppleDoubleフォーマットを使用してファイルのメタデータを保存すると、 ._ ファイルが生成されます。
これらのファイルは、通常のファイルとは異なる名前と内容を持ちます。名前は元のファイル名の前に ._ が付加され、内容は元のファイルのメタデータを含みます。通常、これらのファイルは必要ありませんが、Mac OS Xのファイルシステムで使用される拡張属性を保存するために使用されることがあります。
_ ファイルを削除する方法
# 以外のファイルを削除する方法は、ファイルシステムを検索して ._ ファイルを削除することです。find コマンドを使用して、カレントディレクトリ以下のすべての ._ ファイルを削除することができます。
find . -name "._*" -delete
このコマンドは、カレントディレクトリ以下のすべてのファイルを検索し、ファイル名が ._ から始まるファイルを削除します。ただし、このコマンドを使用する前に、削除されるファイルを確認するために、-delete オプションを外して実行することをお勧めします。
find . -name "._*"
このコマンドを実行すると、カレントディレクトリ以下のすべての ._ ファイルが表示されます。削除されるファイルを確認した後、-delete オプションを追加して実行することで、 ._ ファイルを削除することができます。
_ ファイルの生成を抑制する方法
tarコマンドで ._ ファイルの生成を抑制するには、tarコマンドのオプションを使用することができます。たとえば、--strip-components=1 オプションを使用することで、 ._ ファイルの生成を抑制することができます。このオプションは、tarコマンドがアーカイブを展開する際に、指定された数のディレクトリレベルをスキップするように指示します。
また、--exclude オプションを使用して、特定のファイルやディレクトリを展開から除外することもできます。たとえば、tar -xvf アーカイブ名.tar --exclude '._*' とすることで、 ._ ファイルを展開から除外することができます。
さらに、tarコマンドのバージョンによっては、--disable-mac-metadata オプションを使用して、Mac OS X のメタデータを無効にすることができます。このオプションは、 ._ ファイルの生成を抑制するのに役立ちます。ただし、このオプションはすべてのtarコマンドのバージョンでサポートされているわけではないため、使用する前にバージョンを確認する必要があります。
まとめ
tarコマンドを使用すると、ファイルを展開した後に ._ という名前のファイルが突然出現することがあります。これらのファイルはMac OS Xでよく見られます。tarコマンドが ._ ファイルを生成する主な原因は、macOSの環境でファイルを展開する際に、デフォルトでMac OS X 互換モードが有効な状態でtarコマンドが動作することです。
これらのファイルは、Mac OS Xのファイルシステムで使用される拡張属性を保存するために生成されます。Mac OS Xでは、ファイルに拡張属性を付与することができますが、tarコマンドはこれらの属性を保存するために ._ ファイルを生成します。したがって、Mac OS Xでtarコマンドを使用する場合、 ._ ファイルが生成される可能性があります。
これらのファイルを削除するには、findコマンドを使用して、 ._ ファイルを検索し、削除することができます。たとえば、find . -name ._* -deleteコマンドを使用すると、カレントディレクトリ以下のすべての ._ ファイルを削除することができます。また、tarコマンドのオプションを使用して、 ._ ファイルの生成を抑制することもできます。たとえば、--strip-components=1オプションを使用することで、 ._ ファイルの生成を抑制することができます。
まとめ
tarコマンドで ._ ファイルが生成される原因と削除・抑制方法について説明しました。Mac OS Xの環境でtarコマンドを使用する場合、 ._ ファイルが生成される可能性がありますが、findコマンドやtarコマンドのオプションを使用して、これらのファイルを削除または抑制することができます。
よくある質問
tarコマンドで ._ ファイルが生成される原因は何ですか?
tarコマンドで ._ ファイルが生成される原因は、Mac OS XやmacOSなどのシステムで、ファイルのメタデータを保存するために使用されるAppleDoubleフォーマットが関係しています。このフォーマットでは、ファイルのメタデータを別のファイルに保存し、そのファイル名の先頭に ._ を付加します。tarコマンドでこのようなファイルをアーカイブすると、元のファイルと一緒に ._ ファイルも生成されます。
生成された ._ ファイルを削除する方法はありますか?
生成された ._ ファイルを削除する方法はいくつかあります。一つは、tarコマンドの -x オプションを使用してアーカイブを展開する際に、._ ファイルを無視するように指定することです。具体的には、tar -xvf アーカイブ名.tar --exclude '._*' というコマンドを使用します。もう一つの方法は、展開後に find コマンドを使用して ._ ファイルを検索し、削除することです。具体的には、find . -name '._*' -delete というコマンドを使用します。
tarコマンドで ._ ファイルの生成を抑制する方法はありますか?
tarコマンドで ._ ファイルの生成を抑制する方法はいくつかあります。一つは、tarコマンドの --disable-copyfile オプションを使用することです。このオプションを指定すると、tarコマンドは ._ ファイルを生成しません。具体的には、tar -cvf アーカイブ名.tar 元のファイル --disable-copyfile というコマンドを使用します。もう一つの方法は、環境変数 COPYFILE_DISABLE を設定することです。この変数を 1 に設定すると、tarコマンドは ._ ファイルを生成しません。
WindowsやLinuxでtarコマンドを使用しても ._ ファイルが生成されることはありますか?
WindowsやLinuxでtarコマンドを使用しても、通常は ._ ファイルが生成されることはありません。これは、WindowsやLinuxでは、ファイルのメタデータを保存するためにAppleDoubleフォーマットを使用しないためです。ただし、WindowsやLinuxでMac OS XやmacOSから移行したファイルをtarコマンドでアーカイブする場合、._ ファイルが生成される可能性があります。
コメントを残す
コメントを投稿するにはログインしてください。

関連ブログ記事