tar wget 的结果

tar wget 的结果

我想要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 命令来实现这一目标的方法。显然,您可以自己编写一些东西,例如使用pythonrequesttarfile模块,如果您擅长编码,那么这应该不会太困难。

在那之前,或者如果您必须依赖可用的 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发送输出文件

相关内容