我想要wget
一个文件tar
,并且用一个命令,我想这很简单,但我无法完成它。我尝试了几件事。
wget <url> | tar -cvz file.gz.tar -
tar -cvzf file.tar `wget <url>`
wget -qO <url> | tar -cvf file.tar
wget <url> -O - | tar
有什么帮助吗?
答案1
您确实想要tar
该文件还是正在寻找将文件下载为压缩形式。压缩文件只是将(未压缩的)文件捆绑到(未压缩的)存档中。如果您想将文件下载到压缩文件中,可以使用:
wget -qO - <url>|gzip -c - > file.gz
答案2
您不能以这种方式处理输入流。它旨在处理文件。如果您成功创建了您所描述的档案,它会是什么样子?你会如何解压它?不需要创建文件名,只有数据。
我认为最好的选择是获取该文件并用两个单独的命令将其压缩。如果您不希望文件保留在驱动器上,可以使用 tar 的--remove-files
标志:
wget http://example.com/filename && tar cvzf file.tgz --remove-files filename
答案3
这不会按照您想要的方式工作。一个文件(显然带有文件名)需要存储在 tar 中。如果您只是将下载的内容通过管道传输到tar
.我没有看到任何方法来告诉tar
它应该打包stdin
并指定文件名。
也就是说,我确实没有找到使用标准 UNIX 命令来实现这一目标的方法。显然,您可以自己编写一些东西,例如使用python
和request
和tarfile
模块,如果您擅长编码,那么这应该不会太困难。
在那之前,或者如果您必须依赖可用的 unix 命令,您将需要坚持下载到临时文件、去皮,然后删除该文件。为了不需要多次指定文件名,我建议使用变量:
DOWNLOAD=<FILENAME>; wget <DOMAIN>/$DOWNLOAD && tar -cvf $DOWNLOAD.tar --remove-files $DOWNLOAD
答案4
wget -qO - <url> |gzip -c > file_name.gz
-c
对于标准输出。这是>
用过的。使用标准输出库从 wget 序列化文件到 file_name.gz。
-qO
发送输出文件