5GB 에서이 명령을 사용하고 있습니다. 아카이브
tar -zxvf archive.tar.gz /folder/in/archive
이 작업을 수행하는 올바른 방법입니까? 명령 줄 출력없이 시간이 오래 걸리는 것 같습니다 …
설명
답변
tar
는 상대 경로를 기본적으로 저장합니다. GNU tar는 절대 경로를 저장하려는 경우에도 그렇게 말합니다.
tar -cf foo.tar /home/foo tar: Removing leading `/" from member names
특정 폴더를 추출해야하는 경우 tar 파일 :
tar -tvf foo.tar
정확한 파일 이름을 기록합니다. foo.tar
파일의 경우 다음과 같이 말하여 /home/foo/bar
를 추출합니다.
tar -xvf foo.tar home/foo/bar # Note: no leading slash
아니요, 게시 한 방식이 (필연적으로) 정확하지 않습니다. 그것을하는 방법. 선행 슬래시를 생략해야합니다. 절대 경로를 시뮬레이션하려면 먼저 cd /
를 수행하고 “수퍼 유저인지 확인하십시오. 또한 다음과 같이 수행됩니다.
tar -C / -xvf foo.tar home/foo/bar # -C is the ‘change directory’ option
tar
가 경로를 상대 경로로 변환하는 데에는 매우 분명하고 합당한 이유가 있습니다. 하나는 원래 소스가 아닌 다른 위치에서 아카이브를 복원 할 수있는 기능입니다. 다른 하나는 보안입니다. 아카이브의 압축을 풀고 파일이 현재 작업 디렉토리에 나타날 것으로 예상하고 대신 실수로 다른 곳에 시스템 파일 (또는 자신의 작업)을 덮어 쓸 수 있습니다.
참고 : -P
옵션, tar
절대 경로를 보관합니다. 따라서 압축을 풀기 전에 항상 큰 아카이브의 내용을 확인하는 것이 좋습니다.
댓글
-
--strip-components=N
는 여기에 유용 할 수 있습니다. - 제 경우에는 iv id = “23 대신
./foldername/
를 작성해야했습니다. 16b5075f “>
, tar를 만들 때 tar -cvf santi.tar ./*
로 만들었고 "로 만들었 기 때문인 것 같습니다. 나열 됨 " tar 이것이 말한 내용입니다. drwxr-xr-x santi/santi 0 2016-04-11 09:42 ./foldername/
.gz
? -xvf
를 -xzvf
로 변경합니다 (-z
옵션) 및 분명히 foo.tar
에서 foo.tar.gz
또는 아카이브 이름이 무엇이든간에. -j
(bz2) 및 일부 최신 버전 인 -J
(xz)에 대해서도 동일하게 적용됩니다. 그렇지 않으면 zcat foo.tar.gz | tar -xvf - …
와 같은 파이프 라인도 작동합니다. tar -tf foo.tar
및 tar -xf foo.tar ...
.
tar
가cat /proc/$(pidof tar)/fdinfo/0
를 사용하여 아카이브에서 얼마나 멀리 있는지 확인할 수 있습니다 (하나 이상의tar
프로세스 실행 중).folder/folder2/
를 사용하면 ' 작동하지 않습니다.