解凍プロセスをできるだけ強力にするために、tar(.gz)アーカイブを特定の順序で解凍して、停電などの問題が発生する可能性を減らしたいと思います。
たとえば、次のディレクトリツリーがあります。
.
├── b
└── foo
├── a
└── c
順番に開梱したい
./foo/a
./b
./foo/c
tar
GNUも使用する予定です--format=oldgnu
。他のツールも使用できますが、フォーマットが必要です。tar
bash
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