我必须使用命令 gzip (不是 tar - 这是必要的)创建一个存档,并且该存档应该包含来自另一个目录的文件 - 例如,/etc。我尝试使用命令
gzip myetc.gz /etc
但这没有用。
答案1
gzip
适用于文件,而不是目录。因此,要创建您需要使用的目录的存档tar
(这将从多个文件中创建一个 tarball):
tar cvf myetc.tar /etc
或者,对于 gzip 压缩的存档:
tar cvzf myetc.tar.gz /etc
答案2
Gzip 仅适用于单个文件或流 - 通过管道传输到 gzip 的数据。因此,您首先需要生成一个文件,就像使用 tar 一样,然后您可以对其进行 gzip。另一种选择是对所有单个文件进行 gzip 压缩,然后将其压缩到一个文件中。
这两种解决方案都很愚蠢,不应该使用。您应该将 tar 与内置压缩选项一起使用,并在一个命令中完成所有操作。
答案3
如果您确实没有可用的 tar,您可以使用 gzip 使用选项(-r - 递归)创建目录的备份,但也许这并不完全是您所期望的......
如果您想保持原始目录不可更改,首先您需要将目录复制到另一个名称。
#cp -a directory my_gzip_alone_backup
其次,您将递归地压缩目录中的所有文件(-r)。
#gzip -r my_gzip_alone_backup
现在让我们看一下 my-gzip-alone-backup 的内部。您不会像您期望的那样拥有单个文件 myfile.gz,而是递归地获得许多 gzip 压缩文件。但由于符号链接,用 etc 来做这件事并不好......
要解压缩目录,可以使用gunzip 应用相同的逻辑。
另一种方法是将目录转换为单个文件,如果您没有 tar 来执行此操作,但有 dd util,如本文中所示:https://askubuntu.com/questions/626634/converting-a-file-to-directory