플랫 tar 아카이브 생성: 폴더 추가 시 모든 상위 항목 무시

플랫 tar 아카이브 생성: 폴더 추가 시 모든 상위 항목 무시

새 tar 아카이브에 일부 폴더를 (재귀적으로) 추가하고 싶습니다. 모든 폴더는 생성된 아카이브의 루트 수준에 위치해야 합니다. 상위 폴더 없이, cd해당 디렉터리에 먼저 들어가 단계적으로 추가 하지 않고 모든 폴더를 추가할 수 있는 방법이 있습니까 ?

다음 디렉터리 구조를 고려하세요.

.
├── bar
│   ├── bar-file
│   └── barsub
│       └── barsub-file
└── foo
    ├── foo-file
    └── foosub
        └── foosub-file

추가하고 싶습니다술집그리고토미코tar 아카이브로.

# add folders with different parents
# could be e.g. /some/foo/foosub and /other/bar as well
$ tar cvf archive.tar bar foo/foosub
a bar
a bar/bar-file
a bar/barsub
a bar/barsub/barsub-file
a foo/foosub
a foo/foosub/foosub-file

하지만 내가 원하는 건

.
├── bar
│   ├── bar-file
│   └── barsub
│       └── barsub-file
└── foosub
    └── foosub-file

그런 것을 쉽게 만들 수 있는 방법이 있나요?평평한Tar 파일?

답변1

GNU 또는 FreeBSD tar를 사용하면 아카이브에 파일을 추가하거나 추출할 때 파일 이름을 변환할 수 있습니다.

tar czf foo.tgz --transform='!^bar/!!' bar/ foo

이식 가능하게도 동일한 작업을 수행할 수 있습니다.공원.

pax -w -pe -s'!^bar/!!' foo bar/

답변2

tar cvf archive.tar bar -C /path/to/foo/ .

관련 정보