GNU tar(1)
에는 깔끔한 옵션이 --transform
있습니다. 매뉴얼 페이지에서 :
--transform, --xform EXPRESSION
sed replace EXPRESSION을 사용하여 파일 이름을 변환
이를 통해 아카이브를 추출 할 때 경로 이름을 즉시 변환 할 수 있으므로 추출 위치 및 방법을 제어 할 수 있습니다.
내 질문은, 현장에서 유사한 변환을 수행 할 수있는 방법이 있는지 이다 즉, 아카이브를 추출하지 않고?
예
[user@host]$ tar tf test.tar
./foo/blah ./foo/bleh
[user@host]$ some_deep_magic 's/foo/bar/' test.tar
[user@host]$ tar tf test.tar
./bar/blah ./bar/bleh
사용 사례
tar
기본적으로 실마리가없는 최종 사용자에게 아카이브를 배포하고 있으며 간섭없이 올바른 경로로 추출하고 싶습니다. 아카이브를 추출하고 디렉토리 이름을 바꾸고 아카이브가 게으 르기 때문에 다시 포장하는 사소한 해결책을 피하려고합니다.
이름을 만들 때 왜 이름을 변환하지 않습니까?
—
Jose Luis Martin
@JoseLuisMartin 맞습니다. 필자의 유스 케이스는 아카이브가 이미 존재하며 내가 말했듯이 포장 풀기, 변형 및 재 포장을 피하고 싶습니다.
—
Joseph R.
실제로 tar 스트림을 디스크로 추출하지 않고 tar 스트림을 수정할 수 있습니다. github.com/mafintosh/tar-stream#modifying-existing-tarballs , perldoc.perl.org/5.10.1/Archive/Tar.html 등
—
vladr