tar를 사용하여 다른 디렉토리로 추출하는 방법은 무엇입니까?

tar를 사용하여 다른 디렉토리로 추출하는 방법은 무엇입니까?

이것은 작동하지 않습니다:

tar xf /tmp/foo.tar.gz foo/bar
tar: foo/bar: Not found in archive

파일을 제자리에 추출하고 이동하는 것 외에 무엇을 해야 할지 명확하지 않습니다.

답변1

에서 man tar:

     -C directory
         In c and r mode, this changes the directory before adding the
         following files.  In x mode, change directories after opening the
         archive but before extracting entries from the archive.

즉, tar xC /foo/bar -f /tmp/foo.tar.gz작업을 완료해야 합니다. (FreeBSD에서는그러나 GNU tar는 이 점에 있어서 기본적으로 동일합니다. 매뉴얼의 "작업 디렉토리 변경"을 참조하십시오.)

답변2

다른 곳에서 tar 아카이브를 추출하려는 경우CD대상 디렉터리로 이동하여 거기에서 압축을 풉니다.

 mkdir -p foo/bar
 cd foo/bar
 tar xzvf /tmp/foo.tar.gz

foo/bar사용하는 명령은 아카이브에서 파일을 검색하고 추출합니다.

답변3

행위:

(cd foo/bar ; tar xf /tmp/foo.tar.gz )

일을 할 것입니다.

기본적으로 이것이 수행하는 작업은 새 셸(괄호)을 생성하고 이 하위 셸에서 디렉터리를 로 변경한 foo/bar다음 파일의 압축을 푸는 것입니다.

;이를 변경하여 제대로 작동하는지 &&확인할 수 있습니다.cd

답변4

추출할 디렉터리를 변경합니다.

cd /u02/restore

압축이 풀린 파일이 /u01/backup.tar 아래에 있는 경우

발췌 내용은 다음과 같습니다.

cd /u02/restore
tar -xvf /u01/backup.tar

관련 정보