tar : 부모 디렉토리에 'cd'가없는 임의의 선행 디렉토리로 tar 파일을 만드는 방법


23

파일 디렉토리가 있다고 가정 해보십시오.

/home/user1/dir1

그리고 나는 "dir1"을 주요 디렉토리로 사용하여 tar를 만들고 싶다 :

/dir1/file1
/dir1/file2

먼저 디렉토리에 CD를 넣을 수 있다는 것을 알고 있습니다

cd /home/user1/
tar czvf dir1.tar.gz dir1

그러나 스크립트를 작성할 때 디렉토리에서 디렉토리로 점프하는 것이 항상 유리한 것은 아닙니다. 현재 디렉토리를 변경하지 않고 절대 경로로 수행 할 수있는 방법이 있는지 궁금합니다.

나는 항상 절대 경로를 가진 tar 파일을 만들고 내부를 사용할 수 있다는 것을 알고있다.

--strip-components 

추출 할 때 때때로 추가 경로 이름은 tar 파일과 함께 배포하지 않으려는 추가 개인 정보입니다.

감사!

답변:


24

tar -C 디렉토리 변경

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

btw, 디렉토리 변경을 추적하기에 편리한 하나 ... 푸시 및 팝 사용.

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
감사. "-C"옵션을 다른 옵션보다 먼저 사용해야한다는 것을 몰랐습니다. "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /"을 시도했지만 작동하지 않았습니다.

1
작동하지 않습니다 : tar : dir : stat : 통계 : 해당 파일 또는 디렉토리가 없습니다 (dir1이 / home / user1 / 아래에 있다고 가정)
tribbloid

21

gnu tar를 사용하면 다음과 같이 실제 디렉토리와 다른 기본 디렉토리로 아카이브를 작성할 수 있습니다.

tar -c --transform 's,^\.,mybasedir,' .

sed 표현을 필요에 맞게 조정하십시오.


5

그래, 나도 알아

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

또한 내가 원하는 방식으로 일했습니다.


"*"와 같은 와일드 카드는하지 작업 할 수 있지만
커티스 Yallop

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.