GNU tarのマンページには次のように記載されています。
デフォルトは--sort = noneで、オペレーティングシステムによって返された順序でアーカイブメンバーを保存します。
それでは、オペレーティングシステムは何を返しますか?特に、次のような場合に興味があります。保証するtar項目をコマンドライン引数として渡すとき
tar -cf file.tar a b c
a
、b
およびの順序c
が維持されます。
答え1
指定されたソート順--sort
ただコマンドラインで指定されたファイルとディレクトリのサブディレクトリの順序に影響します。コマンドラインで指定されたパスの順序には影響しません。
あなたの場合、コマンド
tar -cf file.tar a b c
指定された順序に関係なく、ファイルはa
最初にアーカイブされ、次にb
アーカイブされます。これらのいずれかがディレクトリの場合は、そのディレクトリ内のファイルとサブディレクトリが追加される順序には影響しますが、およびの順序には影響しません。c
--sort
--sort
a
b
c
オペレーティングシステムは、使用時に表示されるのと同じ順序でエントリを返しますls -f
。順序は、ディレクトリノードがエントリを保存する順序であり、ファイルが追加および削除される順序(ファイルシステムの実装によって異なります)など、さまざまな要因によって異なります。