怎么把一个文件复制到另一个文件的开头部分

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

怎么把一个文件复制到另一个文件的开头部分

#1

帖子 NewUserFF » 2013-02-06 17:50

现在有两个文件:part.img(大小512B) 和 full.img(大小1.44M),part.img是一个启动扇区,我想把part.img复制到full.img的开头部分,也就是说,把full.img引导扇区部分替换为part.img,请问这个应该怎么做?我试过了dd命令:

代码: 全选

dd bs=512 count=1 if=part.img of=full.img
,但是这样原来的full.img就完全被覆盖了,和我的想法不一样,我只是想覆盖前512个字节,其他字节都保留,请问该怎么做
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: 怎么把一个文件复制到另一个文件的开头部分

#2

帖子 cjxgm » 2013-02-06 22:38

记得是这样

代码: 全选

dd bs=512 count=1 if=part.img of=full.img conv=notrunc
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
daf3707
论坛版主
帖子: 12731
注册时间: 2007-06-13 15:57
来自: 在他乡

Re: 怎么把一个文件复制到另一个文件的开头部分

#3

帖子 daf3707 » 2013-02-06 22:45

:em06 这俩猫
头像
枫叶饭团
帖子: 14683
注册时间: 2010-06-16 1:05
系统: Mac OS X
来自: Tencent
联系:

Re: 怎么把一个文件复制到另一个文件的开头部分

#4

帖子 枫叶饭团 » 2013-02-06 22:47

好基友一辈子
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: 怎么把一个文件复制到另一个文件的开头部分

#5

帖子 cjxgm » 2013-02-06 23:02

ls 两个严肃点 :em85
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

Re: 怎么把一个文件复制到另一个文件的开头部分

#6

帖子 NewUserFF » 2013-02-07 10:37

cjxgm 写了:记得是这样

代码: 全选

dd bs=512 count=1 if=part.img of=full.img conv=notrunc
谢啦兄弟!还想再问一个问题,dd bs=512 count=2dd bs=1024 count=1有什么区别?只是执行的过程不一样吗?第一个命令分两块复制,第二个命令一次复制成功,是这样吗?对于最终的文件有没有什么区别?
头像
dryland718
帖子: 287
注册时间: 2011-08-17 12:54

Re: 怎么把一个文件复制到另一个文件的开头部分

#7

帖子 dryland718 » 2013-02-07 10:54

我只知道windows里面copy的二进制模式可以。。
头像
cjxgm
帖子: 1952
注册时间: 2010-04-23 20:40
系统: Arch Linux
来自: 浙江·杭州
联系:

Re: 怎么把一个文件复制到另一个文件的开头部分

#8

帖子 cjxgm » 2013-02-07 15:41

NewUserFF 写了:dd bs=512 count=2dd bs=1024 count=1有什么区别?只是执行的过程不一样吗?第一个命令分两块复制,第二个命令一次复制成功,是这样吗?对于最终的文件有没有什么区别?
网上说:
确定硬盘的最佳块大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
维基说:
For some uses of the dd command, block size may have an effect on performance. For example, when recovering data from a hard disk, a small block size will generally cause the most bytes to be recovered. For greater speed during copy operations, a larger block size may be used. When dd is used for network transfers, the block size may have an impact on packet size, depending on the network protocol used.
也就是说,对文件是没影响的,但是对速度会有影响;如果通过网络用 dd 来传输数据,块大小会影响数据包大小,从而影响传输速度和丢包率
Clanjor Prods. | Develop for Developers. (C++, Lua) | 作曲编曲 | 实时渲染引擎
头像
NewUserFF
帖子: 413
注册时间: 2010-11-19 22:55

Re: 怎么把一个文件复制到另一个文件的开头部分

#9

帖子 NewUserFF » 2013-02-08 9:40

cjxgm 写了:
NewUserFF 写了:dd bs=512 count=2dd bs=1024 count=1有什么区别?只是执行的过程不一样吗?第一个命令分两块复制,第二个命令一次复制成功,是这样吗?对于最终的文件有没有什么区别?
网上说:
确定硬盘的最佳块大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
通过比较以上命令输出中所显示的命令执行时间,即可确定系统最佳的块大小。
维基说:
For some uses of the dd command, block size may have an effect on performance. For example, when recovering data from a hard disk, a small block size will generally cause the most bytes to be recovered. For greater speed during copy operations, a larger block size may be used. When dd is used for network transfers, the block size may have an impact on packet size, depending on the network protocol used.
也就是说,对文件是没影响的,但是对速度会有影响;如果通过网络用 dd 来传输数据,块大小会影响数据包大小,从而影响传输速度和丢包率
Thank you!
回复