特定の解凍順序を持つtarアーカイブ

特定の解凍順序を持つtarアーカイブ

解凍プロセスをできるだけ強力にするために、tar(.gz)アーカイブを特定の順序で解凍して、停電などの問題が発生する可能性を減らしたいと思います。

たとえば、次のディレクトリツリーがあります。

.
├── b
└── foo
    ├── a
    └── c

順番に開梱したい

./foo/a
./b
./foo/c

tarGNUも使用する予定です--format=oldgnu。他のツールも使用できますが、フォーマットが必要です。tarbash

A/ を使用する--appendことが可能でなければなりません(またはそう思いました)。しかし、これまでのすべての試みは失敗しました。たとえば、次のようになります。

  • $ tar c ./foo/a | tar A ./b > test.tar
    tar: Options '-Aru' are incompatible with '-f -'
    
  • $ tar Af <(tar c ./foo/a) ./b > test.tar
    tar: Cannot backspace archive file; it may be unreadable without -i
    tar: /dev/fd/63: Cannot write: Bad file descriptor
    tar: Error is not recoverable: exiting now
    

./foo/c(最初にフォーマットオプションとファイルなしでテストしました。)

答え1

tarアーカイブは生成された順序で解凍されます。

( echo foo; echo foo/a; echo b; echo foo/c ) | tar --no-recursion --files-from=- -cvf /tmp/tar.tar

そして

tar tvf /tmp/tar.tar
drwxr-xr-x roaima/roaima 0 2016-06-27 20:20 foo/
-rw-r--r-- roaima/roaima 0 2016-06-27 20:20 foo/a
-rw-r--r-- roaima/roaima 0 2016-06-27 20:13 b
-rw-r--r-- roaima/roaima 0 2016-06-27 20:20 foo/c

関連情報