LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5425|回复: 6

终于实现了,我可以用dd命令去备份文件指定的部分了。[dd应用实例]

[复制链接]
发表于 2004-5-18 22:18:14 | 显示全部楼层 |阅读模式
终于实现了,我可以用dd命令去备份文件指定的部分了。

举例说明:假如我有一个文件abc.gz,大小为83456k,我想用dd命令实现如下备份结果:首先将备份分成三个部分,第一部分为备份文件abc.gz的前10000k,第二部分为中间的70000k,最后备份后面的3456k.

备份方法如下三条命令:
dd if=abc.gz of=abc.gz.bak1 bs=1k count=10000
dd if=abc.gz of=abc.gz.bak2 bs=1k skip=10000 count=70000
dd if=abc.gz of=abc.gz.bak3 bs=1k skip=80000

恢复方法如下:
dd if=abc.gz.bak1 of=abc.gz
dd if=abc.gz.bak2 of=abc.gz bs=1k seek=10000
dd if=abc.gz.bak3 of=abc.gz bs=1k seek=80000

这时你查看一下恢复的文件将和你原来的文件一模一样,说明备份成功!

***说明一下:***
bs=xxx这个选项是指你要备份时一次性创建的块大小,而count=xxx则是指从备份的开头开始算总共备份多少块.
也就是说假如你的bs=3k而count=5,则说明你一个块为3k,总共5个块,则备份了原文件的15k(3k*5=15k).
而skip=xxx则是在备份时对if后面的部分也就是原文件跳过多少块再开始备份,相反seek=xxx则是在备份时对of后面的部分也就是目标文件跳过多少块再开始写。

我是这样实现的,成功了,有不当之处望指出!谢谢!
发表于 2004-5-18 22:37:10 | 显示全部楼层
嗯,dd本来就是Unix备份的传统工具。它的好处在于无需考虑备份文件所在的文件系统以及其本身文件结构。
 楼主| 发表于 2004-5-18 22:41:27 | 显示全部楼层
是呀,dd功能强大,无用拷到文件系统,也不管是备份文件还是备份分区或整个硬盘,总之只是硬盘上的东东都行,但实现我说的那个我费挺大个劲才弄成,主要是不明seek skip count bs这些选项。这还要感谢java兄,是他给我一个教程看了以后我才有启发的。
发表于 2004-5-18 23:05:07 | 显示全部楼层
最初由 gao_linfeng 发表
是呀,dd功能强大,无用拷到文件系统,也不管是备份文件还是备份分区或整个硬盘,总之只是硬盘上的东东都行,但实现我说的那个我费挺大个劲才弄成,主要是不明seek skip count bs这些选项。这还要感谢java兄,是他给我一个教程看了以后我才有启发的。

呵呵,其实要学会养成阅读man手册或者--help输出才行,这才是学习正道。
至于dd命令,dd --help即可得到这几个选项的概要描述,已经够用了。我之前备份软盘时,也是快速浏览了一下这个--help输出。
发表于 2004-5-19 00:38:20 | 显示全部楼层
最初由 gao_linfeng 发表
总之只是硬盘上的东东都行

Then how about this:
# dd if=/dev/cdrom of=cdimg.iso
发表于 2004-5-19 03:54:43 | 显示全部楼层
socket file 很奇怪??
  1. # file unixs
  2. unixs: socket
  3. # du -s unixs
  4. 0       unixs
复制代码

没有size ?
:confused:
发表于 2004-5-19 05:17:30 | 显示全部楼层
socket,你就当是一个监听器就是了,当然没大小。写进去的东西,如果不监听,就直接丢弃。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表