为了使解包过程尽可能健壮,我希望 tar(.gz) 存档按一定顺序解包,以便断电等情况不太可能造成伤害。
作为示例,我有以下目录树:
.
├── b
└── foo
├── a
└── c
我希望它们按顺序拆包
./foo/a
./b
./foo/c
我 计划使用GNUtar
以及--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