Nicole2333

导航

Linux笔记4 Linux 系统常见的压缩命令

gzip, zcat 

 

默认的状态下原本的文件会被压缩成为 .gz 的档名, 原始文件不再存在了

使用 gzip 压缩的文件在 Windows 系统中,竟然可以被 WinRAR 这个软件解压

如果原本的文件是是文字档,可以尝试使用 zcat 去读取!

 gzip 的压缩已经最佳化过了,所以虽然 gzip 提供 1~9 的压缩等级,不过使用默认的 6 就非常好用了!

重点在那个 -c 与 > 的使用!

bzip2, bzcat 

若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。 

tar

 tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2 的支持,将该文件同时进行压缩!由於 tar 的使用太广泛了,目前 Windows 的 WinRAR 也支持 .tar.gz 档名的解压缩

其实最简单的使用 tar 就只要记忆底下的方式即可:

  • 压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
  • 查 询:tar -jtv -f filename.tar.bz2
  • 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

  如果不加 [-j|-z] 的话,档名最好取为 *.tar 即可。如果是 -j 选项,代表有 bzip2 的支持,因此档名最好就取为 *.tar.bz2 ,因为 bzip2 会产生 .bz2 的扩展名之故! 至於如果是加上了 -z 的 gzip 的支持,那档名最好取为 *.tar.gz 喔! 

       由於『 -f filename 』是紧接在一起的,过去很多文章常会写成『-jcvf filename』,这样是对的, 但由於选项的顺序理论上是可以变换的,所以很多读者会误认为『-jvfc filename』也可以~事实上这样会导致产生的档名变成 c ! 因为 -fc 嘛!所以罗,建议您在学习 tar 时,将『 -f filename 』与其他选项独立出来,会比较不容易发生问题。... -jcv -f  ...

使用tar命令打包的文件都会拿掉根目录 /

假设将备份数据etc.tar.bz2在 /tmp 解开,那么解压缩的档名就会变成『/tmp/etc/xxx』。 但『如果没有拿掉根目录,解压缩后的档名就会是绝对路径, 亦即解压缩后的数据一定会被放置到 /etc/xxx 去!』如此一来,你的原本的 /etc/ 底下的数据, 就会被备份数据所覆盖过去了!

将备份的数据解压缩,并考虑特定目录的解压缩动作 (-C 选项的应用)

仅解开单一文件的方法

1.如果不知道要解压的文件名,先进行查找  e.g.解开shadow

tar -jtv -f /root/etc.tar.bz2 | grep 'shadow'

 2. 将该文件解开!语法与实际作法如下:

[root@www ~]# tar -jxv -f 打包档.tar.bz2 待解开档名
[root@www ~]# tar -jxv -f /root/etc.tar.bz2 etc/shadow
nicole@ubuntu:~$ tar -jtv -f testtar.tar.bz2
drwxrwxr-x nicole/nicole 0 2019-12-26 01:07 home/nicole/testtar/
-rw-rw-r-- nicole/nicole 0 2019-12-26 01:06 home/nicole/testtar/3~
-rw-rw-r-- nicole/nicole 0 2019-12-26 01:06 home/nicole/testtar/1
-rw-rw-r-- nicole/nicole 327 2019-12-26 01:07 home/nicole/testtar/3
-rw-rw-r-- nicole/nicole   0 2019-12-26 01:06 home/nicole/testtar/2
nicole@ubuntu:~$ tar -jxv -f testtar.tar.bz2 home/nicole/testtar/3
home/nicole/testtar/3

 

1 root@ubuntu:/# tar -jtv -f tmp/test.tar.bz2 | grep 1.txt
2 -rw-r--r-- root/root 1354 2019-12-26 22: 26 test/1.txt
3 root@ubuntu:/ tar -jxv -f tmp/test.tar.bz2 test/1.txt
4 test/1.txt
5 root@ubuntu:/# 11 test
6 用量12
7 drwxr-xr-x  2   root root 4096 Dec 26 22: 36 ./
8 drwxr-xr-x 23  root root 4096 Dec 25 22:36 ../
9 -rw-r--r--     1 root root 1354 Dec 25 22:36 1.txt

打包某目录,但不含该目录下的某些文件

1 root@ubuntu:/tmp# tar -jcv -f test1.tar.bz2 --exclude=test/2.txt test
2 test/
3 test/1.txt
4 test/3.txt
5 root@ubuntu:/tmp# tar -jtv -f test1.tar.bz2
6 drwxr-xr-x root/root         0 2019-12-26 23:23 test/
7 -rw-r--r-- root/root         0 2019-12-26 23:23 test/1.txt
8 -rw-r--r-- root/root         0 2019-12-26 23:23 test/3.txt

posted on 2019-12-24 11:29  Nicole2333  阅读(77)  评论(0)    收藏  举报