tar는 아카이브 이름 바꾸기 루트 디렉토리를 생성합니다.

tar는 아카이브 이름 바꾸기 루트 디렉토리를 생성합니다.

tar 아카이브를 생성하고 아카이브 내의 루트 디렉터리 이름을 바꾸려고 합니다. 예를 들어 다음 파일이 있습니다.

$ tree ./repo
./repo
├── 1
├── 2
└── 3
0 directories, 3 files

repo-v1.0.0.tar.gz다음 파일 구조로 아카이브를 생성하고 싶습니다 .

./repo-v1.0.0
├── 1
├── 2
└── 3

이제 추악한 해결 방법을 사용하고 있습니다.

mv "${repo}" ${repo}-${version}"
tar -cvzf "${repo}-${version}.tar.gz" "${repo}-${version}"
mv "${repo}-${version}" "${repo}"

명령 자체를 사용하여 아카이브의 루트 디렉토리 이름을 바꿀 수 있습니까 tar?

답변1

tar선택 이 있습니다 --transform. 전화해도됩니다

tar --transform "s/repo/repo-v1.0.0/" -cvzf repo.tar.gz repo/

답변2

내가 아는 한 Tar는 이름을 바꾸지 않습니다. 그러나 심볼릭 링크를 사용하면 더 간단한 해결 방법을 수행할 수 있습니다.

ln -s "${repo}" ${repo}-${version}"
tar --dereference -cvzf "${repo}-${version}.tar.gz" "${repo}-${version}"

그런 다음 심볼릭 링크를 유지할지 아니면 삭제할지 결정할 수 있습니다.

관련 정보