나는 종종 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*