`타르 C| tar x`가 예상치 못한 경로에 파일을 씁니다.

`타르 C| tar x`가 예상치 못한 경로에 파일을 씁니다.

다음 명령을 사용하는 경우:

cd /Users/you/foo 
tar c /Users/you/x/y/z | tar x

/Users/you/x/y/z로컬 디렉터리 에 다음 경로를 씁니다 .

/Users/you/foo/Users/you/x/y/z

파일이 여기에 기록되도록 tar 명령 중 하나를 어떻게 변경합니까?

/Users/you/foo/z

내 MacOS 컴퓨터의 Man tar는 이 문제에 대한 확실한 해결책을 제시하지 못했으며 이 동작을 변경할 수 있는지 확실하지 않습니다.

답변1

내가 물건을 복사할 때 하는 일은 다음과 같습니다.

tar c here/is/the/stuff | (cd /where/it/should/go; tar x)

설명: stdout의 첫 번째 패키지는 디렉토리를 변경한 다음 tar두 번째 명령을 실행하는 하위 쉘인 두 번째 명령으로 파이프됩니다 . 예를 들어 파일 완성을 사용하려면 혼동되는 이름을 처리하는 것이 좋습니다. 또는 작업을 수행하기 전에 디렉터리를 변경하는 옵션을 사용할 수 있습니다. 예를 들면 다음과 같습니다.(tar-C

tar c here/is/the/stuff | tar -C /where/it/should/go -x

답변2

출력을 표준 출력에 쓸 수 있는 -O 옵션을 사용하여 이 작업을 수행했다고 생각합니다 tar x. 따라서 다음과 같습니다.

tar c /Users/you/x/y/z | tar x -O > z.tgz

이 기술의 한 가지 문제점은 여러 파일 쓰기를 지원하지 않는 것 같다는 것입니다.

tar c z1 z2 z3 | tar x -O > z.tgz

z.tgz는 z3만을 나타내는 것 같은데...

관련 정보