특정 압축 풀기 순서가 있는 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

관련 정보