cpio
cpio 命令主要有三种基本模式:“-o”模式指的是 copy-out 模式,就是把数据备份到文件库中;
“-i”模式指的是 copy-in 模式,就是把数据从文件库中恢复;“-p”模式指的是复制模式,就是不
把数据备份到 cpio 库中,而是直接复制为其他文件。
[root@localhost ~]# cpio -o[vcB] > [文件|设备] #备份
选项:
-o:copy-out 模式,备份
-v:显示备份过程
-c:使用较新的 portable format 存储方式
-B:设定输入输出块为 5120bytes,而不是模式的 512butes
[root@localhost ~]# cpio -i[vcdu] < [文件|设备] #还原
选项:
-i:copy-in 模式,还原
-v:显示还原过程
-c:使用较新的 portable format 存储方式
-d:还原时自动新建目录
-u:自动使用较新的文件覆盖较旧的文件
[root@localhost ~]# cpio -p 目标目录
例子:利用 find 命令找到文件,备份
[root@localhost ~]# find /etc -print | cpio -ocvB > /root/etc.cpio
#利用 find 指定要备份/etc/目录,使用>导出到 etc.cpio 文件
[root@localhost ~]# ll -h etc.cpio
-rw-r--r--. 1 root root 21M 6 月 5 12:29 etc.cpio
#etc.cpio 文件生成
[root@localhost ~]# cpio -idvcu < /root/etc.cpio
#还原 etc 的备份
-p复制模式
[root@localhost ~]# cd /tmp/
#进入/tmp 目录
[root@localhost tmp]# rm -rf *
#删除/tmp 目录中所有数据
[root@localhost tmp]# mkdir test
#建立备份目录
[root@localhost tmp]# find /boot/ -print | cpio -p /tmp/test
#备份/boot/目录到/tmp/test/目录中
[root@localhost tmp]# ls test/
boot
#在/tmp/test/目录中备份出了 boot 目录
diff
[root@localhost ~]# diff 选项 old new
#比较 old 和 new 文件的不同
选项:
-a 将任何文档当做文本文档处理
-b 忽略空格造成的不同
-B 忽略空白行造成的不同
-I 忽略大小写造成的不同
-N 当比较两个目录时,如果某个文件只在一个目录中,则在另一个目录中视作空
文件
-r 当比较目录时,递归比较子目录
-u 使用同一的输出格式
[root@localhost ~]# mkdir test
#建立测试目录
[root@localhost ~]# cd test
#进入测试目录
[root@localhost test]# vi old.txt
our
school
is
atguigu
#文件 old.txt,为了一会输出便于比较,每行分开
[root@localhost test]# vi new.txt
our
school
is
atguigu
in
Beijing
#文件 new.txt
[root@localhost test]# diff -Naur /root/test/old.txt /root/test/new.txt > txt.patch
#比较两个文件的不同,同时生成 txt.patch 补丁文件
[root@localhost test]# vi txt.patch
#查看下这个文件
--- /root/test/old.txt 2012-11-23 05:51:14.347954373 +0800
#前一个文件
+++ /root/test/new.txt 2012-11-23 05:50:05.772988210 +0800
#后一个文件
—————————————————————————————
@@ -2,3 +2,5 @@
school
is
atguigu
+in
+beijing
打补丁
[root@localhost test]# patch –pn < 补丁文件
#按照补丁文件进行更新
选项:
-pn n 为数字。代表按照补丁文件中的路径,指定更新文件的位置。
“-pn”不好理解,我们说明下。补丁文件是要打入旧文件的,但是你当前所在的目录和补丁文
件中的记录的目录是不一定匹配的,所以就需要“-pn”来同步两个目录。
比如我当前是在“/root/test”目录中(我要打补丁的旧文件就在当前目录下),补丁文件中记
录的文件目录为“/root/test/old.txt”,这时如果写入“-p1”(在补丁文件目录中取消一级目录)
那么补丁文件就会打入“/root/test/root/test/old.txt”文件中,这显然是不对的。那如果写入的
是“-p2”(在补丁文件目录中取消二级目录)那么补丁文件打入的就是“/root/test/test/old.txt”,
这显然也不对。如果写入的是“-p3”(在补丁文件目录中取消三级目录)那么补丁文件就是打入的
“/root/test/old.txt”,我们的 old.txt 文件就在这个目录下,所以就应该是“-p3”。
那么我们更新下“old.txt”文件,命令如下:
[root@localhost test]# patch -p3 < txt.patch
patching file old.txt
#给 old.txt 文件打补丁
[root@localhost test]# cat old.txt
#查看下 old.txt 的内容吧。
our
school
is
atguigu
in
Beijing
#多出来了 in Beijing 两行