我正在尝试从正在传递的文件内容中创建一个zip文件,例如
mysql [params and query] | zip -q output.zip -
这样可以正确写入zip,但是当您打开zip时,其中的文件称为“-”。有什么方法可以指定在zip中应该包含管道输入数据的文件名吗?
从我可以收集到的信息来看,您不能同时使用该zip
命令,这意味着您既不能指定文件名也不能通过管道传递内容。您可以通过管道传输内容,结果文件为-
,也可以通过管道传输文件名-@
。
这并不意味着使用其他技术是不可能的。我概述了以下内容之一。这确实意味着您必须安装PHP并加载zip扩展。
可能还有很多其他方式可以做到这一点。但这是我所知道的最简单的方法。哦,那也是单线的。
这是使用PHP的有效示例
echo contents | php -r '$z = new ZipArchive();$z->open($argv[1],ZipArchive::CREATE);$z->addFromString($argv[2],file_get_contents("php://stdin"));$z->close();' test.zip testfile
要在Windows上运行,只需交换单引号和双引号。或者只是将脚本放在文件中。
“ test.zip”是生成的Zip文件,“ testfile”是正在传递到命令中的内容的名称。
结果来自 unzip -l test.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
6 01-07-2010 12:56 testfile
--------- -------
6 1 file
这是一个使用python的工作示例
echo contents | python -c "import sys
import zipfile
z = zipfile.ZipFile(sys.argv[1],'w')
z.writestr(sys.argv[2],sys.stdin.read())
z.close()
" test5.zip testfile2
的结果 unzip -l
Archive: test5.zip
Length Date Time Name
-------- ---- ---- ----
9 01-07-10 13:43 testfile2
-------- -------
9 1 file
的结果 unzip -p
contents
我试图在ZIP文件内创建一个ZIP文件,以重新构建以前在内存中的zip结构,我在Java。 我失败了,因为我得到了一个错误的内部ZIP内创建的初始ZIP文件。文件已损坏。当试图打开它时,我得到一个“文件的意外结局”。 我得到了这个结构: -input.zip--InnerInput.zip 代码使用java Stack和Map在内存中解压。然后它创建input2.zip,内部nput.zip。 总
问题内容: 如何在node.js中创建命名管道? PS:目前,我正在按如下方式创建命名管道。但是我认为这不是最好的方法 问题答案: 看起来,Node核心不支持名称管道-从Ben Noordhuis 11/10/11开始: Windows具有命名管道的概念,但是自您提到以来,我假设您的意思是UNIX FIFO。 我们不支持它们,可能永远也不会(在非阻塞模式下的FIFO可能会死锁事件循环),但是如果您
问题内容: 与此jar命令等效的Java是什么: 我想以编程方式创建此jar文件,因为我不确定命令是否位于我可以运行外部进程的系统路径上。 编辑 :我只想存档(和压缩)目录。不必遵循任何Java标准。即:标准拉链就可以了。 问题答案: // These are the files to include in the ZIP file String[] source = new String[]{“
问题内容: 您是否知道如何在内部执行AWS CLI命令以构建管道?我没有找到任何插件 问题答案: 首先,您需要在服务器上安装aws cli,并确保jenkins用户有权运行它。 或者在创建EC2实例时简单地使用Amazon AMI,它附带了aws cli。 使用适当的策略为角色分配实例。(在aws configure中使用用户密钥更简单) 在管道步骤中使用
我有一个followgradle任务,它负责包装。它在其中生成一个zip文件。但是,作为最终发行版的一部分,我正在尝试在zip文件中创建一个空文件夹调用日志。 上面的代码不起作用,我已经试过了 然后复制 问题是,如果我运行gradleclean包,它会清除导致日志文件夹未创建的构建文件夹。有没有人能解决在我们试图创建的zip发行版中创建空文件夹的问题?
问题内容: 假设我的当前目录是 一个 。我想创建一个目录 乙 和文件“myfile.txt的”内部 乙 。 如何在终端的一个命令中做到这一点? 编辑: 目录可以嵌套多次。就像我可能要创建 B / C / D ,然后在其中创建“ myfile.txt”。我也不想重复目录部分。 以下命令将在任何级别创建目录。 和 将创建目录和文件。但是我不想在命令后重复目录部分。那可能吗? 问题答案: 或者,创建一个