SHELL笔记之归档(五)

1.tar命令
1.1归档
tar可以将多个文件和文件夹保存为单个文件,同时还能保留所有的文件属性,如所有者,权限等。

eg: tar -cf output.tar client.c md5.txt        //对文件client.c 和md5.txt 归档为output.tar文件  (-c代表创建文件;-f代表制定文件,而且-f应该是选项中的最后一个。)

eg: tar -tf  output.tar     //列出归档文件中包含的文件

eg: tar -tvf output.tar    //加上参数-v显示更详细的信息 (-v代表冗长模式) 

eg: tar  -rvf  output.tar   new_file    //向归档文件中添加新的文件new_file   (-r代表追加新文件到已存在的归档文档中)

eg: tar -xf   output.tar   -C /home/mapgoo     //将归档文件中的文件提取到/home/mapgoo目录中 (-x代表提取(exact)。-C代表提取到的目录,没有指定代表当前目录.)

eg: tar -xvf  output.tar   client.c     //只提取文件client.c

eg: tar -Af output.tar  output1.tar     //拼接两个归档文件,将output1.tar中的文件也打包进output.tar

eg: tar -uf  output.tar client.c    //仅当client.c的时间戳比归档文件中的新时才追加进去

eg:tar -f output1.tar --delete md5.txt     从归档文件中删除md5.txt文件

eg: tar -cf  arch.tar  *  --exclude "*.txt"    //排除所有的txt文件,进行归档。(用--exclude[PATTERN]  排除匹配通配符样式的文件)

eg: tar -cf  arch.tar  * -X list     //排除list文件中列出的文件,进行归档。

eg: tar -cvf output.tar *sh --totals    //打印出归档了多少字节(用--totals可以在归档完成之后打印出总归档字节数)

1.2压缩
eg: tar -acvf archive.tar.gz *sh    //tar能够通过查看输出或输入文件的扩展名来进行压缩。为了使tar支持扩展名自动进行压缩,使用-a或--auto-compress选项)


2. cpio命令归档
cpio命令类似于tar的归档格式,它用来将多个文件和文件夹存储为单个文件,同时保留所有文件属性,如权限,文件所有权等,不过cpio并不像tar那么常用。它多用于RPM软件包(Fedora使用这种格式),linux内核的initramfs文件等。
eg: echo file1 file2 file3  | cpio -ov >archive.cpio    //归档
eg:  cpio -it < archive.cpio     //列出cpio归档文件中的内容
eg:  cpio -id  < archive.cpio     //从cpio归档中提取文件

-o制定输出; -v用来打印归档文件列表;-i用来指定输入;-t表示列出归档文件中的内容;-d用来提取。

3. gzip命令 压缩
   3.1 压缩
gzip只能压缩单个文件或数据流,而无法对目录和多个文件进行归档。因此需要先创建tar归档文件,然后再用gzip进行压缩。
eg: gzip  filename    //压缩 ,生成filename.gz压缩文件
eg: gunzip  filename.gz    //解压缩
eg:  gzip -l  filename.gz     //列出压缩文件的属性

3.2压缩归档
第一种方法:
 tar -acvf archive.tar.gz   *sh     

第二种方法: 
           第一步:归档   tar -cvf archive.tar    *sh
            第二步:压缩  gzip archive.tar
 
3.3压缩率
1级的压缩率最低,但是压缩速度最快;  9级的压缩率最高,但是压缩速度最慢
eg: gzip -5  test.img       //5级应该能在压缩速度和压缩比之间获得一个不错的平衡


4.bzip2命令 压缩
bzip2命令是另一种常用的工具,其功能和语法同gzip非常的类似。唯一的不同在于bzip2的压缩效率比gzip更高,但花费的时间比gzip更长

eg: bzip2 read.c    //压缩read.c文件,生成read.c.bz2文件
eg:bunzip2    read.c.bz2     //解压缩
 
4.2归档,压缩
eg: tar -acvf archive.tar.bz2 *sh     //归档压缩 (对比 tar -acvf archive.tar.gz  *sh   )
eg:   tar -xjvf  archive.tar.gz2     //解压缩  (对比 tar -xavf archive.tar.gz )   (-j表明该归档文件是bzip2格式)


5.zip命令    归档和压缩
eg:  zip archive.zip   [SOURCE FILES / DIRS ]    //zip格式进行归档压缩
eg:  unzip   archive.zip    //提取zip文件中的内容 (zip提取完后并不会删除文件,这点与unlzma和gunzip不同)
eg:  zip file.zip -u  newfile   //更新压缩文件中的内容。(-u选项)
eg:   zip -d  file.zip    file.txt     //从压缩文件中删除内容(-d选项)
eg:   zip -l   file.zip    、、列出压缩文件中的内容



6.pbzip2命令    更快速的归档工具
我们目前已经看到的多数压缩命令只能利用单个处理器核心,所以速度并不会特别快,而pbzip2能够借助多个处理器核心来降低压缩文件所需要的时间。
6.1压缩单个文件
pbzip2  myfile.tar      //pbzip2会自动检测系统中处理器核心的数量,然后将myfile.tar压缩成myfile.tar.bz2 。

6.2要将多个文件或目录进行归档及压缩,可以使用tar配合pbzip2来实现
   tar -cf myfile.tar.bz2  --use-compress-prog=pbzip2  dir_to_compress/
   或者
  tar -c   dir_to_compress/  |  pbzip2 -c >myfile.tar.bz2

6.3从pbzip2格式的文件中进行提取
pbzip2 -dc myfile.tar.bz2  | tar x        //如果是tar.bz2文件,我们可以一次性完成解压缩和提取工作
pbzip2 -d  myfile.tar.bz2        //如果是经过pbzip2压缩过的归档文件

6.4手动制定处理器数量
  pbzip2 -p4 myfile.tar    //使用4个处理器核心


7.创建压缩文件系统
squashfs是一种具有超高压缩率的只读文件系统。如果需要采用超高的文件压缩率,又希望在无需解压的情况下读取少量文件,那么squashfs就能够大显身手了,解压体积较大的压缩文件可得花上一阵功夫。但如果将文件以环回形式挂载,那么速度会变的飞快,因为只有出现访问请求时,对应的那部分压缩文件才会被解压缩。
7.1创建squashfs文件
     mksquashfs     SOURCES    compressedfs.squashfs        //SOURCES部分可以是通配符或文件,目录路径(eg:  mksquashffs  /etc    test.squashfs  )
7.2 利用环回形式挂载squashfs文件
      mount  -o loop compressedfs.squashfs   /mnt/squash       //将文件挂载在/mnt/squash目录

7.3补充:在创建squashfs文件时排除部分文件
eg:  mksquashfs  /etc    test.squashfs   -e  /etc/passwd  /etc/shadow         
eg:     mksquashfs /etc/   test.squashfs -ef   excludelist           //文件excludelist列出了要排除的文件


8.使用rsync备份
 rsync可以对位于不同位置的文件和目录进行同步,它利用差异计算以及压缩技术来最小化数据传输量。相对于cp命令,rsync的优势在于使用了高效的差异算法。另外还支持网络数据传输。在进行复制的同时,rsync会比较源端和目的端的文件,只有当文件有更新时才进行复制。rsync也支持压缩加密等多种特性。


8.1将源目录复制到目的端
    rsync   -av  source_path    destination_path    //(-a表示要进行归档; -v表示在stdout上打印细节信息或进度)
 eg: 
rsync -av  ./shell/   mapgoo@192.168.1.142:/home/mapgoo    //远程复制

8.2压缩数据传输
    rsync   -avz  source_path    destination_path      //-z选项指定在网络传输时压缩数据

8.3对比两条命令的区别
    rsync -av   /home/test   /home/backups       (test文件夹会复制过去)
    rsync -av   /home/test/   /home/backups      (不会复制test文件夹,只会复制里面的内容)

8.4排除部分文件
eg:    rsync -avz  /home/code   /mnt/disk/backup/code   --exclude "*.txt"     //不对.txt文件进行备份  (或利用 --exclude-from FILEPATH  排除文件夹)

8.5 在更新rsync备份时,删除源端不存在的文件
    rsync  -avz   SOURCE DESTINATION  --delete        //加上--delete选项后,如果DESTINATION中存在,SOURCE不存在,那么会被删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值