是否有任何安全的方法来创建一个zip存档,或者从php而不使用exec命令tar.gz?
谢谢
所以我在tar中使用pigz
tar --use-compress-program=pigz
Run Code Online (Sandbox Code Playgroud)
这可行,但它不使用我的所有处理器,我想确保它是递归(-r)和使用(-9压缩级别).
我通过使用多核来读取tar + gzip/bzip压缩/解压缩,但它没有注意到在那个格式中添加额外的命令,并且我在手册页中找不到任何程序用于额外的swithed.
谢谢,Cam
我正在编写自己的tar归档程序.一切都在我的应用程序内工作正常(甚至读取用其他工具生成的焦油)但是我无法让我的tar文件与第三方tar文件阅读器一起使用.所以我尝试在命令行上构建一个tar文件,用我的代码构建一个tar文件,并比较两者.
但似乎有一个问题:
我有一个名为Test.txt的文本文件,我想添加到我的tar中,所以我在终端中运行以下命令:
tar -c -f x.tar Test.txt
Run Code Online (Sandbox Code Playgroud)
这样做时:
tar -tf x.tar
Run Code Online (Sandbox Code Playgroud)
我得到以下列表:
./._Test.txt
Test.txt
Run Code Online (Sandbox Code Playgroud)
这是在Mac OS X Lion上的终端.
该./._Test.txt文件来自哪里?在做ls -a时我没有看到它
在检查tar内容时,它似乎是一些二进制数据,但我不知道它来自何处.
如何exec('tar')使用纯PHP 在不使用或任何其他命令的情况下解压缩php中的文件?
我的问题如下; 我有一个26mb tar.gz文件,需要上传到我的服务器并解压缩.我曾尝试使用net2ftp来提取它,但上传后它不支持tar.gz解压缩.
我正在使用免费的Web主机,因此他们不允许任何exec()命令,并且他们不允许访问提示.那么我该如何解决这个问题呢?
PHP有内置命令吗?
我正在尝试将用户提交的zip和tar文件提取到目录中.为zip文件的文档extractall方法(同样用tar文件的extractall)指出,这是可能的路径是绝对的或含有..该走的目标路径之外的路径.相反,我可以使用extract自己,像这样:
some_path = '/destination/path'
some_zip = '/some/file.zip'
zipf = zipfile.ZipFile(some_zip, mode='r')
for subfile in zipf.namelist():
zipf.extract(subfile, some_path)
Run Code Online (Sandbox Code Playgroud)
这样安全吗?some_path在这种情况下,存档中的文件是否可能在外部结束?如果是这样,我可以通过哪种方式确保文件永远不会出现在目标目录之外?
以下是我所拥有的脚本的片段,它试图对子目录中的所有php文件进行tar.它尝试使用'--include'参数,但似乎不起作用(输出来自bash中的'set -x')
+ find . -name '*.php'
./autoload.php
./ext/thrift_protocol/run-tests.php
./protocol/TBinaryProtocol.php
...
./transport/TTransportFactory.php
+ tar -cvjf my.tar.bz2 '--include=*.php' .
+ set +x
Run Code Online (Sandbox Code Playgroud)
在find发现了几个PHP文件,但焦油似乎并没有看到他们.如果我拿出--include所有文件都涂焦油.
我知道我可以使用find来提供list(find . -name '*.php' -print0 | tar -cvjf "my.tar.bz2" --null -T -),但是--includeparam有什么问题?
压缩文件可以分为以下逻辑组
a.您正在处理的操作系统(*ix,Win)等
.不同类型的压缩算法(即.zip,.Z,.bz2,.rar,.gzip).至少来自大多数使用压缩文件的标准列表.
C.然后我们有tar球机制 - 我认为没有压缩.但它更像是连接.
现在,如果我们开始解决上面的压缩文件集,
a.选项(a)将由python处理,因为它是与平台无关的语言.
湾 选项(b)和(c)似乎有问题.
我需要什么
如何识别文件类型(压缩类型)然后对它们进行UN压缩?
喜欢:
fileType = getFileType(fileName)
switch(fileType):
case .rar: unrar....
case .zip: unzip....
etc
Run Code Online (Sandbox Code Playgroud)
所以基本问题是我们如何根据文件识别压缩算法(假设没有提供扩展或不正确)?在python中有没有特定的方法呢?
我有一个包含大约800个.tgz档案的目录,每个档案包含大约10个文件.实际上,我想将每个存档转换为同名的目录.是否有一个简单的一行命令来执行此操作,还是应该编写脚本?
我经常使用Cygwin,但是现在我需要在其他人的Windows机器上提取tar.gz和tar.bz2文件.他们不想要Cygwin; 他们需要一个GUI.我尝试过7-zip,我们公司的其他人正在使用7-zip,但是7-zip让braindead决定要求你先将文件解压缩到新的目标文件,然后解压缩文件,从而浪费时间和磁盘空间,我需要额外的行动.还有其他我不喜欢它的界面.
我刚收到一个新的Windows工作站,并决定尝试ZipGenius软件决定提供的功能,但它甚至不处理tar.gz文件.
有关更好工具的任何建议吗?
当我想在去皮时排除目录时,我通常使用这样的语法:
tar -zcf /backup/backup.tar.gz --exclude="/home/someuser/.ssh" /home/someuser
Run Code Online (Sandbox Code Playgroud)
如何修改此选项以排除所有隐藏目录,例如,除了.ssh /之外,我还想排除.vnc /,.wine /等.