tar 명령 매뉴얼을 읽는 동안 옵션 오류가 발생했습니다 --strip-components
. 매뉴얼의 예는 3개의 파일이 있는 디렉토리를 포함하는 tar 파일이 있다는 것입니다. tar 명령을 사용하여 나열하면 다음과 같습니다.
$tar -tf music.tar
practice/
practice/blues
practice/folk
practice/jazz
설명서에 따르면--strip-components
옵션
특정 수의 주요 디렉터리 구성 요소를 제거할 수 있습니다.
그리고
tar --extract --file=music.tar --strip-components=1 folk
" " 파일을
folk
현재 작업 디렉토리에 추출합니다.
하지만 Ubuntu에서 이 명령을 실행하면 다음 오류가 발생합니다.
tar: folk: Not found in archive
tar: Exiting with failure status due to previous errors
내 타르 버전은 1.34입니다. 게다가 아래 명령어를 실행하니folk 파일이 성공적으로 추출되었습니다.
tar --extract --file=music.tar --strip-components=1 practice/folk
매뉴얼과 옵션에 대해 제가 오해하고 있는 것이 있나요 --strip-components
? 아니면 설명서에 뭔가 문제가 있는 걸까요?
답변1
해당 특정 예는 잘못된 것입니다. 여전히 아카이브 내 파일의 전체 경로를 지정해야 합니다. 그렇지 않으면 tar 파일이 제공됩니다. 예를 들면 다음과 같습니다.
$ tar -tf foo.tar
a/
a/folk
b/folk
b/blues
tar
어떤 파일을 참조하고 있는지 알 수 없습니다 tar --extract --file=foo.tar --strip-components=1 folk
.
이 부분을 녹음하세요 --strip-components
(6.7 파일명 및 멤버명 수정) 올바른 예가 있습니다.
예를 들어,
/usr
전체 " " 계층을 " "이라는 tar 아카이브에 아카이브 했다고 가정합니다usr.tar
. 다른 파일 중에서 이 아카이브에는usr/include/stdlib.h
현재 작업 디렉토리에 추출하려는 " "이(가) 포함되어 있습니다. 이렇게 하려면 다음을 입력합니다.$ tar -xf usr.tar --strip=2 usr/include/stdlib.h
' ' 옵션은 tar에게 파일 이름에서
--strip=2
앞의 두 부분('usr/
' 및 ' ') 을 제거하도록 지시합니다.include/
위의 호출에 '
--verbose
'(' ') 옵션을 추가하면 자세한 목록에 여전히 전체 파일 이름이 포함되어 있고 제거된 두 구성 요소가 여전히 존재한다는 것을 알 수 있습니다.-v