Shell

tar 提取取決於文件 名?

  • December 5, 2021

我經常從 sourceforge.net 下載帶有 wget 的壓縮包。

然後命名下載的文件,例如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提取後工作完美。

有沒有一種方法,在提取之前我不會每次都強制重命名目標文件?

您看到的錯誤原因可以在GNU tar 文件中找到:

如果存檔文件名包含冒號 (’:’),則假定它是另一台機器上的文件

$$ … $$

也就是說,它被解釋SQliteManager-1.2.4.tar.gz?r=http為主機名並嘗試將其解析為 IP 地址,因此出現“解析失敗”錯誤。

同樣的文件繼續說:

如果您需要使用名稱中包含冒號的文件,則可以通過使用“–force-local”選項來禁止遠端磁帶驅動器行為。

引用自:https://unix.stackexchange.com/questions/13377