尝试对目录进行 gzip 压缩,对每个文件分别应用 gzip 压缩

尝试对目录进行 gzip 压缩,对每个文件分别应用 gzip 压缩

我尝试使用以下命令对目录进行 gzip 压缩:

gzip -r /home/path/to/backups/mydirectory.gz /home/site/public_html/

我原本以为 ...backups 中会出现一个 .gz 文件,其中包含在 ...public_html 中找到的所有文件。但事实并非如此。相反,public_html 中的每个文件都被(递归地)重命名为 [filename].gz。这显然导致整个网站瘫痪。

替代文本

两个问题:1)我的语法哪里错了?2)我怎样才能将所有文件名恢复到以前的样子(与现在的样子完全相同,只是去掉 .gz 扩展名)。

答案1

两个问题:1)我的语法哪里错了?

Gzip 仅压缩单个文件;它不是归档工具。它通常与类似的东西结合使用柏油。事实上,如果给出适当的标志,某些版本tar将用于gzip自动创建压缩档案。例如:

tar -cvz -f public_html.tar.gz /home/site/public_html/

这将创建 ( -c) 一个名为 的 gzip 压缩 ( -z) 档案,public_html.tar.gz其中包含指定目录的内容public_html

2)如何将所有文件名恢复到以前的样子(与现在的样子完全相同,只是去掉 .gz 扩展名)。

gunzip只需在所有文件上运行即可。例如:

gunzip -r /home/site/public_html/

请注意,您也可以简单地使用该zip命令,它将创建一个压缩档案。

答案2

gzip 不会合并文件。它与 zip 不同。您需要将 tar 与 gzip 一起使用

tar cf file.tar dir
gzip file.tar

或者

tar zcf file.tar.gz dir

答案3

gzip只是压缩器,而不是文件归档器。我知道,如果你来自 的世界pkzip,这很奇怪,因为它同时具备这两种功能。

您要使用的程序是tar,它会将文件递归归档为一个大文件,然后您可以对其进行压缩。通常,您会从要归档的目录的父级运行 tar,如下所示:

tar -cvf archive-name.tar  directory-to-store/

这将为您提供未压缩的存档。然后您可以使用以下方法压缩它:

gzip archive-name.tar

这将给你archive-name.tar.gz

如果您正在使用 GNU tar(您可能正在使用),您可以通过添加 z 标志将这些步骤合并为一个步骤:

tar -czvf archive-name.tar.gz directory-to-store/

你可以使用以下方法解压

tar -xzvf archive-name.tar.gz

事实上,使用现代版本的 GNU tar,无需提供-z解压缩选项——它会自动检测。这很方便,因为 GNU tar 还支持-j(比 gzip 更好的)bzip2压缩,并且(如果您有足够新的版本)-J支持更好的xz压缩。通常,您会提供以这种方式制作的文件.tar.bz2.tar.xz扩展名,但必须选择正确的标志来解压缩,尤其是在脚本中,这很烦人。

相关内容