tar-추출시 선행 디렉토리 구성 요소 제거


104

완전한 디렉토리 트리가 아닌 대상 디렉토리 만 어떻게 추출 할 수 있습니까?

압박 붕대

tar cf /var/www/site.tar /var/www_bak/site

추출물

tar xf /var/www/site.tar -C /tmp

이것은 다음을 생성합니다 :

/tmp/var/www/site

파일을 추출 할 때 전체 디렉토리 트리가 작성되지 않도록하려면 어떻게해야합니까?

내가 추출하고 싶은 것 :

/tmp/site

답변:


34

-C작성시 옵션을 사용하지 않는 이유 :

$ tar cf /var/www/site.tar -C /var/www_bak/ site

1
TMTOWTDI. 동일한 -C옵션을 사용하여 작동합니다 .;)
MikeyB

12
그는 출력 디렉토리를 변경하지 않고 일부 주요 구성 요소에서 경로를 제거하려고합니다. 정답은 아래를 참조하십시오.
aymericbeaumet

4
다른 사람이 보관 파일을 준비 할 때 사용할 수 없습니다.

```_t = prefix-$ (date + % Y % m % d); tar -cjf ".backups / $ _ t.tar.bz2"--transform = "s # ^ (\ ./)? # $ _ t / # x;" -파일 ...; tar -df ".backups / $ _ t.tar.bz2"
strip

258

다음 --strip-components=NUMBER옵션 을 사용하려고합니다 tar.

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction

당신의 명령은 다음과 같습니다.

tar xfz /var/www/site.gz --strip-components=2 -C /tmp

19
이 답변은 tar를 작성하기 전에 생각할 필요가 없기 때문에 더 좋습니다. 이미 작성된 tar 파일과 함께 사용할 수 있습니다. 감사합니다 @MikeyB!
Fabien Quatravaux

4
나는 이것이 GNU tar와 BSD tar에서 모두 작동한다는 것을 기쁘게 생각합니다.
Nathan Osman

4
그리고 당신은 타르 제작자가 아닐 수도 있기 때문에 ... (또는 다른 도구로 작업을하고 있고 그 도구가 바보 같은 일을한다면 ...)
xenoterracide

그럼에도 불구하고 --strip-componentsbusybox-embedded 구현을 사용하는 경우 여전히 플래그 가 누락되었을 수 있습니다 tar.
sylvainulg

1
@FabienQuatravaux 글쎄요. 만약 실수를해서 추출 중에보고 싶지 않은 디렉토리를 포함하는 아카이브를 만들었다면. 그러나 우선 원치 않는 디렉토리를 사용하지 않고 아카이브를 빌드하는 것이 더 명확합니다.
Calaf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.