我如何用 gunzip 压缩一个目录?

我如何用 gunzip 压缩一个目录?

我有一个名为“new”的 gzip 目录,其中包含其他目录和文件,我按以下方式压缩

gzip -cvr --no-name /path-to-directory/new > new.gz

我已将这个超过 700MB 的文件复制到另一个位置(在另一台服务器上),现在想解压它。因此,在新服务器上,我转到包含“new”的目录,然后使用

gzip new

结果是一个 880MB 的文件 - 没有目录或更小的文件。

我做错了什么?我该如何改正?

谢谢。

答案1

Gzip 压缩文件,而不是目录。如果要对目录进行 gzip 压缩,必须先创建 tarball。您可以一步创建 tarball 并将其压缩。

tar cvzf tarball.tar.gz directory/

(创建、详细、gZip、到此文件)

逆转这一过程

tar xvzf tarball.tar.gz

(提炼)

答案2

tar cf - directory | gzip -9c > foo.tar.gz

然后像以前一样复制此内容,然后执行相反的操作:

tar xzf foo.tar.gz

如果您使用 SSH 传输文件,则可以跳过存储和传输文件的中间步骤:

tar cf - directory | gzip -9c | ssh user@hostname "cd /destdir ; tar xzvf -"

如果生成的 tar 文件非常大,可能无法与未压缩的数据一起放入目标分区,那么这将特别有用。在这种情况下,使用 rsync 可能更好。

答案3

听起来你应该使用 tar (带有 gzip 选项):

# -z  : pipe through gzip
# -cf : create file
tar -zcf new.tgz /path-to-directory

然后使用生成的 new.tgz 文件:

# z : gzip
# x : extract
# p : keep permissions
tar zxpf new.tgz

编辑

那么 gzip -r 有什么用呢? – jeffp 37 分钟前

gzip 是一个流压缩器 - 它实际上并不会查看压缩的内容,除了它需要缩小的内容之外,所以它没有目录的概念。

顺便说一句,我发现 bzip2 的压缩效果比 gzip 好得多 - 尽管速度较慢。

# -j  : pipe through bzip2
# -cf : create file
tar -jcf new.tar.bzip2 /path-to-directory

bunzip2 new.tar.bzip2

相关内容