대규모 tar.gz 아카이브에서 단일 폴더를 어떻게 추출합니까?

대규모 tar.gz 아카이브에서 단일 폴더를 어떻게 추출합니까?

나는 이 명령을 다음에서 사용하고 있습니다.5GB보관소

tar -zxvf archive.tar.gz /folder/in/archive

이것이 올바른 방법입니까? 명령줄 출력이 없으면 영원히 걸리는 것 같습니다...

답변1

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 ~ 할 것이다절대 경로를 보관하십시오. 따라서 추출하기 전에 항상 큰 아카이브의 내용을 확인하는 것이 좋습니다.

관련 정보