Linux入职基础-5.8_文件压缩备份(命令实例)

文件压缩备份(命令实例)

一:命令列表

ar   建立、修改或抽取备存文件

compress/uncompress  文件压缩/解压

gzip/ gunzip   文件的压缩/解压

bzip2/ bunzip2 文件的压缩/解压

bzip2recover修复损坏的.bz2文件

zip/unzip     打包压缩文件/解压缩文件

zipinfo  显示zip压缩文件的信息

cpio    备份文件与目录

tar   把一大堆的文件和目录全部打包成一个文件

dump /restore  文件或文件系统的备份/恢复

注意:bunzip2是bzip2的一个符号连接,类比,还有zip和unzip、gzip和gunzip、compress和uncompress。

二、实例解说

名称:ar

功能:集合许多文件,成为单一的备存文件。在备存文件中,所有成员文件皆保有原来的属性与权限。

语法:ar[-dmpqrtx][cfosSuvV][a<成员文件>][b<成员文件>][i<成员文件>][备存文件][成员文件]

参数:

-d  删除备存文件中的成员文件。

-m  变更成员文件在备存文件中的次序。

-p  显示备存文件中的成员文件内容。

-q  将文件附加在备存文件末尾端。

-r  将文件插入备存文件中。

-t  显示备存文件中所包含的文件。

-x  自备存文件中取出成员文件。

 选项参数

 a<成员文件>  将文件插入备存文件中指定的成员文件之后。

 b<成员文件>  将文件插入备存文件中指定的成员文件之前。

 c  建立备存文件。

 o  保留备存文件中文件的日期。

 s  若备存文件中包含了对象模式,可利用此参数建立备存文件的符号表。

 S  不产生符号表。

 u  只将日期较新文件插入备存文件中。

说明:(1)不能添加目录文件;2)添加的文件必须是普通文件

范例:

#1打包多个文件

[root@localhost ~]# ar -rv one.bak/etc/passwd /etc/shadow /etc/group

#2打包以.c结尾的文件

[root@localhost ~]# ar rv two.bak *.c

#3显示打包文件的内容

[root@localhost ~]# ar t one.bak

#4删除打包文件的成员文件

[root@localhost ~]# ar d one.bak  passwd

[root@localhost ~]# ar t one.bak    //查看结果

#5构造可重用的库文件

[root@localhost testlib]# ar -rv lib a1 a2

#6检查示lib上的成员文件,并添加一个新的文件

[root@localhost testlib]# ar  tv lib

[root@localhost testlib]# ar  qv lib a3

#7在lib库中的a2文件前面插入文件a4

[root@localhost testlib]# ar -rv -b a2 liba4

#8自lib库文件中取出成员文件a1

[root@localhost testlib]# ar xv lib a1

名称:gzip

功能:压缩文件

语法:gzip [选项] 压缩(解压缩)filename

参数:

-c 将输出写到标准输出上,并保留原有文件。

-d 将压缩文件解压。

-l 显示对每个压缩文件信息

-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。

-t 测试,检查压缩文件是否完整。

-v 对每一个压缩和解压的文件,显示文件名和压缩比。

-num 用指定的数字num调整压缩的速度,系统缺省值为6。-1或--fast表示最快压缩方法(低压缩比),-9或--best表示最慢压缩方法(高压缩比)。

注:gzip不能压缩整个目录。压缩完文件后会产生.gz的压缩文件,并删除原始文件。

范例

[root@localhost yp]# gzip *  #把当前目录下的每个文件压缩成.gz文件,不保留原文件

[root@localhost yp]# gzip -c *  #把当前目录下的每个文件压缩成.gz文件,保留原文件

[root@localhost yp]# gzip -d *  #把当前目录下的每个.gz文件解压,不保留压缩文件

[root@localhost dzip]# gzip -r yp  #把目录yp下的每个文件压缩成.gz文件,不保留原文件

名称:gunzip

功能:解*.gz压缩文件

语法:gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][文件...]

或 gunzip[-acfhlLnNqrtvV][-s <压缩字尾字符串>][目录]

参数:

-a或--ascii  使用ASCII文字模式。

-c或--stdout或--to-stdout  把解压后的文件输出到标准输出设备。

-f或-force  强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。

-l或--list  列出压缩文件的相关信息。

-n或--no-name  解压缩时,对原来的文件名称及时间戳记,则将其忽略不予处理。

-N或--name  解压缩时,对原来的文件名称及时间戳记,则将其回存到解开的文件上。

-r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

-S<压缩字尾字符串>或--suffix<压缩字尾字符串>  更改压缩字尾字符串。

-t或--test  测试压缩文件是否正确无误。

范例:

[root@localhost yp]# gunzip -v *.gz  #解压缩当前目录下所有xxx.gz文件,并显示详细过程。

名称:bzip2

功能:压缩文件

语法:bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- 压缩等级][要压缩的文件]

参数:

-c或--stdout  将压缩与解压缩的结果送到标准输出。

-d或--decompress  执行解压缩。

-f或--force  bzip2在压缩或解压缩时,覆盖同名文件,默认不会覆盖现有的文件。

-k--keep bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。

-s或--small  降低程序执行时内存的使用量。

-v或--verbose  压缩或解压缩文件时,显示详细的信息。

默认bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始文件。

范例

 [root@localhost dzip]# bzip2 -vks passwd  #压缩passwd文件,保留原文件

[root@localhost dzip]# bzip2 -dc passwd.bz2  #压缩文件的原始内容显示到屏幕上,并不解压

名称:bunzip2

功能:解*.bz2的压缩文件

语法:bunzip2 [-fkLsvV][.bz2压缩文件]

参数:

-f或--force  解压缩时,覆盖同名文件,默认不会覆盖现有的文件。

-k或--keep  在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数。

-s或--small  降低程序执行时,内存的使用量。

-v或--verbose  解压缩文件时,显示详细的信息。

范例

bunzip2是bzip2的符号连接,执行bunzip2与bzip2 -d的效果相同。

#对当前目录下以.bz2结尾的文件进行解压缩,保留原压缩文件,覆盖同名文件。

[root@localhost dzip]# bunzip2 -kf *.bz2

#对当前目录下以.bz2结尾的文件进行解压缩,并删除原文件

[root@localhost dzip]# bunzip2  *.bz2

名称:bzip2recover

功能:修复损坏的.bz2文件

语法:bzip2recover [xxx.bz2]

参数:

bzip2是以区块的方式来压缩文件,每个区块视为独立的单位。因此,当某一区块损坏时,便可利用bzip2recover,试着将文件中的区块隔开来,以便解压缩正常的区块。通常只适用在压缩文件很大的情况。

范例:

[root@localhost yp]# bzip2 t3.txt         #压缩文件

[root@localhost yp]# bzip2recovert3.txt.bz2  #修复文件

名称:zip

功能:压缩文件与目录(即可打包)

语法:zip [参数] [打包后的文件名] [打包的目录路径]

参数:

-F  尝试修复损坏的压缩文件

-m  将文件压缩之后,删除源文件

-n   特定字符串不压缩具有特定字尾字符串的文件

-o   将压缩文件内的所有文件的最新变动时间设为压缩时候的时间

-q   安静模式,在压缩的时候不显示指令的执行过程

-r   将指定的目录下的所有子目录以及文件一起处理

-S   包含系统文件和隐含文件(S是大写)

-t 日期  把压缩文件的最后修改日期设为指定的日期,日期格式为mmddyyyy

范例

[root@localhost yp]# zip -r yp.zip *  #把当前目录下所有文件压缩成为一个yp.zip文件

[root@localhost dzip]# zip -r yp.zipyp.conf yp  #把yp.conf和目录yp压缩为一个yp.zip文件

#将/var/log这个目录下所有文件和文件夹打包到当前目录下的log.zip

[root@localhost dzip]# zip -r log.zip/var/log

名称:unzip

功能:解压zip文件

语法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][.zip文件][文件][-d <目录>][-x<文件>]

参数:

-x 文件列表, 解压缩文件,但不包括指定的file文件。

-v 查看压缩文件目录,但不解压。

-t 测试文件有无损坏,但不解压。

-d 目录, 把压缩文件解到指定目录下。

-z 只显示压缩文件的注解。

-n 不覆盖已经存在的文件。

-o 覆盖已存在的文件且不要求用户确认。

-j 不重建文档的目录结构,把所有文件解压到同一目录下。

范例:

#将压缩文件yp.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,不覆盖原文件。

[root@localhost dzip]# unzip -n yp.zip -d/tmp

[root@localhost dzip]# unzip -v yp.zip  #查看压缩文件的目录,但不解压。

[root@localhost dzip]# unzip  yp.zip  yp.conf #只解压yp.zip中的yp.conf文件

[root@localhost dzip]# unzip -j yp.zip  -d /tmp #把所有文件解压到同一目录/tmp下

[root@localhost dzip]# unzip -Z yp.zipyp.conf  #显示压缩文件中指定文件的信息

名称:zipinfo

功能:显示zip压缩文件的信息

语法:zipinfo [-12hlmMstTvz][压缩文件][文件...]

参数:

-1 只列出文件名称。

-2 此参数的效果和指定"-1"参数类似,但可搭配"-h","-t"和"-z"参数使用。

-h 只列出压缩文件的文件名称。

-l 此参数的效果和指定"-m"参数类似,但会列出原始文件的大小而非每个文件的压缩率。

-m 此参数的效果和指定"-s"参数类似,但多会列出每个文件的压缩率。

-M 若信息内容超过一个画面,则采用类似more指令的方式列出信息。

-s 用类似执行"ls-l"指令的效果列出压缩文件内容。

-t 只列出压缩文件内所包含的文件数目,压缩前后的文件大小及压缩率。

-T 将压缩文件内每个文件的日期时间用年,月,日,时,分,秒的顺序列出。

-v 详细显示压缩文件内每一个文件的信息。

-x<范本样式> 不列出符合条件的文件的信息。

-z 如果压缩文件内含有注释,就将注释显示出来。

范例:

zipinfo和“unzip-Z”的功能一样

[root@localhost dzip]# zipinfo  -vM yp.zip  #显示压缩文件内每一个文件的信息

[root@localhost dzip]# zipinfo -x y* yp.zip    #显示压缩文件中所有以y开头的文件

名称:cpio

功能:用来建立,还原备份档的工具程序,它可以加入,解开cpio或tar备份档内的文件

语法:cpio –i[bcdmrtuv] [patterns]

     cpio –o [abcv]

     cpio –p [adlmuv][directory]

说明:cpio 共有三种基本模式,

-o即copy-out 模式,将一组文件copy到一个文件库,

-i 即copy-in 模式,读取文件库,并将其 展开在当前目录。

-p 能从某个目录读取所有文件(包括子目录到另一个目录),且不以archive(归档)的方式存放。

参数:

-a或--reset-access-time  重新设置文件的存取时间。

-A或--append  附加到已存在的备份档中,且这个备份档必须存放在磁盘上,而不能放置于磁带机里。

-d或--make-directories  如有需要cpio会自行建立目录。

-F<备份档>或--file=<备份档>  指定备份档的名称,用来取代标准输入或输出,也能借此通过网络使用另一台主机的保存设备存取备份档。

-i或--extract  执行copy-in模式,还原备份档。

-o或--create  执行copy-out模式,建立备份档。

-O<备份档>  指定备份档的名称,用来取代标准输出,也能借此通过网络 使用另一台主机的保存设备存放备份档。

-p或--pass-through  执行copy-pass模式,略过备份步骤,直接将文件复制到目的目录。

-R<拥有者><:/.><所属群组>  在copy-in模式还原备份档,或copy-pass模式复制文件时,可指定这些备份,复制的文件的拥有者与所属群组。

范例:

#1将当前目录下的所有文件复制成backuparchive file

[root@localhost ~]# ls | cpio -o>/tmp/backup/lsroot.backup

#2复制工作目录中的所有的c程序.

[root@localhost ~]# ls *.c | cpio -o>/tmp/backup/all_c.backup

#3复制当前工作目录下的文件到/usr/tempdir目录,不生成archive file

[root@localhost ~]# ls | cpio -p/usr/tempdir

#4将上层目录的initrd文件释放到当前文件夹

[root@localhost ~]# cpio -i < ../initrd

#5仅复原*.f 文件

[root@localhost ~]# cpio –i</usr/linfs/old1 *.f

 

名称:tar

功能:

语法:tar [-cxtzjvfpPN] 文件与目录 ....

参数:打包、压缩文件与目录

-c :建立一个压缩文件的参数指令(create的意思);

-x :解开一个压缩文件的参数指令!

-t :查看 tarfile 里面的文件!

注意:在与下面参数混合使用中,c/x/t 仅能存在一个!不可同时存在!

-z :是否同时具有 gzip 的属性?亦即是否需要用gzip 压缩?

-j :是否同时具有 bzip2 的属性?亦即是否需要用bzip2 压缩?

-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

-p :使用原文件的原来属性(属性不会依据使用者而变)

-P :可以使用绝对路径来压缩!

-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!

--exclude FILE:在压缩的过程中,不要将FILE 打包!

范例:

#1将整个 /etc 目录下的文件全部打包成为/tmp/etc.tar

[root@localhost ~]# tar -cvf/root/dzip/etc.tar /etc    #仅打包成etc.tar文件,不压缩

[root@localhost ~]# tar -zcvf/root/dzip/etc.tar.gz /etc  #先打包,后z参数是以 gzip 压缩

[root@localhost ~]# tar -jcvf/root/dzip/etc.tar.bz2 /etc  #先打包,后j参数是以 bzip2 压缩

#2查阅上述 /root/dzip/etc.tar.gz文件内有哪些文件

[root@localhost ~]# tar -ztvfdzip/etc.tar.gz  #*.gz结尾,则使用z参数

[root@localhost ~]# tar -jtvfdzip/etc.tar.bz2  #*.bz2结尾,则使用j参数

#3将 /root/dzip/etc.tar.gz文件解压缩在 /usr/local/dzip_bak目录下

[root@localhost dzip_bak]# cd/usr/local/dzip_bak/

[root@localhost dzip_bak]# tar -zxvf/root/dzip/etc.tar.gz   #解压*.gz压缩文件

#4将/root/dzip/etc.tar.gz内的 etc/passwd 解开

[root@localhost dzip_bak]#tar –zxvf/root/dzip/etc.tar.gz  etc/passwd

注意:在 etc.tar.gz 内的根目录 / 是被拿掉了

#5将 /etc/ 内的所有文件备份下来,并且保存其权限。

[root@localhost dzip]# tar -zcvpf/root/dzip/etc_01.tar.gz  /etc  #关键加参数p

#6在 /home 当中,比 2015/12/26新的文件才备份

[root@localhost dzip]# tar -N"2015/12/26" -zcvf home.tar.gz /home

#7备份 /home, /etc ,但不要/home/dmtsai

[root@localhost dzip]#tar --exclude/home/dmtsai -zcvf myfile.tar.gz /home/* /etc

#8将 /etc/ 打包后直接解开在 /usr/local/dzip_bak/目录下,而不产生打包文件

[root@localhost ~]# cd /usr/local/dzip_bak/

[root@localhost dzip_bak]# tar -cvf - /etc|tar -xvf -

名称:dump

功能:将目录或整个文件系统备份至指定的设备,或备份成一个大文件。

语法:dump [-cnu][-0123456789][-b <区块大小>][-B <区块数目>][-d<密度>][-f <设备名称>][-h <层级>][-s <磁带长度>][-T <日期>] 待备份的目录或文件系统

     或dump [-wW]

参数:

-0123456789  备份的层级。

-b<区块大小>  指定区块的大小,单位为KB。

-B<区块数目>  指定备份卷册的区块数目。

-c  修改备份磁带预设的密度与容量。

-d<密度>  设置磁带的密度。单位为BPI。

-f<设备名称>  指定备份设备。

-h<层级>  当备份层级等于或大雨指定的层级时,将不备份用户标示为"nodump"的文件。

-n  当备份工作需要管理员介入时,向所有"operator"群组中的使用者发出通知。

-s<磁带长度>  备份磁带的长度,单位为英尺。

-T<日期>  指定开始备份的时间与日期。

-u  备份完毕后,在/etc/dumpdates中记录备份的文件系统,层级,日期与时间等。

-w  与-W类似,但仅显示需要备份的文件。

-W  显示需要备份的文件及其最后一次备份的层级,时间与日期。

范例:

#1先测试一下,如果要备份此文件系统,需多少容量,然后完整备份/boot为 /root/boot.dump ,同时升级记录档。

[root@localhost ~]# df –h

[root@localhost ~]# dump -0u  -f /root/boot.dump /boot   

#2查看有哪些系统文件被dump记录

[root@localhost dzip_bak]# dump -W

#3、用 dump 备份非文件系统,亦即单一目录的方法,将 /etc 整个目录透过 dump 进行备份,且含压缩功能。

[root@localhost ~]# dump -0j -f/root/etc.dump.bz2 /etc

名称:restore

功能:

语法:

参数:

-t  :此模式用在察看 dump起来的备份档中含有什么重要数据!类似 tar -t 功能;

-C  :此模式可以将 dump 内的数据拿出来跟实际的文件系统做比较,

     最终会列出在 dump 文件内有记录的,且目前文件系统不一样的文件;

-i  :进入互动模式,可以仅还原部分文件,用在 dump 目录时的还原!

-r  :将整个filesystem 还原的一种模式,用在还原针对文件系统的 dump 备份;

其他较常用到的选项功能:

-h  :察看完整备份数据中的inode 与文件系统 label 等资讯

-f  :后面就接你要处理的那个dump 文件罗!

-D  :与 -C 进行搭配,可以查出后面接的挂载点与 dump 内有不同的文件!

参数常用模式:

restore -t [-f dumpfile] [-h]        <==用来察看 dump 档

restore -C [-f dumpfile] [-D 挂载点] <==比较dump与实际文件

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

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

范例:

#1用 restore 观察 dump 后的备份数据内容

[root@localhost dzip_bak]# restore -t -f/root/boot.dump

#2看原文件系统与备份文件之间的差异!,查看boot目录现在与当时备份是有哪些文件不同。

[root@localhost boot]# restore -C -f/root/boot.dump

#3仅还原部分文件的 restore 互动模式

restore -i -f /root/etc.dump

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值