Linux ddコマンドの詳細:データバックアップ、バックアップ中のフォーマット変換の例
ddコマンドは主にデータバックアップに用いられ、バックアップ中にフォーマット変換を行うことができる。実はddコマンドは、ソースデータをターゲットデータにコピーすることができ、ソースデータがファイル、パーティション、ディスク、光ディスクであっても、データバックアップを行うことができます。
ddコマンドの基本フォーマットは以下の通りです。
[root@localhost ~]# dd if="输入文件" of="输出文件" bs="数据块" count="数量"パラメータ:
[root@localhost ~]# dd if=/etc/httpd/conf/httpd.conf of=/tmp/httpd.bak 记录了67+1 的读入 #数据占了写满的67个数据块,以及1个没有写满的数据块 记录了67+1 的写出 #默认数据块大小是512字节 34439字节(34 kB)已复制,0.0524897 秒,656 kB/秒 #如果要备份文件,那么dd命令和cp命令非常类似 [root@localhost ~]# ll -h /tmp/httpd.bak -rw-r--r--.1 root root 34K 6月 5 18:04 /tmp/httpd.bak #查看一下生成的备份文件的大小【例2】バックアップパーティションが1つのバックアップファイルである
[root@localhost ~]# df -h 文件系统 容量 已用 可用 已用%% 挂载点 /dev/sda3 20G 2.0G 17G 11% / tmpfs 306M 0 306M 0% /dev/shm /dev/sda1 194M 27M 157M 15% /boot /dev/sr0 3.5G 3.5G 0 100% /mnt/cdrom #查看一下分区容量,我们备份/boot分区 [root@localhost ~]# dd if=/dev/sda1 of=/tmp/boot.bak #备份完成 [root@localhost ~]# ll -h /tmp/boot.bak -rw-r--r--.1 root root 200M 6月 5 18:14 /tmp/boot.bak #查看生成的备份文件 #如果需要恢复,则执行以下命令 [root@localhost ~]# dd if=/tmp/boot.bak of=/dev/sda1
パーティションを直接別のパーティションにバックアップするには、ソースパーティションよりも小さいサイズではなく、ソースパーティションよりも大きいサイズまたは大きいサイズの新しいパーティションを生成する必要があります。コマンドは次のとおりです。
[root@localhost ~]# dd if=/dev/sda1 of=/dev/sdb1 #如果需要恢复,则只需把输入项和输出项反过来即可,命令如下 [root@localhost ~]# dd if=/dev/sdb1 of=/dev/sda1【例3】ディスク全体のバックアップ
[root@localhost ~]# dd if=/dev/sda of=/dev/sdb #把磁盘a备份到磁盘b [root@localhost ~]# dd if=/dev/sda of=/tmp/disk.bak #把磁盘a备份成文件disk.bak #备份恢复 #如果要备份到另一块硬盘上,那么,当源硬盘数据损坏时,只需用备份硬盘替换源硬盘即可 #如果要备份成文件,那么在恢复时需要把备份数据复制到其他Linux中,然后把新硬盘安装到这台Linux #服务器上,再把磁盘备份数据复制到新硬盘中。命令如下 [root@localhost ~]# dd if=/tmp/disk.bak of=/dev/sdb【例4】フロッピーディスクのコピー
[root@localhost ~]# dd if=/dev/fd0 of=/tmp/fd.bak #在Linux中软盘的设备文件名是/dev/fd0 #这条命令先把软盘中的数据保存为临时数据文件 [root@localhost ~]# dd if=/tmp/fd.bak of=/dev/fd0 #然后更换新的软盘,把数据备份复制到新软盘中,就实现了软盘的复制
バックアップが必要なディスクがあれば、Linuxではddコマンドを使用してディスクのISOミラーを作成します。コマンドは次のとおりです。
#制作光盘ISO镜像 [root@localhost ~]# dd if=/dev/cdrom of-/tmp/cd.iso #把光盘中所有的数据制作成ISO镜像 [root@localhost ~J # mkdir /mnt/cd #建立一个新的挂载点 [root@localhost ~]# mount -o loop /tmp/cd.iso /mnt/cd #挂栽ISO文件到挂载点 [root@localhost ~]# cd /mnt/cd #进入挂栽点 [root@localhost cd]# ls CentOS_BuildTag images RELEASE-NOTES-en-tJS.html RPM-GPG-KEY-CentOS-Debug-6 TRANS.TBL EULA isolinux repodata RPM-GPG-KEY-CentOS-Security-6 GPL Packages RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Testing-6 #数据是光盘当中的数据,这个ISO镜像是可以被当作真正的光盘使用的
swapパーティションを追加する場合、指定したサイズのファイルを作成する必要がある場合があります。たとえば、ddコマンドも使用します。コマンドは次のとおりです。
[root@localhost ~]# dd if=/dev/zero of=/tmp/testfile bs=1M count=10 #数据输入项是/dev/zero会向目标文件中不停地写入二进制的0 #指定数据块大小是1MB #指定生成10个数据块。也就是定义输出的文件大小为10MB 记录了10+0 的读入 #显示数据占满了10个数据块 记录了10+0 的写出 #不过这里数据块的大小已经是1MB了 10485760字节(10 MB)已复制,0.00709902 秒,1.5 GB/秒 [root@localhost ~]# ll -h /tmp/testfile -rw-r--r--.1 root root 10M 6月 5 18:46 /tmp/testfile #生成的testfile文件的大小刚好是10MB
ddコマンドはディスク全体のコピーを行う場合、GHOSTツールの機能に似ていますが、ddコマンドでコピーしたハードディスクデータはGHOSTでコピーしたハードディスクデータよりずっと安定しています。ddコマンドは強力ですが、コピー時間が長く、100 GBのデータをコピーするのに15~25分かかる(サーバの性能によって異なる)という明らかな欠点もあります。
データバックアップを実現するには、tarコマンドやcpioコマンドなど、多くの方法とツールがあります。rsyncやscpなどのネットワークレプリケーションツールについては、より完璧なネットワーク知識が必要で、ここでは紹介しません。
ここでLinux ddコマンドについて詳しく説明します:データバックアップ、バックアップ中にフォーマット変換を行うケースについての記事を紹介します。Linux ddコマンドの内容については、以前の記事を検索するか、次の関連記事を引き続き参照してください。これからもよろしくお願いします。