我尝试使用以下命令对目录进行 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
扩展名,但必须选择正确的标志来解压缩,尤其是在脚本中,这很烦人。