Linux 文件打包压缩常用命令(笔记,搜录自网络和文档)

zip 老了一些,但是所有系统都支持(.zip)。
格式
  zip 压缩后的文件名 要被压缩的文件 参数
参数
  -1                    压缩比,1-9可选,9为最大压缩率。
  -c                    增加注释。
  -d                    解压出一个文件。
  -D                    不存储文件的目录信息。
  -f                    替换现有文件。 
  -F                    修复压缩文件。
  -g                    增加文件到包内。
  -m                    增加文件到包内,并删除源文件。

  -n                    不压缩特定扩展名的文件。

  -q                    安静模式。

  -r                    包括子文件夹。

  -t                    只压缩指定日期后的文件。

  -T                    测试压缩文件是否正常。

  -u                    更新改动过的文件和新文件。

  -v                    显示详细信息。

  -x                    不压缩指定文件。

解压使用unzip,参数类似。

gzip Linux上的老牌压缩格式(.gz)。
格式
  gzip 压缩后的文件名 参数 要被压缩的文件
参数
 -a或--ascii  使用ASCII文字模式。 
 -c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。 
 -d或--decompress或----uncompress  解开压缩文件。 
 -f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。 
 -h或--help  在线帮助。 
 -l或--list  列出压缩文件的相关信息。 
 -L或--license  显示版本与版权信息。 
 -n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。 
 -N或--name  压缩文件时,保存原来的文件名称及时间戳记。 
 -q或--quiet  不显示警告信息。 
 -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。 
 -S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。 
 -t或--test  测试压缩文件是否正确无误。 
 -v或--verbose  显示指令执行过程。 
 -V或--version  显示版本信息。 
 -<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。 
 --best  此参数的效果和指定"-9"参数相同。 
 --fast  此参数的效果和指定"-1"参数相同。

tar 最常用的打包格式(.tar)
格式
  tar -cvf 压缩后的文件名 要被压缩的文件
参数:
-c :建立一个压缩文件
-x :解开一个压缩文件
-t :查看
压缩文件里面的文件
 参数c/x/t不能同时使用。
-z :用 gzip 压缩
-j :用 bzip2 压缩
-v :详细信息
-f :压缩后的文件名,这个参数必须是最后一个参数
-p :使用原文件的原来属性
-P :可以使用绝对路径来压缩
-N :比日期yyyy/mm/dd新的文件才会被打包
--exclude FILE:在压缩的过程中,不要将 FILE 打包


-------------在chinaitlab看到一个超简单的摘录了如下--------------------
  .tar
  解包: tar xvf FileName.tar
  打包:tar cvf FileName.tar DirName
  (注:tar是打包,不是压缩!)
  ---------------------------------------------
  .gz
  解压1:gunzip FileName.gz
  解压2:gzip -d FileName.gz
  压缩:gzip FileName
  .tar.gz 和 .tgz
  解压:tar zxvf FileName.tar.gz
  压缩:tar zcvf FileName.tar.gz DirName
  ---------------------------------------------
  .bz2
  解压1:bzip2 -d FileName.bz2
  解压2:bunzip2 FileName.bz2
  压缩: bzip2 -z FileName
  .tar.bz2
  解压:tar jxvf FileName.tar.bz2
  压缩:tar jcvf FileName.tar.bz2 DirName
  ---------------------------------------------
  .bz
  解压1:bzip2 -d FileName.bz
  解压2:bunzip2 FileName.bz
  压缩:未知
  .tar.bz
  解压:tar jxvf FileName.tar.bz
  压缩:未知
  ---------------------------------------------
  .Z
  解压:uncompress FileName.Z
  压缩:compress FileName
  .tar.Z
  解压:tar Zxvf FileName.tar.Z
  压缩:tar Zcvf FileName.tar.Z DirName
  ---------------------------------------------
  .zip
  解压:unzip FileName.zip
  压缩:zip FileName.zip DirName
  ---------------------------------------------
  .rar
  解压:rar a FileName.rar
  压缩:r ar e FileName.rar
  
  rar请到:http://www.rarsoft.com/download.htm 下载
  解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp rar_static /usr/bin/rar
  ---------------------------------------------
  .lha
  解压:lha -e FileName.lha
  压缩:lha -a FileName.lha FileName
  
  lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载
  >解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):
  [root@www2 tmp]# cp lha /usr/bin/
  ---------------------------------------------
  .rpm
  解包:rpm2cpio FileName.rpm | cpio -div
  ---------------------------------------------
  .deb
  解包:ar p FileName.deb data.tar.gz | tar zxf -
  ---------------------------------------------


-----------------------转来的tar使用详细-------------------------------------------

tar是“tape archive”(磁带存档)的简称,它出现在还没有软盘驱动器、硬盘和光盘驱动器的计算机早期阶段。那时软件的发行和备份都需要大卷的磁带,计算机上运行的头几个程序中就得有一个是磁带的阅读程序。随着时间的推移, tar命令逐渐变为一个将很多文件进行存档的工具,目前许多用于Linux操作系统的程序就是打包为tar档案文件的形式。

    tar 命令的格式是:

    tar [option] <file>;

    tar命令有很多参数,利用f选项、设备或文件的名字可以指示tar命令将档案置于特定的设备或文件中。当为tar的档案创建一个文件时,这个文件名的扩展通常是如果指定了一个目录名,那么它所有的子目录都会被包含在档案之中。

    利用tar命令和f选项的格式如下所示:

    #tar opionsf  archive-name.tar directory-and-filenames

    要创建一个档案应使用c选项,与f选项一起,c选项会在设备或文件中创建档案,应在f选项的左边输入这一选项。在下例中,目录mydir和它所有的子目录都被存入文件myarch.tar中。

    #tar cf  myarch.tar  mydir

    如果想要改动已经存档的目录中的文件,可以使用u选项使tar更新档案中的文件。tar比较每一个档案文件与相应用户目录中文件最近一次修改的时间,然后 将上一次存档之后又被修改过的文件拷贝到档案文件中去。在用户目录中新创建的文件也会被添加到档案文件中。在下面的例子中,用户用mydir目录中最近被 修改或添加的文件来对myarch.tar文件进行更新。

    #tar uf myarch.tar mydir

    如果想查看在一个档案中存储着哪些文件,可以使用tar命令和t选项。下面命令列出所有存储在myarch.tar档案中的文件:

    #tar tf myarch.tar

    要将文件备份到一个特定的设备,只须把设备名作为档案。在下面的例子中,用户在/dev/fdo设备的软盘中创建了一个档案,并将mydir目录中所有的文件都拷贝到档案中。

    #tar cf/dev/fdo  mydir

    要恢复设备磁盘中的文件,可使用xf选项:

    #tar xf/dev/fdo

    如果所备份的文件大小超过设备可用的存储器,比如软盘,此时就可以创建一个使用多个标号的tar档案。当使用m选项向一个软驱进行存档时,tar命令在一张软盘已满的时候会提醒再放入一张新的软盘。

    #tar cmf/dev/fdo  mydir

    要想恢复几张盘中的档案,只要将第一张软盘放入软驱,然后输入有x和m选项的tar命令。必要时会被提醒放入另外一张软盘。

    #tar  xmf/dev/fdo

    tar操作不会对档案文件实行压缩操作。如果想压缩档案文件,可以指示tar激活gzip实用工具,在存档之前对文件进行压缩。利用z选项,tar在对文件存档之前首先要使用gzip来压缩文件。当恢复文件时,同样的Z选项将激活gzip对文件解压。

    #tar czf  myarch.tar mydir

    值得注意的是,压缩档案中的单个文件和整体压缩档案是不同的。通常档案文件是为了便于传输而把几个文件组合成为一个tar文件。为了缩短传输时间,档案应 当越小越好,可以将其压缩然后传送压缩后的版本。接收者可以对之解压缩,然后恢复tar文件。在tar文件上使用gzip将会产生有.tar.gz扩展名 的文件。扩展名.gz被加到被压缩的gzip文件名之后。

    下面的例子创建了myarch.tar的一个压缩的版本,它具有了.gz的扩展名。

    #gzip  myarch.tar
    #ls
    #myarch.tar.gz

    tar命令虽然有非常多的参数,但是使用起来并不困难,可以快速而又简单地为任何需要的子目录生成档案文件。

    首先,我们来建立一个有三个文件的子目录,再建立一个有另外三个文件的子目录,如下所示:

    # mkdir mydir
    #cd mydir
    # touch file1 file2 file3
    # mkdir mydir2
    #cd mydir2
    # touch file21 file22 file23
    #cd../..
    #tree mydir
    mydir
      file1
      file2
      file3
    mydir2
      file21
      file22
      file23

    现在已经有了一个子目录和其中的文件,使用这个命令的c(生成)和f(文件)参数来生成一个tar档案文件:

    # tar cf mydir.tar mydir
    # ls -l *.tar
    - r w - r - - r - - 1 bball u s e r s 10240 Jan 5 15 : 01 mydir. t a r

    请注意,原来的子目录并没有发生变化。在缺省的情况下,tar命令不会删除原来的子目录和文件。如果想看看命令执行的过程,可以使用v参数,如下所示:

    # tar cvf mydir.tar mydir
    mydir/
    mydir/file1
    mydir/file2
    mydir/file3
    mydir/mydir2/
    mydir/mydir2/file21
    mydir/mydir2/file22
    mydir/mydir2/file23

    tar命令在进行操作的时候,就会把正在添加到档案文件中去的子目录和文件的文件名显示出来。使用w参数,即交互参数,这样tar命令在执行的过程当中会询问是否想加入每个文件。当想有选择地备份内容不多的子目录的时候,这样就非常地方便,如下所示:

    # tar cwf mydir.tar mydir
    add mydir?y
    add mydir/file1?n
    add mydir/file2?y
    add mydir/file3?n
    add mydir/mydir2?y
    add mydir/mydir2/file21?y
    add mydir/mydir2/file22?n
    add mydir/mydir2/file23?y

    在上面的例子中,没有把文件file1、file3和文件file22归档。可以使用tar命令的t参数列出档案文件中的内容,f参数定义操作所使用的tar档案文件,如下所示:

    # tar tf mydir.tar
    mydir/
    mydir/file2
    mydir/mydir2/
    mydir/mydir2/file21
    mydir/mydir2/file23

    需要注意的是,如果参数的顺序放错了,tar命令会显示出错信息并退出。

    下面就来看看如何来释放整个的档案文件或者其中的某一个文件。如果想释放其中所有的文件,可以同时使用-x释放参数和-f。为了了解命令执行的过程,还可以加上-v参数:

    # tar xvf mydir.tar
    mydir/
    mydir/file2
    mydir/mydir2/
    mydir/mydir2/file21
    mydir/mydir2/file23

    如果只是想从档案文件中释放几个文件的话,可以再次使用w参数:

    # tar xvwf mydir.tar
    extract mydir/?y
    mydir
    extract mydir/file2?y
    mydir/file2
    extract mydir/mydir2/?y
    mydir/mydir2/
    extract mydir/mydir2/file21?y
    mydir/mydir2/file21
    extract mydir/mydir2/file23?y
    mydir/mydir2/file23

    上例表明查看了档案文件,并交互地释放了文件。如果只想从档案文件中释放某一个文件,可以在命令行中指定这个文件。作为示例,我先删除了原始的mydir子目录,然后使用一个空的子目录进行如下操作:

    # tar xf mydir.tar mydir/mydir2/file23
    # tree mydir
    m y d i r
    - - mydir2
    - - file23
    1 directory, 1 file

    注意,正如所看到的只有一个文件被释放出来。虽然tar命令不会覆盖整个的子目录,但是它会覆盖掉那些有着相同文件名的文件。

    值得一提的是,还可以使用其它程序,如BRU-2000或者taper脚本程序来备份系统或者选定的文件和子目录。OpenLinux操作系统也可以通过cron日程安排来自动进行文件的归档整理工作。

    建立cpio档案文件

    cpio命令可以从tar或者cpio档案文件中拷入或者拷出文件。因为cpio命令和tar命令兼容,所以我这里不再详细介绍它如何工作。但是这个命令具备一些tar命令没有的功能,如下所示:

    ◆ 支持cpio和tar两种档案文件格式;

    ◆ 支持许多老式磁带数据格式;

    ◆ 能够通过一个管道读取文件的文件名。

    只有很少的Linux软件包是以cpio格式发行的。如果对cpio命令的详细情况感兴趣的话,可以阅读它的使用手册。

    使用gzip压缩文件

    gzip命令是用来压缩文件的。它不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。

    gzip命令的格式是:

    gzip [option] [file]

    gzip很容易使用。如果想压缩某个文件或者磁带档案文件,可输入下面的内容:

    # gzip mydir.tar

    在缺省的状态下,gzip会压缩文件、再加上一个.gz扩展名,然后删除掉原来的文件。如果想解压缩文件,可以使用gzip的对应程序命令gunzip或 者gzip命令的-d解压缩参数。但是必须保证这个用于解压缩的文件有.gz(或者.Z、-gz、.z、-z、或者_z)扩展名,否则gzip命令和 gunzip命令都会显示出错信息。如果想使用自己的扩展名,可以使用-S后缀参数,如下所示:

    # gzip -S .gzipped mydir.tar

    gzip还可以处理用zip命令、compress命令和pack命令压缩的文件包。如果想在压缩或者解压缩的过程中看到更多的信息,可以使用-l列清单 参数看到文件在被压缩或解压缩的时候的文件长度。在前一个例子中,压缩完子目录mydir之后,可以使用gzip命令按照下面的方法得到有关的数据:

    # gzip -l mydir.tar.gz
    compressed uncompr.ratio uncompressed_name
    312 21330 98.2% mydir.tar

    此外,gzip还有一个很有用的参数-t,可以用来测试压缩文件的完整性。如果文件正常,gzip不会给出任何显示。如果想看到OK这两个字母,可以在测试某个文件时使用-tv参数。

    使用compress压缩文件

    compress命令就像它的文件名那样是用来压缩文件的。这是Unix中出现得比较早的一个压缩程序,它通过使用自适应的Lemple-Ziv编码来缩 小所指文件的大小。每一个文件将被一个带有.Z扩展名的压缩文件所代替,但文件的属主关系、访问时间和修改时间将保持不变。如果没有指点文件,则接受标准 输入的文件进行压缩并送到标准输出。

    compress命令格式是:

    compress [option] [file]

    与compress对应的有一个解压缩命令uncompress,其格式如下:

    uncompress [option] [file]

    它使“.Z”的压缩文件恢复。

    compress和uncompress命令的选项如下:

    ◆-c 写到标准输出,不改变文件。

    ◆-f 强制压缩,即使文件并不真正减小或.Z文件已经存在,也进行压缩。

    ◆-v 显示每一个被压缩文件的缩小的百分比。

    下面举例说明compress命令的用法:

    #compress file

    上面代码表明将生成压缩文件file.Z代替file,要解压缩输入:

    #uncompress file.Z

    注意,像使用gzip命令一样,使用uncompress命令时必须给出一个带有.Z扩展名的文件名,否则uncompress命令显示出错信息。

posted on 2011-03-20 19:43  清清飞扬  阅读(3202)  评论(0编辑  收藏  举报