问题标签 [archive-tar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1952 浏览

regex - 使用 Perl,将目录中的文件列表推送到数组中,除了一些基于文件名的选择文件

我正在通过网页上传 tarball,将其放入 /tmp/ 然后询问此脚本(将通过 crontab 调用):

1.)提取它

2.)构建目录中所有文件的列表(仅文件和递归)

3.)在每个文件中搜索一个字符串并将该文件名和匹配字符串的行打印到文件中。

一切都在我想在(提取的 tarball)目录中构建文件列表的部分工作。如果我不放“!” 在我的代码中第 6 行的正则表达式前面(仅匹配 .bak、.conf、.cfg 的文件),然后我在 @filelist 中只得到十几个文件(正如我所料,由在线代码打印13)。

但是,如果我放一个“!” 在第 6 行的正则表达式前面(旨在匹配这些文件之外的所有内容),第 13 行将打印所有文件名,包括具有 .bak、.conf 和 .cfg 扩展名的文件。

除了我不关心的那些之外,如何在(提取的 tarball)目录中获取文件名的集合?

这是我的代码,大致(精简,未经测试)。我是一个 perl 新手,所以我为我在这里的丑陋道歉,但它就是这样。

0 投票
1 回答
1089 浏览

linux - 安装 Archive-Tar 的位置

我尝试使用 perl 为生物信息学应用程序 DistMap 提供路径。这就是我得到的。

在谷歌搜索时,我发现我应该安装一个 perl 包 Archive::Tar。我的问题是我必须在任何特定位置提取它吗?

谢谢,阿什温

0 投票
1 回答
564 浏览

backup - 提取存储在 tar 存档中的文件的先前版本

我有一个 tar 文件,其中包含同一文件的不同版本,如何提取文件的先前版本之一(不是最后一个版本)?

以下是如何创建测试 tar 文件:

创建一个测试目录

创建一个测试文件

创建包含测试文件的 tar 文件

返回

检查更改

返回(还没有)

更改测试文件

检查更改

返回(魔术:文件已更改)

更新 tar 文件

返回

检查更改

返回(两个版本都存在)

谢谢, 塔尔

0 投票
1 回答
1706 浏览

php - 如何使用 Composer 获取 PEAR.php?

我安装了 pear/archive_tar 来使用 Phing,我使用 Composer 安装了它。但是,我收到了这个错误:

我将PEAR 存储库添加到 Composer 并进行了更新,但仍然无法正常工作。

这个问题的后半部分在这里分支。

0 投票
2 回答
131 浏览

perl - Archive::Tar : 无法读取之前在 Perl 中创建的 tar

我正在尝试读取我刚刚创建的文件 (a.txt) 的内容。该文件包含一个由“ABCDE”组成的字符串,然后我使用 write() 函数对其进行 tar。我可以看到在我的目录中创建了“a.tar”,但是当我使用 read() 函数时,我收到一个错误:无法读取 a.tar:在 testtar.pl 第 14 行。

难道我做错了什么 ?是因为我在 Windows 上吗?

谢谢。

0 投票
1 回答
209 浏览

linux - 使用 MD5 和 perl archive::tar 比较磁带和磁盘中的文件失败

我们想在磁带上的 tar 存档和磁盘上的文件之间创建一个带有 MD5 检查的报告。我创建了一个应该执行此操作的脚本,但是使用 tar 文件可以正常工作,但是在磁带上使用 tar 时会失败。tar 是用 gnu tar 写入磁带的。

如前所述,在使用基于文件的 tar 文件时它可以正常工作,但是在磁带上使用 tar 时,我们会收到错误:

在 check_archive.pl 第 12 行的子例程条目中使用未初始化的值。在 check_archive.pl 第 12 行使用“严格引用”时,不能使用字符串 ("") 作为子例程引用。我的 $f 未定义。

0 投票
2 回答
67 浏览

linux - perl untar single file

So running into an issue with my code here not sure what exactly i'm doing wrong i pass it the two arguments it searches for the file but its always going to does not exist.

i pass this to the file

its not finding the file it exist i assure you.

0 投票
2 回答
257 浏览

perl - 如何使用 Perl 将完整的树结构添加到 .tar.bz2 文件中?

我希望将分布在大量子目录中的大量数据压缩到存档中。我不能简单地使用内置的 tar 函数,因为我需要我的 Perl 脚本在 Windows 和 Linux 环境中工作。我找到了该Archive::Tar模块,但他们的文档给出了警告:

请注意,此方法 [ create_archive()] 不会on the fly 按原样写入;在写出存档之前,它仍然会将所有文件读入内存。如果这是一个问题,请参阅下面的常见问题解答。

由于我的数据量很大,我想“即时”写。但我在常见问题解答中找不到有关写入文件的有用信息。他们建议使用迭代器iter()

返回一个迭代器函数,该函数读取 tar 文件而不将其全部加载到内存中。每次调用该函数时,它都会返回 tarball 中的下一个文件。

但这仅讨论文件的读取,而不是压缩存档的写入。所以我的问题是,如何获取一个目录并以内存友好的方式$dir将其递归地添加到使用 bzip2 压缩的存档中,即无需先将整个树加载到内存中?archive.tar.bz2

Archive::Tar::Streamed我尝试使用and使用评论中的建议构建自己的脚本IO::Compress::Bzip2,但无济于事。

很快,我的系统内存不足。我当前的系统中有 32GB 可用空间,但它几乎立即被淹没。我尝试添加到存档的目录中的某些文件超过 32GB。

超出内存

所以我想知道即使在Streamed课堂上每个文件都必须在添加到存档之前完全在内存中读取?我假设文件本身将在缓冲区中流式传输到存档,但也许只是不是首先将所有文件保存在内存中,而是Streamed允许完全只需要内存中的一个文件,然后将其逐个添加到存档中?