dd备份linux linux软件仓库

其实dd备份linux的问题并不复杂,但是又很多的朋友都不太了解linux软件仓库,因此呢,今天小编就来为大家分享dd备份linux的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

Linux系统中使用dd命令来转换和拷贝文件

dd-转换和拷贝文件

当进行非强制的转换的时候,使用指定的输入和输出块大小拷贝文件(默认是从标准输入到标准输出。)

它每次从输入读取指定大小的一个块(默认是512字节)。如果使用 bs=bytes选项,并且没有转换,除了指定 sync, noerror,或 notrunc之外,那么dd将把全部读到的数据(可以比请求读的少)写到独立的输出块去。这个输出块的长度和读到的数据完全一样,除非指定使用 sync(同步)转换,那样的话,数据结尾处将追加NUL字符(或空格,见下)。

其他情况下,输入的时候每次读一个块,然后处理,并将输出结果收集起来,最后写到指定大小的数据块中去。最终的输出块可能会比指定的大小短一些。

如果你想要在线看 manual,可以试试:

dd--help

或是

info dd

如果你想要看看这个版本如何:

dd--version

输入或输出

dd if=[STDIN] of=[STDOUT]

强迫输入或输出的Size为多少Bytes

bs: dd-ibs=[BYTE]-obs=[SIZE]

强迫一次只做多少个 Bytes

cbs=BYTES

跳过一段以后才输出

seek=BLOCKS

跳过一段以后才输入

skip=BLOCKS

当然你可以拿这个来方便的拷贝光碟(注意,你的光碟是标准的 iso9660格式才可以这么做唷!)

dd if=/dev/cdrom of=cdrom.iso

其中 if后面以及 of后面的内容依你的需求调整。

然后给系统这个指令就可以烧了:

cdrecord-v cdrom.iso

这篇不是在讲 cdrecord的,所以上面的指令是最为简单但是不一定能符合您的硬件环境...

功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用rm命令删除掉。系统默认使用标准输入文件和标准输出文件。

if=file

从 file中读而不是标准输入。

of=file

写到 file里去而不是标准输出。除非指定 conv=notrunc,否则, dd将把 file截为O字节(或由 seek=选项指定的大小)

ibs=bytes

一次读 bytes字节。默认是512。

obs=bytes

一次写 bytes字节。默认是512。

bs=bytes

一次读和写 bytes字节。这将覆盖 ibs和 obs设定的值(并且,设定 bs不等于同时将 ibs和 obs设为同一个值,至少在只使用 sync, noerror或 notrunc转换时是这样的。因为bs规定,每个输入块都应作为单独的数据块拷贝到输出,而不把较短的块组合到一起)。

cbs=bytes

为 block转换和 unblock转换指定转换块的大小。

skip=blocks

在拷贝之前,跳过输入文件的前 blocks块,每块大小为 ibs-byte字节。

seek=blocks

在拷贝之前,跳过输出文件的前 blocks块,每块大小为 obs-byte字节。

count=blocks

只拷贝输入文件的前 blocks块(每块的大小为 ibs-byte字节),而不是全部内容,直到文件末尾。

转换

conv=转换[,转换]...

将文件按转换参数指定的方式转换(在lq,rq两边没有空格)。

转换方式包括:

ascii

将EBCDIC转换成ascii。

ebcdic

将ascii转换成ebcdic。

ibm

将ascii转换成alternative ebcdic。

block

每一行输入,无论长短,输出都是 cbs字节,并且其中的lq换行rq(NEWLINE,即c中的')用空格替换。如有必要,行尾会填充空格。

unblock

用lq换行rq替换每个输入块( cbs字节大小)末尾的空格。

lcase

将大写字母转换成小写。

ucase

将小写字母转换成大写。

swab

交换每对输入字节。如果读入的字节数是奇数,最后一个字节只是简单的复制到输出(因为没有能跟它交换的字节了)(POSIX 1003.26,PASC翻译1003.2 3号和4号)。

noerror

发生读错误时,继续进行。

notrunc

不截断输出文件。

sync

用0填充到每个输入块的末尾,使其大小为 ibs字节。

例:

代码如下:

[root@localhost~]# dd if=/dev/hdx of=/dev/hdy         #将本地的/dev/hdx整盘备份到/dev/hdy

[root@localhost~]# dd if=/dev/hdx of=/path/to/image   #将/dev/hdx全盘数据备份到指定路径的image文件

[root@localhost~]# dd if=/dev/hdx| gzip/path/to/image.gz  #备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径

[root@localhost~]# dd if=/path/to/image of=/dev/hdx   #将备份文件恢复到指定盘

[root@localhost~]# gzip-dc/path/to/image.gz| dd of=/dev/hdx    #将压缩的备份文件恢复到指定盘

[root@localhost~]# dd if=/dev/hdx of=/path/to/image count=1 bs=512 #备份磁盘开始的512Byte大小的MBR信息到指定文件

[root@localhost~]# dd if=/dev/cdrom of=/root/cd.iso  #拷贝光盘数据到root文件夹下,并保存为cd.iso文件

LinuxDD备份安全可靠的数据拷贝方式linuxdd备份

Linux DD备份:安全可靠的数据拷贝方式

系统管理员和IT专业人士有一种可工具可随时使用,来保护您的数据安全的方式,那就是使用Linux DD命令进行备份。Linux DD命令可以备份文件系统以及数据,其长处在于可以备份完整的磁盘和分区,来防止分区数据整合出现丢失或出错。

Linux DD命令一般用于创建系统镜像,此镜像后续可用于恢复系统,比如Linux备份,Windows恢复,升级操作系统,等等。它拥有出色的速度,可以花很少的时间就完成系统的备份工作。

Linux DD备份命令使用起来相当简单,如果你想备份一个磁盘或者磁盘上的某一分区,你只需要使用以下命令:

dd if=/dev/sda3 of=/media/sda3-backup.img

以上命令意为,将/dev/sda3磁盘分区备份到/media/sda3-backup.img文件中。其中 if指 input file,of指 output file。分区备份完成后,还可以检查镜像文件的完整性来确保处理有效。

大多数管理服务器的Linux管理员都会使用Linux DD备份来保存服务器上的关键文件系统或数据文件。它为系统管理员或IT专业人士带来方便,可以在短时间内快速完成备份。另外,使用Linux DD备份能保证文件数据的完整性和安全性,可以提供帮助实现系统的长期正常运行。

总的来说,Linux DD备份可以弥补一些数据备份软件的不足,因为它不仅能备份一些关键的系统文件和数据文件,而且准确性极高,从而保障安全的运行环境,防止意外数据丢失。

windows和linux双系统全盘备份

大多数人日常工作所用的系统是Windows,如果想尝试或者转向Linux,那么进行Windows与Linux共存的双系统安装是个不错的主意。但双系统的安装较之单系统,在磁盘分区和引导管理器两个方面增加了复杂性,本文对双系统下引导管理器的安装来加以介绍。

笔者假定你已经有了一个可以正常运行的Win2k/XP系统,并且已经为Linux准备好了硬盘分区:Windows位于第一块硬盘的第一个分区,在 Linux下表示为hda1,在Grub下表示为(hd0,0),而Linux位于hdaX,用Grub表示为(hd0, X-1)。——Linux下的硬盘分区计数是从hda1开始的,而Grub的硬盘分区计数是从(hd0,0)开始的,所以hdaX就是(hd0,X- 1)。这里X如果在1-4之内,说明Linux分区是主分区,如果X大于4,说明Linux分区是逻辑分区,本文并不限定Linux必须位于主分区,它在逻辑分区一样是可以引导的。

首先说明本文的思路,笔者推荐由Windows到Linux的引导序列,即首先引导Windows的ntloader,然后通过 ntloader加载Linux分区的Grub引导扇区,最后通过Grub引导Linux系统。本文涉及到的引导管理器包括ntloader和Grub, ntloader是Windows系统自带的,在安装Win2k/XP后就已经安装了,Windows 2000以及Windows Xp就是由ntloader加载的。Grub是Linux系统下很强大的引导管理器,在常见的Linux版本里都是有的,一般是自动安装的。

下面具体说明安装序列:

一、在已经准备好的Linux分区上安装Grub

这个过程通常是由 Linux系统的安装程序自动进行的,当安装程序进行到引导管理器的安装,并就Grub的安装给出一些提示时,要当心了:我们选择Grub,而不是lilo,并且Grub要安装在该Linux分区,不要安装到硬盘主引导记录MBR(master boot record)上。安装程序询问Grub的安装位置时,应该是上文提到的hdaX或者(hd0,X-1),如果你写成hda或者(hd0),就会安装到 MBR上。

之所以强调Grub安装到 Linux分区,而不是MBR,因为本文是双系统安装,要顾忌到与Windows系统的兼容性(“兼容”在这里并不准确,实际是共生的意思)。我们的原则,就是把对已经安装的Windows系统的修改限制到最小的必要的程度,不去进行并非必要的修改,以此保障Linux与Windows两个系统的和平共处。“简洁即美”,“简单”也会更安全。

如果安装到MBR,也是可以的,但可能会有下面的问题:

1、如果所安装的 Windows系统修改了MBR的默认设置,那么再把Grub安装到MBR,就对MBR的内容进行了修改,可能会导致 Windows不能正常启动。通常的Windows安装并不会改动MBR的内容,但如果你安装了一些引导管理程序,它们往往是通过MBR进行设置的。时下很流行的一些“一键恢复”程序,有些也是通过MBR设置的;

2、日后重装Windows系统时,MBR里的Grub会被擦除,这会造成Linux系统不能引导。虽然这个问题也是可以解决的,但笔者更欣赏一劳永逸的安装方式,Grub安装到Linux分区下,可以避免日后的麻烦;

3、在一些个别情形下,Grub不能正常引导系统。这个现象并不常见,但仍有可能发生,要知道Grub目前仍然是版本前的软件,而将Grub装到MBR里,就会把问题弄得更复杂。

当你所安装的Linux系统不能指定将Grub安装到Linux的所在分区时,我们的选择是:

暂将Grub安装到MBR,如果Linux系统能被Grub加以引导,进入Linux系统后,我们再手工将Grub装入Linux分区,然后恢复MBR;或者在安装程序内暂时不进行Grub的安装,退出安装程序后手工安装Grub。

恢复MBR需要用DOS、 win98/me的启动软盘引导系统,以/mbr参数执行引导软盘上的磁盘分区程序fdisk.exe,即在DOS命令行(plain dos)下执行A:\>fdisk/mbr。如果机器没有软驱,那么就需要用光盘或者U盘来引导机器进入DOS;在Windows 2k/XP下,一个叫Vfloppy的软件可以用软盘镜像文件来实现对软盘的虚拟引导,如果你的机器没有USB接口(或没有可以引导DOS的U盘),也没有光驱和软驱,可以一试。

我曾经用Xubuntu的 LiveCD在一台设置了“一键恢复”的TCL电脑安装时,安装程序没有给出任何选择,自动将Grub安装到了MBR上,结果不能进入任何系统。最后还是用DOS下的A:\> fdisk/mbr恢复了MBR,能够正常引导Windows后,手工将Grub装到了Linux下的根分区,然后通过ntloader加载Grub,才实现了对 Linux的引导。

手工安装Grub的简便方法是用一张带有Grub的Linux LiveCD(比如常见的Knoppix、Morphix、Ubuntu,都是可以的),启动系统,在Linux的安装程序内如果能进入shell也是可以的,总之就是为了执行Linux指令,在终端下执行以下指令:

# grub

grub> root(hd0,X-1)

grub> setup(hd0,X-1)

grub> quit

以上指令首先定位Grub所需的/boot目录在分区(hd0,X-1),然后将Grub的引导代码写入(hd0,X-1)分区的第一个扇区,所以你首先应该确保(hd0,X-1)分区内的/boot/grub目录下已经有stage1、stage2、*_stage*等文件,这些文件可以通过释放Grub的打包文件来获得,或者直接从LiveCD光盘内的/boot/grub目录复制。

如果LiveCD带有grub-install脚本,也可以直接执行

# mount/dev/hdaX/mnt

# grub-install--root-directory=/mnt/dev/hdaX

以上指令首先将带有Grub目录/boot/grub的/hdaX挂载到/mnt,然后将Grub安装到/hdaX。

二、将Grub装配到ntloader内

Grub已经安装到了Linux分区内,但它还不能引导系统,我们需要把它和ntloader联接起来,由ntloader对Grub加以引导。这是通过把hdaX分区内的Grub引导扇区转换为文件,并装配到Windows的ntloader内来实施的。

仍然用LiveCD启动Linux系统(因为你所安装的Linux系统目前还是不能引导的),或者在安装程序可以进入shell的情况下,执行以下指令:

# mount-t vfat/dev/hda1/mnt

# dd if=/dev/hdaX of=/mnt/linux.lnx bs=512 count=1

以上两条指令将Windows的启动分区(本文中为hda1)挂载到/mnt下,然后把Linux分区(hdaX)的第一个扇区(大小为512字节)复制为Windows启动分区根目录下名为linux.lnx的文件。

注意:如果你的Windows启动分区(即Windows下的C盘)不是fat32文件系统,而是ntfs文件系统,你需要在软驱内放入格式化的DOS软盘,并将第一条指令替换为:

# mount-t msdos/dev/fd0/mnt

因为ntfs文件系统不经过特殊处理,在Linux下是不可写的,即使你将指令中的vfat替换为ntfs,实现了挂载,也是一样,所以我们在这里把linux.lnx写入DOS格式的软盘,然后通过软盘在Windows下把linux.lnx放入C盘。

接着是在Windows下编辑C盘根目录下的boot.ini文件,boot.ini通常是隐藏、只读的系统文件,所以需要把它的“隐藏”、“只读”属性去掉,才可以编辑。在“我的电脑”工具菜单“文件夹选项”下的“查看”栏中取消“隐藏受保护的操作系统文件”和“隐藏已知文件类型的扩展名”,并选择“显示所有文件和文件夹”,就可以看到C盘根目录下的boot.ini文件了。在boot.ini内的[operating systems]栏增添一行:

c:\linux.lnx=”Grub Menu”

并将[boot loader]栏内的“timeout=0”,改为“timeout=5”,这样引导Windows时将会显示带有“Grub Menu”字样的操作系统选择菜单,并持续5秒钟,如果选择Grub Menu,就会进入Grub菜单。

三、设置menu.lst文件

menu.lst是对 Grub进行设置的一个文本文件,可以用文本编辑器加以编辑,位于/boot/grub目录内。我们在前面虽然已经把 Grub安装到了Linux根分区上,但如果没有生成menu.lst文件并对它加以设置,Grub是没有任何作用的。对menu.lst文件进行设置是个复杂的工作,特别是有关kernel和initrd的各种特殊参数,幸而系统安装的menu.lst文件内通常有详尽的注释。并且你的Grub如果是由安装程序自动设置的,那么通常menu.lst已经被设置好了,我们仅仅根据自己的需要进行一些修改和调整,而不必重写menu.lst。即使你的 menu.lst不是由安装程序生成的,也不必担心,还可以参考、分析安装光盘或者LiveCD上的menu.lst文件来对Linux分区内的 menu.lst加以设置。

如果Grub已经由安装程序装到了MBR,并且能够引导所安装的Linux,那么自动生成的Linux系统根分区下的/boot/grub/menu.lst就已经被配置好了,我们只须把Grub重新安装到Linux系统根分区,恢复Windows下的原初MBR,按照上文的方法把Linux系统根分区的Grub引导代码装载到ntloader就可以了。因为Grub的安装位置不是在menu.lst文件内指定,而是在 linux shell中执行grub,进入Grub命令行后,应用Grub的内部指令root和setup来指定,或者在可执行的shell脚本文件grub- install中,以参数的形式指定设备文件(如/dev/hda或/dev/hdaX)。

假使所安装的Linux系统没有使用Grub,而是使用lilo作为引导管理器,只要lilo能够实现引导,我们就可以借鉴linux系统内的/etc/lilo.conf文件来对menu.lst加以设置。Lilo.conf是lilo的配置文件,其格式虽然与menu.lst不同,但关键部分是相同的,如指定kernel和initrd的位置,向内核传递引导参数,指定缺省引导的系统和延时时长,在lilo.conf中内核参数是在 APPEND后,我们可以将lilo.conf中的参数移植到menu.lst中。

四、Menu.lst的一个实例:

以下作为实例的 menu.lst是我在windows 2000系统中安装的grub4nt的配置文件,所以可以看到(hd0,0)既是Windows的引导分区,又是Grub文件及一些linux内核文件的所在分区。虽然Grub4nt不能在menu.lst中应用savedefault命令外(可能因为grub4nt不支持在fat32文件系统上的写操作),其他设置与标准的Gnu Grub并无不同,大家可以通过这个实例来具体了解配置文件menu.lst。

default 0

timeout 5

foreground= 333333

background= eeeeee

color light-gray/blue black/light-gray

gfxmenu(hd0,0)/boot/morphix/message

title ubuntu linux

kernel(hd0,2)/vmlinuz ro root=/dev/hda3

title ubuntu linux(rescue mode)

kernel(hd0,2)/vmlinuz ro single root=/dev/hda3

title Other operating systems:

root

title PUD LiveHD

kernel(hd0,0)/boot/pud/linux lang=us ramdisk_size=100000 init=/etc/init apm=power-off vga=791 nomce initrd=miniroot.gz quiet BOOT_IMAGE=knoppix

initrd(hd0,0)/boot/pud/miniroot.gz

title Windows

root(hd0,0)或者 rootnoverify(hd0,0)

makeactive

chainloader+1

title submenu-> Morphix LiveHD

configfile(hd0,1)/boot/grub/menu.lst

这里不对menu.lst做全面解释了,只结合实例,介绍几个重点环节,完整说明请阅读网上Grub的使用手册。

Default 0

default用来设置缺省引导系统,数字序列从0开始,本例会在menu.lst内自动寻找以title开始的词条,并引导第一个title词条,你可以根据自己的需要改成其他数字,如1(第二个title词条);

timeout 5

timeout用来设置Grub引导的延时时长,本例中为5秒钟,系统在等待5秒后用户如果没有手动选择要引导的系统,Grub就会自动引导由default指定的系统;

title ubuntu linux

title用来指示 Grub所引导系统的设置的开始,title后面的文字在Grub菜单中会被作为系统的名称显示出来,本例中Grub引导菜单会显示 ubuntu linux、ubuntu linux(rescue mode)、other operating systems、PUD LiveHD、Windows、submenu-> Morphix六个词条,其中第三个词条并非一个真实的系统,仅起指示的作用,故其root部分为空;

kernel(hd0,2)/vmlinuz ro root=/dev/hda3

kernel用来指示linux系统的内核文件的所在位置及引导参数,(hd0,2)/vmlinuz指内核为hda3(第一块硬盘第三个主分区)内根目录下的vmlinuz文件,根文件系统(/)位于hda3,

注意:指示内核文件所用路径中的分区必须用Grub的表示法,不能用linux的表示法,而根文件系统的位置必须用linux下的设备文件名来表示(本例中为/dev/hda3)。有时,vmlinuz并不是真实的内核文件,

而是内核文件的一个链结文件(link file),但这不影响Grub的引导,它能根据链结文件找到真实的内核并加以引导,这在内核文件带有很长的版本号时会非常有用,简化了内核文件名的拼写,减少了拼写错误的出错几率

阅读剩余
THE END