具有一定解包顺序的 tar 存档

具有一定解包顺序的 tar 存档

为了使解包过程尽可能健壮,我希望 tar(.gz) 存档按一定顺序解包,以便断电等情况不太可能造成伤害。

作为示例,我有以下目录树:

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

我希望它们按顺序拆包

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

我 计划使用GNUtar以及--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

相关内容