是否有任何安全的方法可以创建zip存档,或者有php的tar.gz不使用exec命令? 谢谢 解决方案 如果要创建tar.gz并且正在使用PHP 5.3+,则可以使用 phardata 类: try { $a = new PharData('archive.tar'); // ADD FILES TO archive.tar FILE $a->addFile('data.xls'); $a->addFile('index.php'); // COMPRESS archive.tar FILE. COMPRESSED FILE WILL BE archive.tar.gz $a->compress(Phar::GZ); // NOTE THAT BOTH FILES WILL EXISTS. SO IF YOU WANT YOU CAN UNLINK archive.tar unlink('archi
以下是关于 tar 的编程技术问答
使用纯PHP? 我的问题如下;我有一个26mb tar.gz文件,需要上传到我的服务器上并提取.我尝试使用net2ftp提取它,但是它不支持上传后的tar.gz unvermand. 我正在使用免费的Web主机,因此他们不允许任何exec()命令,也不允许访问提示.那么我该如何取消这个问题? PHP是否具有内置命令? 解决方案 由于PHP 5.3.0您不需要使用Archive_Tar. 有新课程可以在tar存档上工作: phardata class . 提取一个存档(使用 PharData::extractTo() ZipArchive::extractTo()) : try { $phar = new PharData('myphar.tar'); $phar->extractTo('/full/path'); // extract all files } catch (Exception $e) { // handle
我正在构建一个供人们上传.tar(and .tar.gz,.tar.bz2,.zip等)文件的系统.上传文件很好,但是我想在上传后列出存档中包含的文件. 有人可以推荐一个可以读取文件档案的良好的PHP库吗? 我在梨上找到了 file_archive 在PEAR上,但几年来没有进行更新. ziparchive非常适合.zip文件,但是我需要可以处理更多文件类型的东西. Update 我在RHEL6,PHP 5.2和Apache 2.2. 上运行 解决方案 您可以使用 PharData class:class:class:class:class: // Example: list files $archive = new PharData('/some/file.tar.gz'); foreach($archive as $file) { echo "$file\n"; } 这甚至与phar://流包装器一起使用: $list = sc
我一直在尝试使用 system("tar -jcvf archive_name.tar.bz2 $my_file") 但是我有一个错误 Archive_name.tar.bz2:无法打开:没有此类文件或目录 焦油:错误是无法恢复的:现在退出 焦油:儿童返回状态2 是否不可能在perl中使用此方法创建.tar.bz2?我希望不使用模块,但是如果绝对必要的话 解决方案 首先,您在perl 中不这样做.您要产生一个运行命令的单独过程. 如果您想在perl 中执行此操作,则需要使用存档:: tar 模块和可能 io :: compress :: bzip2 也是模块. 第一件事是查看是否可以直接从命令行运行此命令: $ tar -jcvf archive_name.tar.bz2 $my_file 如果您无法从命令行运行tar命令,则不太可能使用system命令从内部运行它. 用命令和单个串中的所有参数运行命令的方式,导致perl从外壳运
我如何tail多个目录,还可以用一些模式附加文件,例如'.txt',并将某些目录排除并将某些模式排除到一个诸如'.exe'之类的模式中.要点是目录的数量未知(动态),所以我需要循环循环? 解决方案 假设您已经确定了要使用file ::查找 之类的文件的文件 my @dir = qw/a b/ ; system "tar -cvf mytar @dir" ; 可能起作用.但是您可能会发现命令行太长. 在这种情况下,可以将文件列表写入文件并使用选项 --files-from=NAME (请不要告诉我您不允许写入文件) 其他解决方案 我会使用 class :: path (特别是Class::Path::Dir Class::Path::Dir方法) 其他解决方案 如果由于某种原因您不能或不允许安装基本系统以外的其他模块,则可以使用 file ::查找而不是class :: path. 听起来您已经知道如何调用系统ta
我想归档一个目录(我不知道我是否可以称呼"我想抛弃目录").当我取消键入时,我想保留另一端的访问权限.我应该在perl中解决这个问题. 感谢您的回复,但是为什么我要这样做Perl是我希望它独立于平台.我想将一个大文件传输到多台计算机.这些机器可以是任何平台.我应该能够正确解开此焦油文件吗?因此,我想编写自己的焦油和UNTAR程序.我为什么使用Perl是为了使IT平台独立.因此,我无法通过打开脚本和类似内容的内容来使用tar命令. archive :: tar 模块仅处理TARRED文件,但它没有存档文件的选项. 解决方案 这是一个简单的示例: #!/usr/bin/perl -w use strict; use warnings 'all'; use Archive::Tar; # Create a new tar object: my $tar = Archive::Tar->new(); # Add some files: $tar->add_files(
我目前正在使用 Archive-Tar Pear extension 用于php来添加文件集合焦油档案. 这些文件存储在带有额外扩展名的申报机上 例如 filename.tgz.104850209.t or filename2.doc.2154395.t 我想在添加文件时删除此额外的扩展名,以便我的tar存档具有文件:filename.tgz和filename2.doc 是否有一种方法可以做到这一点,而无需复制/重命名首先添加到存档之前的源文件? 谢谢 标记. 解决方案 Archive_Tar在其最新版本中尚未支持此功能.功能的一部分在_addFile()中,另一部分在_addString()中. 最容易的可能是从Archive_Tar和代理所有调用延伸到class Patched_Archive_Tar extends Archive_Tar { var $renameMap = array(); function _writeHeaderB
我想知道如何将tar.gz文件包装到shell脚本中,就像idk **.bin一样.因此我可以将程序传递到一个外壳文件而不是tar.gz 中 解决方案 有一个 Linux Journal文章文章解释如何通过详细地进行此操作,正如Etan Reisner在评论中所说的那样,用于打包有效载荷等的代码,提取/安装脚本知道如何切断其尾巴以获取有效载荷,该有效载荷是在前面加入的.这是一个如何工作的示例: #!/bin/bash # a self-extracting script header # this can be any preferred output directory mkdir ./output_dir # determine the line number of this script where the payload begins PAYLOAD_LINE=`awk '/^__PAYLOAD_BELOW__/ {print NR + 1; exit 0; }'
我在一个我没有root访问的盒子上工作.但是,有一个文件夹/共享将访问每个人都可以读写. 我想找出一种放置Python库的方法,以便每个人都可以访问和使用它们. 我发现我可以将鸡蛋文件放入/share/pythonlib文件夹和python脚本中. import sys sys.path.append("/share/pythonLib/foo.egg") import foo 这对每个人都有用,但是,我不确定每个图书馆都有鸡蛋版本.例如,我试图安装 beautifulsoup4 但是,只有tar.gz文件,我只有tar.gz文件不确定是否可以转换为鸡蛋和..Etc. 或!我一开始就错了,确实有一些Pythonic Magics如下: magicadd /share/pythonLib/foo.tar.gz import foo 解决方案 tar.gz是库的源代码.您应该将其解开,您会在里面找到一个setup.py脚本.运行: python
我使用tar -czf test.tar.gz test/压缩test forlder to test.tar.gz.现在,我想用密码"mypass"压缩到test.tar.gz我该怎么做? 解决方案 tar format和gz format既不具有对密码保护文件的内置支持. 在 上使用crypt或gpg 请参阅此tar cvvjf - /path/to/files | ccrypt > backup.tar.bz2.cpt 或 ccrypt backup.tar.bz2 然后解密: cat ../backup.tar.bz2 | ccrypt -d | tar -xjf - 您也可以使用zip zip -e file.zip file 会在提示下询问您的密码.它更安全,然后通过命令行传递密码. .
我的文件夹真的很大,我想gzip并将它们分开以存档: #!/bin/bash dir=$1 name=$2 size=32000m tar -czf /dev/stdout ${dir} | split -a 5 -d -b $size - ${name} 有没有可以与GNU平行的方法加快速度? 谢谢. 解决方案 似乎是平行GZIP压缩的最佳工具是 Pigz .请参阅比较. 使用它,您可以具有这样的命令: tar -c "${dir}" | pigz -c | split -a 5 -d -b "${size}" - "${name}" 使用其选项-p您还可以指定要使用的线程数(默认为在线处理器的数量,或者8,如果未知为8).有关更多信息,请参见pigz --help或man pigz. 更新 使用GNU并行您可以做一些事情: contents=("$dir"/*) outdir=/somewhere parallel tar -cv
我有一个包含BZ2压缩文件的tarfile.我想将功能clean_file应用于每个BZ2文件,然后整理结果.在串联中,这很容易使用一个循环: import pandas as pd import json import os import bz2 import itertools import datetime import tarfile from multiprocessing import Pool def clean_file(member): if '.bz2' in str(member): f = tr.extractfile(member) with bz2.open(f, "rt") as bzinput: dicts = [] for i, line in enumerate(bzinput): line = line.replace(
如何从tar.gz中压缩的CSV文件中创建PANDAS DataFrame?我找到了这样做的代码,但是使用zip文件.我应该在以下代码中更改如何使其与tar.gz一起使用,而无需下载tar.gz和csv文件. import pandas, requests, zipfile, StringIO r =requests.get('http://data.octo.dc.gov/feeds/crime_incidents/archive/crime_incidents_2013_CSV.zip') z = zipfile.ZipFile(StringIO.StringIO(r.content)) df=pandas.read_csv(z.open('sample_CSV.csv')) 我的文件是 解决方案 您可以在下面尝试提取tar.gz如下: import tarfile tar = tarfile.open(fname, "r:gz") tar.extractall()
我有一个非常简单的CSV,其中包含以下数据,在tar.gz文件中压缩.我需要使用pandas.read_csv在数据框架中读取该内容. A B 0 1 4 1 2 5 2 3 6 import pandas as pd pd.read_csv("sample.tar.gz",compression='gzip') 但是,我遇到了错误: CParserError: Error tokenizing data. C error: Expected 1 fields in line 440, saw 2 以下是read_csv命令的集合,我遇到的不同错误: pd.read_csv("sample.tar.gz",compression='gzip', engine='python') Error: line contains NULL byte pd.read_csv("sample.tar.gz",compression='gzip', h
车轮优于鸡蛋的优点很明显(请参阅部分不鸡蛋? .org/pypi/wheel ). 但是,对我而言,使用车轮比tar.gz的优势是什么?我可能会缺少一些明显的东西,例如"他们是一样的". 如我所见,这两者都可以使用pip直接安装(即使在Windows中),尺寸相似,并且包装需要类似的努力. 在我看来,这就像在证明包装方法合理时可能会遇到的问题. 编辑: 刚刚找到了一个示例,其中tar.gz可能比车轮更好. Cherrypy( .它是否正确? (只是为了在讨论中添加一些"基于案例"的理由) 解决方案 这为我回答了(直接来自车轮PEP): Python需要的包装格式比SDIST更容易安装. Python的SDIST软件包由distutils定义并需要 setuptools构建系统,运行任意代码以构建和安装, 然后重新编译,代码可以将其安装到新的 Virtualenv.这种混合建筑安装的系统很慢,很难 维护并阻碍构建系统和安装程序的创新. 车轮试图通过提供简单的
我有一个项目,其源包含指向其他源树的符号链接(尤其是CppUTest框架).我需要从我的项目中构建一个debian包,但是dpkg-source不会遵循符号链接. 进一步挖掘,我相信这是因为tar的默认行为不是要解除符号链接,除非明确告知(使用-h). 我找不到一种将此额外选项传递给tar时的方法. 那么我在这里做错了什么?是否可以构建一个debian源tarball,其起源包含符号链接?如果是这样,如何? 解决方案 如在此线程中所读取的.它们可以像普通文件一样包含在软件包中. 详细信息取决于您的包装方式,但是在Debian/Rules的"安装"目标中使用以下内容应该有效: ln -s /usr/share/whatever/file/you/want $(CURDIR)/debian//usr/whatever/place/you/want/the/link debian内部/最终将进入.deb内部,包括您放在那里的符号链接.
我希望通过Python从网站上检索一套TAR文件. 通常,链接是形式: href="javascript:void(0)" onClick="dlResp('tar','SHR')" >Click Here/ 我相信正是javascript:void(0)给了麻烦.我没有成功使用browser.mechanise()或硒phantomjs检索焦油文件.有人可以帮助吗? 这必须作为背景过程运行,因此不可接受诸如Firefox或Chrome之类的Web驱动程序.谢谢! 解决方案 单击时链接执行dlResp('tar', 'SHR') 如果我们查看您链接的页面的JavaScript,我们会找到函数定义: function dlResp(resp,code){ var url = './dlTxt.php?resp=' + resp + '&code=' + code; location.href
我试图在一个zip中解开tar.gz,但我不能 它向我显示了一个错误"找不到中央目录",我不知道该怎么办. 首先,我在临时文件夹上拉开拉链,然后在该文件夹上搜索.tar.gz,然后尝试解压缩但使用该错误崩溃,但是我可以使用Winrar应用程序打开它,.tar.gz有一些文件夹和内部的一些文件. 这是我的代码: var trash = Path.Combine(_temporalPath, "Trash"); try { var zip = new FastZip(); Directory.CreateDirectory(trash); zip.ExtractZip(_origin, trash, ""); var gzip = Directory.GetFiles(trash, "*.tar.gz")[0]; zi