一、打包命令:tar
之前谈到的命令大多仅能针对单一文件来进行压缩,虽然gzip与bzip2也能够针对目录来进行压缩,但是,这两个命令对目录的压缩指的是将目录内的所有文件"分别"进行压缩的操作。这种将多个文件或目录包成一个大文件的命令功能就是tar命令,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
1.1 参数
(1)-c:新建打包文件
(2)-f:后面要接被处理的文件名。建议-f单独写一个参数
(3)-z:以gzip形式将打包的文件压缩,此时文件名最好为*.tar.gz
(4)-j:以bzip2形式将打包的文件压缩,此时文件名最好为*.tar.bz2
(5)-t:查看打包文件的内容含有哪些文件名,重点在查看文件名
(6)-r:向打包文件中追加新内容,-r 要写的新内容
(7)-v:在压缩/解压缩过程中,将正在处理的文件名显示出来
(8)-x:解压;-xz:解压gzip压缩的归档文件;-xj 解压bzip2压缩的归档文件
(9)-C:指定解压路径
(10)–delete:删除
(11)–remove-files:打包压缩的同时删除源文件
(12)&& 两步 :前一步解压文件,后一步把原文件删掉。
1.2 举例
(1)将文件/etc/打包为etc.tar
(2)以gzip形式将文件/boot/打包压缩;以bzip2形式将文件/tmp/打包压缩
(3)查看打包文件etc.tar(后面还有很多内容)
(4)先输入命令tar -tf etc.tar |grep hosts查看etc.tar中含有hosts的文件,其中有一个文件/etc/hosts,然后输入 tar --delete etc/hosts -f etc.tar命令删除文件/etc/hosts,再查看发现没有此文件了,说明删除成功
(5)向打包文件中追加新的内容/root/anaconda-ks.cfg.bak ,然后输入 tar -tf etc.tar |grep anaconda-ks.cfg.bak查看追加成功
(6)查看有关hosts的详细信息
(7)tar xzf boot.tar.gz:解压gzip压缩的归档文件;tar xjf boot.tar.bz2:解压bzip2压缩的归档文件
二、备份工具:cpio
cpio可以备份任何东西,包括设备文件。不过cpio有个大问题,就是cpio不会主动去找文件来备份,要配合find等可以找到文件名的命令来告知cpio该被备份的数据在哪里。cpio一共有三种模式:
1.Copy-out模式:此模式下,cpio将向归档文件中拷入文件,即进行归档操作,所以成为归档模式。它会从标准输入中读取待归档的文件,将它们归档到目标目标中,若未指定归档的目标,将归档到标准输出中。
2.Copy-in模式:此模式下,cpio将从归档文件中提取文件,或者列出归档文件中的文件列表。它将从标准输入中读取归档文件。
3.Copy-pass模式:此模式下,cpio拷贝一个目录树(即目录中所有文件)到另一个目录下,并在目标目录下以同名的子目录存在。
2.1 选项
(1) -F :指定归档文件
(2) -i:copy-in模式,提取
(3) -o:copy-out 模式,将资料copy输出到文件或装置上
(4) -p: copy-pass模式,即目录拷贝模式
(5) -A: 追加新文件,且这个备份档必须存放在磁盘上,而不能放置在磁带机里
(6) -d:需要时自动创建目录
(7) -v:显示详细信息
(8) -t :查看cpio建立的文件或装置的内容
2.2 举例
(1)把当前的文件归档到/tmp/目录下,因为有-v,因此会显示详细信息(后面还有很多)(2)把当前的文件归档到/tmp/目录下的tree2.cpio中,–null是解析空字符
(3)以下两个命令都可以查看tree1.cpio下的归档内容
(4)cpio -t -F /tmp/home1.cpio /root/*
查看home1.cpio归档文件里的 /root/下的内容 (没有隐藏文件)
(5)cpio -t -F /tmp/home1.cpio /root/.*
查看home1.cpio归档文件里的 /root/下的内容 (全隐藏文件)
(6)cpio -t -F /tmp/home1.cpio /root/{.,}
查看home1.cpio归档文件里的 /root/下的内容 (所有文件)
(7)ls /root/test.txt |cpio -oA -F /tmp/home1.cpio 向归档文件中追加文件
(8)find /boot -depth -print0 |cpio -oA -F /tmp/home1.cpio 添加新目录
(9)cpio -idv -F /tmp/home1.cpio 提取文件
(10)find ~ -depth -print0 | cpio --null -pvd /tmp/abc 复制~下文件到/tmp/abc/root/