尝试gzip目录应用gzip到每个文件单独

我试图用下面的命令来gzip一个目录:

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

我期待看到一个.gz文件显示在里面…包含在… public_html中find的所有文件的备份。 这不是发生了什么事。 相反,每个文件(recursion)都被重命名为public_html中的[filename] .gz。 显然,这导致了整个网站的下降。

替代文字

两个问题:1)我做了什么错误的语法? 和2)我怎样才能恢复所有的文件名返回到他们以前(现在是什么,减去.gz扩展名)。

两个问题:1)我做了什么错误的语法?

Gzip只压缩单个文件; 这不是一个归档工具。 通常和焦油一起使用 。 事实上,一些版本的tar将使用gzip来自动创build一个压缩的归档文件,如果给定的标志。 例如:

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

这会创build( -c )一个名为public_html.tar.gz的gzip压缩( -z )压缩文件,其中包含指定的public_html目录的内容。

2)我怎样才能恢复所有的文件名回到他们以前(现在正是他们现在,减去.gz扩展名)。

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

 gunzip -r /home/site/public_html/ 

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

gzip不会合并文件..它不像zip。 你需要使用tar和gzip

 tar cf file.tar dir gzip file.tar 

要么

 tar zcf file.tar.gz dir 

gzip 只是一个压缩器,而不是文件归档器。 我知道,当你从pkzip的世界来,这是奇怪的,这两个。

你想要使用的是tar ,将文件recursion存档成一个大文件,然后你可以压缩。 一般来说,你要从你要存档的目录的父目录运行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.xz .tar.bz2.tar.xz扩展名的方式提供文件,但是,必须select正确的标志进行解压缩,尤其是在脚本中,这是令人烦恼的。