tar를 사용하여 특정 폴더를 다른 폴더로 추출 할 수 있습니까?


14

나는 리눅스의 세계에 익숙하지 않으며 걸림돌에 빠진 것 같습니다. 내가 명령을 사용하여을 구체적으로 아카이브를 추출 할 수 있습니다 알고 tar xvfz archivename.tar.gz sampledir/내가 추출 할 수있는 방법 그러나 sampledir/testdir/아카이브가 egcurrently 아카이브가 경로에에 있는지 경로보다는 /tmp/archivename.tar.gz내가 추출하고 싶은 sampledirtestdir있는 경로에 /tmp/testdir.

답변:


19

찾고있는 것은 -C옵션입니다.

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

귀하의 예에 따른 사용법 :

$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/

또한 최신 버전의 플래그는 gzipped 파일의 압축을 풀 tarz플래그가 필요하지 않습니다 . 그들은 그것이 .gz자동으로 올바른 일을하고 있음 을 알게 될 것입니다.


감사. 재미있게 나는 질문을 게시하기 전에 시도했지만 실패했습니다. 어쩌면 나는 옵션을 놓쳤다. 다시 시도하겠습니다.
PeanutsMonkey

광휘. 큰 아카이브의 경우 항상 이것을 잊어 버립니다.
zmonteca

3

당신은 모든 것을 untarring 미친 게임을 할 필요가 없습니다. Tar은 다음과 같은 (사소한) 예와 같이 아카이브에서 파일의 서브 세트 추출 만 완전히 지원합니다.

/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a    
/tmp/tardest $ ls -R
.:
a/

./a:
aaa

요령은 경로 스펙이 tarfile의 내용과 정확히 일치해야한다는 것입니다. 따라서을 시작할 때 tar tf경로가로 시작하면 경로를 입력해야하며 경로가 없으면 경로 ./를 떠나야합니다. 또한 서브-서브-서브-서브-서브-서브-서브-경로를 추출하려는 경우, 파일 시스템에서 N 레벨까지 끝납니다.


고마워요 어쩌면 사용하는 올바른 예는 아니지만 tar를 Winzip, WinRAR 등과 비교하고 tar는 gzip 및 bzip 파일을 아카이브하지 않는 tar의 예를 보았지만 tar는 잘못된 명령입니다. 유사한 프로세스를 적용하십시오. 예를 들어 보관 취소하려는 파일을 선택하고 (tar는이 작업을 수행함) 추출 할 경로를 선택하십시오 (tar는 특정 디렉토리에 있지 않으면이 작업을 수행하지 않습니다).
PeanutsMonkey

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