
압축 풀기 프로세스를 최대한 강력하게 만들기 위해 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