tar 추출은 파일 이름에 따라 달라집니까?

tar 추출은 파일 이름에 따라 달라집니까?

나는 종종 wget을 사용하여 sourceforge.net에서 tarball을 다운로드합니다.

그런 다음 다운로드한 파일의 이름을 지정합니다.SQliteManager-1.2.4.tar.gz?r=http:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F&ts=1305711521&use_mirror=switch

내가 시도할 때

tar xzf SQliteManager-1.2.4.tar.gz\?r\=http\:%2F%2Fsourceforge.net%2Fprojects%2Fsqlitemanager%2Ffiles%2F\&ts\=1305711521\&use_mirror\=switch

다음과 같은 오류 메시지가 나타납니다.

tar (child): Cannot connect to SQliteManager-1.2.4.tar.gz?r=http: resolve failed

gzip: stdin: unexpected end of file
tar: Child returned status 128
tar: Error is not recoverable: exiting now

파일 이름을 바꾸면 foo.tar.gz압축 해제가 완벽하게 작동합니다.

추출할 때마다 대상 파일의 이름을 바꿀 필요가 없는 방법이 있습니까?

답변1

표시되는 오류의 원인은 다음에서 찾을 수 있습니다.GNU tar 문서:

보관 파일 이름에 콜론(':')이 포함되어 있으면 다른 컴퓨터에 있는 파일로 간주합니다[...]

즉, 이를 SQliteManager-1.2.4.tar.gz?r=http호스트 이름으로 해석하고 이를 IP 주소로 확인하려고 시도하므로 "확인 실패" 오류가 발생합니다.

같은 문서는 계속해서 다음과 같이 말합니다.

이름에 콜론이 포함된 파일을 사용해야 하는 경우 "--force-local" 옵션을 사용하여 원격 테이프 드라이브 동작을 억제할 수 있습니다.

답변2

다운로드를 사용할 때 wget옵션을 사용하여 출력 파일 이름을 지정하십시오 -O.

wget "http://domain.com/file.tgz?crazy=args&stuff=todelete" -O file.tgz

이렇게 하면 파일이 지정된 파일 이름으로 저장되고 이름을 바꾸는 수고를 덜 수 있습니다. 아니요, sourcefourge가 추가 URL 매개변수가 있는 파일을 전달할 만큼 어리석지 않기를 바라는 사람은 당신뿐만이 아닙니다.

답변3

다운로드 및 사용

wget --trust-server-names URL

이렇게 하면 wget이 올바른 파일 이름으로 저장합니다. 기본적으로 URL의 마지막 구성 요소를 사용합니다.

예를 들어

wget --trust-server-names http://sourceforge.net/projects/sqlitemanager/files/sqlitemanager/1.2.4/SQliteManager-1.2.4.tar.gz/download

답변4

이미 다운로드한 파일의 경우 다음과 같이 작동합니다.

tar xzf - < SQliteManager-1.2.4.tar.gz*

관련 정보