tar를 사용하여 다른 디렉토리로 추출하려면 어떻게합니까?


18

작동하지 않습니다.

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

적절한 위치에 압축을 풀고 파일을 옮기는 것 외에는 무엇을 할 것인지 분명하지 않습니다.

답변:


28

보낸 사람 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가 기본적으로 동일합니다. 매뉴얼의 "작업 디렉토리 변경"참조 )


4
GNU 이외의 tar 버전으로이 동작을 테스트하는 것이 좋습니다. Solaris 매뉴얼 페이지에는 추가교체 작업 과 함께이 옵션 만 언급되어 있습니다. 궁금해서 추출 작업으로 테스트했습니다 . 솔라리스 ' 타르는 않았다 없는 오류 또는 경고를 발행 = 현재 폴더에 압축 파일을 추출 : - /
KTF

1
또한 tar의 AIX 버전에서는 작동하지 않습니다. '파일 -C가 아카이브에 없습니다'- '-C'는 tarball을 작성하는 데 사용됩니다.
DarkHeart

기본 디렉토리를 새 이름으로 바꿀 수 있습니까?
tofutim

9

다른 곳에서 tar 아카이브를 추출 하려면 대상 디렉토리로 cd 하고 압축을 해제하십시오.

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

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


9

하기:

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

일을 할 것입니다.

기본적 으로이 서브 쉘에서 새 쉘 (괄호)을 생성하여 디렉토리를 변경 foo/bar한 다음 파일을 untar합니다.

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


1
이런 식으로 쉘을 시작할 수 있다는 것은 정말 멋진 일입니다! 당신이 할 수있을 줄 몰랐어요
Kit Sunde

0
tar -xf ancd.tar.gz my/name/file

./filetar 파일 뒤에 파일 이름을 지정할 수 있습니다 .

tar -xf ancd.tar.gz ./my/name/file

작동하는 경우을 사용하여 tar를 만들었습니다 ./. tar 내용을 보려면 적은 명령을 사용하십시오.

less ...tar.file  

0

비슷한 문제로 보이는 문제가 발생하여 해결했습니다.

문제는 생성 된 파일이 아닌 파일 생성에있었습니다.

디렉토리 A에서 파일을 tar하고 전송하려고 할 때 tar 명령에서 원본 파일의 경로를 제공했습니다.

tar -cvf MyFile.tar /foo/bar/dir/not/needed/path/*

내가 해결할 수 있었던 것은

cd /foo/bar/dir/not/needed/
tar -cvf /tmp/MyFile.tar path*

tarball을 전송하고 추출 할 때 필요한 서브 디렉토리가 작성됩니다.

tar -xvf MyFile.tar

0

추출하려는 디렉토리를 변경하십시오.

cd /u02/restore

/u01/backup.tar 아래에 추출 파일의 위치가

다음과 같이 추출하십시오.

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

0

명령 :

tar -xzvf foo.tar.gz -C /home/user/bar/

/home/user/bar처리 된 파일을 인쇄하는 동안 입력 파일 "foo.tar.gz"를 디렉토리로 추출 합니다.

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