새 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/ .