Sha*_*dur 801
不。
与此不同zip,仅用gzip作压缩算法。
由于种种原因,其中一些倾听回磁带驱动器的时代,Unix的使用命名的程序tar来归档数据,然后可以用压缩程序等压缩gzip,bzip2,7zip,等。
为了“压缩”一个目录,正确的命令是
tar -zcvf archive.tar.gz directory/
Run Code Online (Sandbox Code Playgroud)
这将告诉tar给
使用z (gzip) 算法压缩它
c(创建)从directory(tar默认情况下是递归的) 中的文件创建一个存档
v(详细地)列出(在 /dev/stderr 上,因此它不会影响管道命令)它添加到存档中的所有文件。
并将输出存储为名为的f(文件)archive.tar.gz
该tar命令提供gzip支持(通过-z标志)纯粹是为了您的方便。的gzip命令/ lib中是完全分开的。上面的命令实际上与
tar -cv directory | gzip > archive.tar.gz
Run Code Online (Sandbox Code Playgroud)
要将存档解压缩并解压到您将使用的当前目录中
tar -zxvf archive.tar.gz
Run Code Online (Sandbox Code Playgroud)
该命令实际上与
gunzip < archive.tar.gz | tar -xv
Run Code Online (Sandbox Code Playgroud)
tar还有很多很多其他的选择和用途;我衷心建议您在某个时间阅读它的联机帮助页。
slm*_*slm 57
gzip使用-r开关时,该命令不会将目录递归压缩为单个 zip 文件。相反,它将遍历该目录结构并将它找到的每个文件压缩到一个单独的文件中。
前
$ tree dir1/
dir1/
|-- dir11
| |-- file11
| |-- file12
| `-- file13
|-- file1
|-- file2
`-- file3
Run Code Online (Sandbox Code Playgroud)
现在运行gzip命令
$ gzip -r dir1
Run Code Online (Sandbox Code Playgroud)
后
$ tree dir1/
dir1/
|-- dir11
| |-- file11.gz
| |-- file12.gz
| `-- file13.gz
|-- file1.gz
|-- file2.gz
`-- file3.gz
Run Code Online (Sandbox Code Playgroud)
如果您更喜欢压缩目录结构,那么您可能需要使用该tar命令,然后压缩生成的.tar文件。
$ tar zcvf dir1.tar.gz dir1/
Run Code Online (Sandbox Code Playgroud)
$ tar zcvf dir1.tar.gz dir1/
dir1/
dir1/file1
dir1/file2
dir1/dir11/
dir1/dir11/file11.gz
dir1/dir11/file12.gz
dir1/dir11/file13.gz
dir1/file3
Run Code Online (Sandbox Code Playgroud)
这导致以下单个文件:
$ ls -l | grep tar
-rw-rw-r-- 1 saml saml 271 Oct 1 08:07 dir1.tar.gz
Run Code Online (Sandbox Code Playgroud)
您可以确认其内容:
$ tar ztvf dir1.tar.gz
drwxrwxr-x saml/saml 0 2013-10-01 08:05 dir1/
-rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file1
-rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file2
drwxrwxr-x saml/saml 0 2013-10-01 08:04 dir1/dir11/
-rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file11.gz
-rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file12.gz
-rw-rw-r-- saml/saml 27 2013-10-01 07:45 dir1/dir11/file13.gz
-rw-rw-r-- saml/saml 0 2013-10-01 07:45 dir1/file3
Run Code Online (Sandbox Code Playgroud)
小智 13
问题“我可以使用 gzip [在 linux] 压缩整个文件夹吗?”的答案 是您可以使用该zip程序代替 gzip,其语法如下:
zip -r <zip file name> <folder to zip>
Run Code Online (Sandbox Code Playgroud)
我编写了这两个命令:
gzipdir:
#!/bin/bash
if [[ -d $1 ]]; then
cd "$1"
cd ..
base=$(basename "$1")
tar -zcvf "$base.tgz" "$base"
if [[ $? == 0 && -f "$base.tgz" ]]; then
rm -rf "$base"
fi
else
echo "Usage: $0 DIRECTORY";
fi
Run Code Online (Sandbox Code Playgroud)
ungzipdir:
#!/bin/bash
if [[ -f $1 ]]; then
base=${1%%.*}
file=$(basename "$1");
dir=$(basename "$base");
if [[ ! -d $base ]]; then
mkdir "$base"
cd "$base"
cd ..
tar -xvf "$file"
if [[ $? == 0 && -d "$dir" ]]; then
rm -f "$file"
fi
else
echo "Directory $base already exists. Nothing done."
fi
else
echo "Usage: $0 file.tgz";
fi
Run Code Online (Sandbox Code Playgroud)
(!!!) 请在使用前进行测试(因为有一个“rm -f”,如果以不常见的方式使用,它可能会删除重要数据)。
如何使用:
cd /home/; gzipdir MyDirectory 或者 gzipdir /home/MyDirectory
将创建 /home/MyDirectory.tgz 并在成功时删除 MyDirectory (!!!)。
ungzipdir /home/MyDirectory.tgz
将创建 /home/MyDirectory 并在成功时删除 /home/MyDirectory.tgz。