Linux文件与文件系统的压缩与打包

一、压缩文件的用途与技术

原理:

          1、将一个字节(8bits)内未利用到的部分“丢”出来,以让文件所占空间变小。

          2、将重复数据进行统计记录,若数据中有100个1,即“111111……”,则记录为“100个1”。

因为压缩得到的文件无法直接被系统识别并使用,需要先解压缩,而压缩前与压缩后所占用的磁盘空间大小被称作是压缩比

用途:文件所占的空间变小,硬盘便可以容纳更多的数据。此外,在一些网络数据传输中,也会由于数据量的降低,好让网络带宽用来做更多的工作。

二、Linux系统常见的压缩命令

Linux环境中大多数压缩文件的扩展名:

  *.z       compress程序压缩的文件

  *.gz     gzip程序压缩的文件

  *.bz2    bzip2程序压缩的文件

扫描二维码关注公众号,回复: 1835138 查看本文章

  *.tar     tar程序打包的数据,并没有压缩过

  *.tar.gz  tar程序打包的数据,并经过gzip的压缩

  *.tar.bz2 tar程序打包的数据,并经过bzip2的压缩

1、compress

         这是一个非常老旧的压缩命令,由于他压缩的文件已经可以由gzip解开,所以已经被淘汰,只有在老旧的UNIX系统上找到。

2、gzip,zcat

          gzip是应用最广泛的压缩命令,目前可以解开compress,zip与gzip压缩的文件。另外,由gzip压缩的文件在windows中可以由winRAR解开。

gzip -c:将压缩的数据输出到屏幕上,可通过数据流重定向来处理

gzip -d:解压缩的参数

gzip -t:可以用来检验一个压缩文件的一致性,看看文件有无错误

gzip -v:可以显示原文件/压缩文件的压缩比等信息

gzip -#:压缩等级,-1最快,压缩比差,-9最慢,压缩比最好,默认-6

用gzip压缩文件时,默认原文件不会保留,若要保留,可以用gzip -c filename>filename.gz

        zcat filename.gz 可以读取原文件为文本文档的压缩文件内容而不需要解压开

3、bzip2,bzcat

        bzip2是为了取代gzip并提供更佳的压缩比而来的。他的用法和gzip基本类似,而bzip2若要保留原文件可以用-k参数来处理

三、打包命令tar

 tar打包或打包压缩时原文件保留

上述压缩命令都是针对单一文件的压缩,虽然gzip和bzip2都可以对目录进行压缩,但实际上是对目录内的文件分别压缩,若要将目录压缩成为单一大文件,则需要配合tar(打包)来使用。

tar的参数非常多,这里只列出常用的几个参数:

-c 新建打包文件

-t 查看打包文件内有哪些文件,重在查看文件名

-x 解打包或解压缩,搭配-C可以在指定的目录解开

-j 通过bzip2的支持进行压缩/解压缩

-z 通过gzip的支持进行压缩/解压缩

-v 将正在处理的文件名显示出来

-f filename(单独写一个参数)后面跟被处理的文件名

-p 保留备份数据的原本权限与属性,常用于备份重要的配置文件

-P 保留绝对路径,即允许在打包文件中存在根目录

--exclude=FILE 在打包的过程中不打包FILE

常用:

tar -jvc -f filename.tar.bz2要被压缩的文件或目录名称

tar -jvt -f filename.tar.bz2显示压缩文件列表

tar -jvx -f filename.tar.bz2-C 欲解压缩的目录

解压打包文件中的部分文件

tar -jvt -f filename.tar.bz2| grep ‘关键字’(在filename.tar.bz2中查找‘关键字’)

tar -jvx -f filename.tar.bz2关键字(可以单独解压出含有关键字的文件)

仅备份比某个时刻新的文件

tar -jvc -f filename.newer.then.tar.bz2--newer-mtime(最后一次文件内容修改时间)=“2018/06/30” filename    

基本名称:tarfile(仅打包)  tarball(打包并压缩)

利用管道命令与数据流:

     1.进入目录

     2.tar -cvf – 目录1 | tar-xvf -  将目录1打包的同时在当前目前解开

     输入文件和输出文件都变成了-,这分别代表standard input和standard output(缓冲区)

四、完整备份工具 dump

1、dump

   dump备份工具对文件系统具有等级备份(差异备份)的功能,例如,第一次以level 0备份/home时会完整备份,下一次若以level 1备份/home,则仅仅备份与level 0相比不同的文件,level 2则备份与level相比有变化的文件。

   用dump备份目录时有以下限制:

         所有的备份数据都必须在该目录下面

         仅支持完整备份

         不支持-u参数,即无法创建/etc/dumpdatas这个level备份的时间记录文件

   dump [-Suvj] [-level] [-f 备份文件] 待备份数据

   常用参数:

      -S 仅列出后面的待备份数据需要多少磁盘空间

      -u 将这次dump的时间记录到/etc/dumpdatas中

      -v 将dump的文件过程显示出来

      -j 加入bzip2的支持,将数据进行压缩,默认等级为2

      -level -0~9共十个等级

      -f 后面接产生的文件

      -W 列出在/etc/fstab里面的具有dump设置的分区是否有备份过

     2、restore

        对于dump备份的文件恢复时则需要使用restore这个命令

        -t[-f dumpfile] [-h]   查看dump文件,-h可列出文件的inode和blocks信息

        -C[-f dumpfile] [-D 挂载点] 比较dump与实际数据,返回不同的文件

        -i[-f dumpfile]   进入互动模式

        -r[-f dumpfile]   还原整个文件系统

五、光盘写入工具

mkisofs:新建镜像文件

光盘的格式一般称为ISO9660,这种格式一般仅支持旧版的DOS文件名,即文件名只能以8.3(文件名8字符,扩展名3字符)的方式存在,因此有了-r这个参数

mkisofs [-o 镜像文件] [-rv] [-m file] 待备份文件.. [-V vol] \

>-graft -point isodir=systemdir …

       -o 后面接你想要产生的那个镜像文件

       -r 通过Rock Ridge产生支持UNIX/Linux的文件数据,可记录较多的信息

       -v 显示构建iso文件的过程

       -m file 排除文件,即后面接的文件不会备份到镜像文件中

       -V vol 新建Vulume

       -graft -point graft有转嫁或移植的意思

一般默认情况下,所有要被加到镜像文件中的文件都会被放置在镜像文件中的根目录,如此一来可能会造成刻录后分类不清的问题,因此可以使用-graft -point这个参数,例如:
      镜像文件中的目录所在=实际Linux中文件系统的目录所在

  /movies=/srv/movies/(在Linux中/srv/movies/中的所有文件放置在镜像文件的/movies目录下)

  /linux/etc=/etc(将Linux的/etc目录放置在镜像文件中/linux/etc目录下)

若要将/root,/home,/etc文件备份入镜像文件

    mkisofs -r -V ‘linux file’ -o /tmp/system.img-m /home/lost+found -graft-point /root=/root /home=/home /etc=/etc

六、其他常见的压缩与备份工具

1、dd

   dd if=”input file” of=”output file” bs=”blocksize” count=”number”

   dd可访问扇区,因此dd if=/dev/sdaof=/tmp/mbr.back bs=512 count=1就可以备份硬盘的第一个分区(MBR+分区表)

2、cpio

   这个命令功能强大,可以备份任何东西,包括设备文件,但是他不会主动去寻找文件来备份,需要配合find使用。

   cpio -ovcB  > [file|device]  备份

   cpio -ivcdu > [file|device]  还原

   cpio -ivct > [file|device]  查看

备份会用到的参数

   -o 将数据copy输出到文件或设备上

   -B 让默认的blocks可以增加至5120bytes,一般为512bytes,可以让大文件的存储速度加快

还原会使用到的参数

   -i 将数据自文件或设备复制到系统当中

   -d 自动新建目录

   -u 自动以新文件覆盖旧文件

   -t 配合-i参数,可以在查看以cpio新建的文件或设备的内容

一些可共享的参数

   -v 让存储过程中的文件名在屏幕上显示

   -c 一种较新的portable format方式存储

例:

   找出/boot下所有文件并备份到/tmp/boot.cpio中

   find /boot -print

   find /boot | cpio -ovcB > /tmp/boot.cpio

   通过find找出文件名,然后通过|将文件传给cpio处理

猜你喜欢

转载自blog.csdn.net/yshshhgxq/article/details/80867145