tar를 사용하여 특정 폴더를 다른 폴더로 추출 할 수 있습니까? 아카이브를 추출 할 수 있습니다 알고

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



답변

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

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

귀하의 예에 따른 사용법 :

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

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


답변

당신은 모든 것을 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 레벨까지 끝납니다.


답변