如果你像我一样,你有大量不同格式的档案(zip、tar、rar、tgz、tar.bz2 等)。在清理我的东西时,我决定基本上不理会我的档案(并且通常通过 archivemount 或 avfs 访问内容)。简而言之,在大多数情况下,我不会写入这些档案,但有时我或应用程序可能会将配置文件/索引文件/描述文件/杂散文件...写入这些档案。
但是,我希望在清理存档时将这些存档转换为首选格式。这种存档格式的一些因素很清楚:将其他格式转换为这种格式应该很容易,最好是直接转换;访问档案中的文件不应该有很大的开销,大小是一些考虑因素但不是主要的,只要档案在提取时不是相同文件的两倍。
现在,我并不天真地期望人们回答“最好的存档格式是……”,而是希望了解您在这种情况下可能使用的各种存档格式的优缺点。
提取(可能是压缩的)存档文件的内容是我需要经常执行的任务。
根据压缩和存档格式的归档文件的作者的什么方法选择,我需要使用的一个tar,unzip,gunzip,xz,或7z命令(也有可能是其他人我还没有遇到过,或者说,我也遇到过,但我可以暂时没想到),每个都有略微不同的命令行语法。
有一个可以处理所有这些格式的命令会很好。有吗?
请注意,我不一定期望一个工具能够了解和处理所有格式。我对一个只提供统一界面的工具和支持各种格式的插件/连接器非常满意。
回到另一个可能非常非常基本的 UNIX 问题。
我理解 Tape Archive Zips ( .tgz)的前提是它们保留 uid、gid、权限......
但是,这似乎不可移植。例如,如果用户john在一台 UNIX 机器上制作 .tgz 文件并在没有该用户的机器上解压缩,或者用户名相同但 UID 不同,该怎么办。
这是如何运作的?
您将如何仅将给定目录的某些文件和子目录备份到压缩存档,以便可以轻松地从该存档重新创建树结构。
基本上,rsync 加上一点脚本(选择我需要的文件和文件夹)就可以完成这项工作,除非我不想只是复制。
我需要一个额外的层来将 rsync 的文件压缩成某种压缩档案(然后可以通过重新创建的路径来恢复)。Rsync 不一定是解决方案的一部分。
例如,我可以挂载一个存档,以便压缩进入该挂载点的所有内容吗?
我有一种情况,我想从嵌套的 tar.gz 中提取文件。.tar.gz 的结构如下
我只想从test.tar.gz文件中提取test.log文件。我看过这篇文章,我们可以用它提取 tar.gz 文件,但不能在嵌套级别中提取。
我正在添加 tar tfz data1.tar.gz 的输出 文件夹结构可能与手动输入上述结构略有不同。
data1/.
data1/META.json
data1/TEMP
data1/TEMP/temp-2
data1/TEMP/temp-2/1-chksum.txt
data1/TEMP/temp-2/1
data1/TEMP/temp-2/1/otherfiles
data1/TEMP/temp-2/1/otherfiles/2016_06_24.tar.gz
Run Code Online (Sandbox Code Playgroud)
因此test.log文件存在于2016_06_24.tar.gz内的嵌套文件夹中
如何为目录创建图像文件?例如:
通过终端命令从文件夹创建 iso 映像显示genisoimage可以为目录创建 iso 映像文件。我只知道为磁盘卷创建了一个图像文件。是否genisoimage先为目录创建循环设备或块设备文件(类似于 CD/DVD),然后为循环设备或块设备文件创建映像文件?它是否与将图像文件挂载到需要首先为图像文件创建循环设备的目录的两步过程完全相反(类似于losetup命令)?
是否有可以为目录创建 ext4 图像文件的命令?它也是一个两步过程吗?
还可以为目录创建存档文件。这两个过程有何不同?为目录创建图像文件是否涉及循环设备,而为目录创建存档文件则不涉及?
如果我有一个压缩存档(例如archive.tar.xz),我可以将其解压缩并使用tar xf archive.tar.xz. 据我了解,这在技术上是两个步骤:解压缩archive.tar,然后“拆分”(为了需要一个更好的词)archive.tar到原始文件中。
有没有办法解压离开后停下来archive.tar?在这种情况下,我可以使用xz -d,但我更喜欢使用tar,因为这并没有xz特别限制我。tar xf似乎有(一些)智能来确定应用什么减压,我想保留它。
到目前为止,我能想到的最好的解决方案是紧随tar xf archive.tar.xz其后tar cf [...]。
我有多个 *.tar.gz 文件。它们都包含文件名为 a、b 和 c 的文件。有没有办法只从这些多个 *.tar.gz 文件下的文件 b 中 grep 字符串 'foo' 而不提取文件。
我使用命令创建了一个存档tar -cvf filename.tar files,在这个选项中,详细选项只是向我显示了我已存档的所有文件的列表。当我使用时tar -tf filename.tar,它再次简单地向我显示了已存档的所有文件的列表。我预计详细选项会显示有关存档中文件的一些额外详细信息,但没有显示。然后我终于使用了该命令tar -tvf filename.tar,但这里的文件列表得到了很好的解释,其中包含一些与该ls -l命令类似的额外功能和细节。所以我很困惑该-v选项的实际目的是什么,因为它在不同的上下文中给出不同的结果以及它与该-t选项有何不同。
我正在尝试创建一个存档:
$ cd /tmp
$ tar -czf test1.tar.gz -C ~/Downloads/dir1 -C ~/Documents/dir2 -C ~/dir3/dir4/dir5
Run Code Online (Sandbox Code Playgroud)
...这不应该保留其中目录的完整路径,因此-C
结果
tar: Cowardly refusing to create an empty archive
Try 'tar --help' or 'tar --usage' for more information.
Run Code Online (Sandbox Code Playgroud)
为什么?如何修复它?
archive ×10
tar ×5
compression ×3
command-line ×2
backup ×1
disk-image ×1
ext4 ×1
files ×1
grep ×1
gzip ×1
iso ×1
linux ×1
loop-device ×1
mount ×1
permissions ×1
rsync ×1
search ×1
ubuntu ×1