macOSで作成されたTarファイルがLinuxで抽出時にエラーを表示する(2024年)

macOSで作成されたtar.gzアーカイブをLinux環境で展開すると、「._」で始まるファイルに関する警告が表示される現象についての記事です。この問題は、macOSとLinuxの拡張属性(extended attributes)に対する異なるアプローチから生じます。

macOSで作成されたtar.gzアーカイブをLinux環境で展開すると、「._」で始まるファイルに関する警告が表示される現象についての記事です。この問題は、macOSとLinuxの拡張属性(extended attributes)に対する異なるアプローチから生じます。

macOSは、Finder、Gatekeeper、その他のシステムコンポーネントと連携するため、ファイルシステムのメタデータを保持することを優先します。BSD tarがmacOS標準ツールとして使用され、これらのメタデータをアーカイブに含めるため、Linux環境ではこれらのmacOS固有の属性を認識できず、警告が生成されるのです。

技術的に重要な点は、これらが実際のシステムエラーではなく、単にメタデータが無視されていることについての警告であるということです。ファイル内容には影響を与えず、拡張属性が失われるだけです。

Appleの設計思想は、Mac間でのアーカイブのラウンドトリップ時にサイレントなデータ損失を避けることを目的としており、copyfile(3)やArchive Utilityの動作との整合性を保つものです。クロスプラットフォーム互換性とメタデータ保持のバランスについて、異なるOSのアプローチの違いを象徴する重要な事例となっています。

HNの反応

コメント者たちは、これが実際のエラーではなく単なる警告であることで共通認識を示しており、特に元Appleエンジニアからは、macOSのメタデータ保持戦略が合理的で設計意図があることが説明されています。

注目コメント

「元Appleエンジニアです。これはAppleのやり方で、良い悪いは別として、このタイプの問題に対するAppleのアプローチです。Appleの観点からすると、FinderやGatekeeperのセマンティクスとメタデータを保持する方法です。Mac間でアーカイブをラウンドトリップさせる際の無言のデータ損失を避けます。この動作はcopyfile(3)(およびArchive Utilityの動作)との一貫性も保ちます。」— @LatencyKills

元記事を読むHN討議を見る