linux 从头开始その三 (压缩打包)

一 再说说ls

ls    -a  全部文件,连同隐藏文件

      -A  全部文件, 不包括. 和..  这两个目录

      -d  仅列出目录本身, 而不是目录内的文件数据

      -f  直接列出结果, 而不进行排序

      -i  列出inode号码

      -l  详细信息显示

      -r  将排序反序输出

      -R  连同子目录一起列出来

      -S   以文件大小排序

      -t   以时间排序

二  gzip  压缩与解压缩(后缀.gz)

(不做特殊操作的话, 压缩时会把源文件变成压缩文件, 就是找不到源文件了, 解压也是)

 -c    将压缩的数据输出到屏幕上

-d     解压的参数

-t      用来检验一个压缩文件的一致性

-v     显示源文件/压缩文件的压缩比

-#     数字  压缩等级 -1 最快,效率低,  -9 最慢, 效率高, 默认是-6

例:

找出/etc  下面(不含子目录)容量最大的文件, 将它复制到/tmp,然后以gzip压缩。

ls -ldSr /etc/*        d仅是目录本身 S 以文件大小排序  r 反序

cd  /tmp

cp /etc/services

gzip -v services

ll /etc/services /tmp/services*

 

zcat, zmore, zless  读取压缩文件内容

zcat services.gz 

解压 gzip -d services.gz

        gzip -9 -c services > services.gz

         用最佳压缩比压缩, 保留源文件(从屏幕转到文件)

找压缩文件的内容

          zgerp -n '要找的内容'  services.gz

 

三  bzip2 比gzip压缩率更高,时间相对长(后缀.bz2)

-c    将压缩的过程产生的数据输出到屏幕上。

-d    解压参数

-k    保留源文件

-z    压缩参数

-v    源文件/压缩文件比 等信息

-#   与zip一样

bzip -v services               此时services  变成  services.bz2

bzcat, bzmore, bzless, bzgrep

bzip -d services.bz2    解压

四 更牛B的xz  (压缩率更高, 时间更长, 后缀xz)

-d  解压

-t  测试文件的完整性

-l 列出文件的相关信息

-k 保留原本的文件不删

-c 将数据输出到屏幕上

- # 一样

xz -v services      压缩成services.xz

xz -l services.xz       查看压缩后的信息

xzcat services.xz  

xz -d services.xz

xz -k services      保留源文件

 

五 tar 

-c   建立打包文件, 

-t   查看打包文件的内容, 有哪些文件名

-x 解包或解压缩

 

-z 通过gzip压缩或解压缩

-j 通过bzip2进行压缩和解压缩

-J 通过xz进行压缩和解压缩

 

-v 显示压缩解压缩的过程中, 将正在处理的文件显示出来

-C 解压缩显示指定目录

-f  指定要压缩解压缩打包解包的文件

-p 保留备份数据原本的权限和属性

-P 保留绝对路径

--exclude=文件   在压缩过程中, 不要将指定文件打包

 

1 打包解包

tar -cvf a.txt.tar b.txt c.txt         将b.txt c.txt 打包成a.txt.tar

tar -tvf a.txt.tar                            显示打包文件

tar -xvf a.txt.tar                           解包

2 打包加压缩

tar -jcv -f xx.tar.bz2 要被压缩的目录文件      打包压缩文件   f 后面要紧跟文件

tar -jtv -f xx.tar.bz2           查看压缩文件           j可以不加

tar -jxv -f xx.tar.bz2  -C  解压位置    解压文件

time tar -jvcf d.tar.bz2 a.txt b.txt         可以显示压缩文件的时间

tar -jpcv -f /root/etc.tar.xz  /etc            p是保留了权限

 

下面是一个注意

tar -jcvf vv.tar.bz2 /etc/cloud

会提示警告:
tar: Removing leading `/' from member names
 

查看压缩文件时, 会发现etc 前面没有/ 了, 变成了相对路径

tar -jtvf vv.tar.bz2
drwxr-xr-x root/root         0 2019-08-06 02:08 etc/cloud/
drwxr-xr-x root/root         0 2017-08-18 12:00 etc/cloud/templates/
-rw-rw-r-- root/root      1506 2017-05-19 11:17 etc/cloud/templates/sources.list.debian.tmpl
-rw-rw-r-- root/root       912 2017-05-19 11:17 etc/cloud/templates/hosts.redhat.tmpl

这是linux为了文件的安全,自动删除了etc前面/, 把他变成相对路径,这也是为什么当初压缩是, 会出现警告。

因为, 这个压缩包,当解压时, 不去掉/ , 是绝对路径, 可能会覆盖源文件的的内容。 去掉/ 变成相对路径, 就不会覆盖原来的文件。

如果非得要后面的路径是绝对路径, 可以如下执行, 虽然还会警告, 但是不会删掉 /
tar -jPcvf vv1.tar.bz2 /etc/cloud

tar -jtvf vv1.tar.bz2
tar: Removing leading `/' from member names
drwxr-xr-x root/root         0 2019-08-06 02:08 /etc/cloud/
drwxr-xr-x root/root         0 2017-08-18 12:00 /etc/cloud/templates/
 

3 仅解开单一文件

先找到文件的位置

tar -jtvf d.tar.bz2 | grep 'a.txt'
-rw-r--r-- root/root        27 2019-09-27 21:52 a.txt
tar -jxvf d.tar.bz2 a.txt             解压

这里要特别说明下-rw-r--r-- root/root        27 2019-09-27 21:52 etc/a.txt

长这个样,tar -jxvf d.tar.bz2 etc/a.txt     注意路径

 

4 不包含某个文件的打包压缩文件

就要用到 --exclude了

tar -jvc -f /root/system.tar.bz2 --exclude=/root/etc*  --exclude=/root/system.tar.bz2

 

 

 

 

 

 

 

   

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值