Rumah  >  Artikel  >  Tutorial sistem  >  Analisis arahan dd Linux: contoh terperinci sandaran data dan penukaran format

Analisis arahan dd Linux: contoh terperinci sandaran data dan penukaran format

王林
王林ke hadapan
2024-01-05 15:46:12974semak imbas

Arahan

dd digunakan terutamanya untuk sandaran data dan boleh melakukan penukaran format semasa proses sandaran. Malah, arahan dd boleh menyalin data sumber ke dalam data sasaran, dan sandaran data boleh dilakukan tanpa mengira sama ada data sumber ialah fail, partition, cakera atau CD.

Format asas perintah

dd adalah seperti berikut:

[root@localhost ~]# dd if="输入文件" of="输出文件" bs="数据块" count="数量"

Parameter:

  1. jika: mentakrifkan fail untuk data input, atau ia boleh menjadi peranti input
  2. daripada: mentakrifkan fail untuk data output, atau ia boleh menjadi peranti output
  3. bs: Tentukan saiz blok data, iaitu, tentukan bilangan bait untuk dibaca atau ditulis pada satu masa. Saiz blok data corak ialah 512 bait
  4. kiraan: Nyatakan bilangan bs
  5. conv=flag: Tukar fail berdasarkan bendera. Tanda-tandanya termasuk yang berikut:
    • ascii: Tukar daripada kod EBCDIC kepada kod ASCII
    • ebcdic: Tukar daripada kod ASCII kepada kod EBCDIC
    • ibm: Tukar daripada kod ASCII kepada kod EBCDIC gantian
    • blok: Gantikan baris baharu dalam blok aksara yang berakhir dengan ruang yang sama panjang
    • nyahsekat: Gantikan ruang belakang dalam blok bersaiz cbs dengan aksara baris baharu
    • l: Tukar aksara besar kepada huruf kecil
    • notrunc: Jangan potong fail output;
    • ucase: Tukar aksara kecil kepada huruf besar
    • swab: Tukar setiap pasangan bait data input
    • noerror: Teruskan membaca data selepas ralat berlaku
    • segerak: Isikan setiap blok data input dengan aksara NUL mengikut saiz ibs;
【Contoh 1】Fail sandaran

[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
#查看一下生成的备份文件的大小

【Contoh 2】Pembahagian sandaran sebagai fail sandaran

[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
Jika anda ingin membuat sandaran terus partition ke partition lain, anda perlu menghasilkan partition baharu Saiz partition ini tidak boleh lebih kecil daripada partition source, dan hanya boleh sama atau lebih besar daripada partition source. Perintahnya adalah seperti berikut:

[root@localhost ~]# dd if=/dev/sda1 of=/dev/sdb1
#如果需要恢复,则只需把输入项和输出项反过来即可,命令如下
[root@localhost ~]# dd if=/dev/sdb1 of=/dev/sda1

【Contoh 3】Sandaran cakera penuh

[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

【Contoh 4】Salin cakera liut

[root@localhost ~]# dd if=/dev/fd0 of=/tmp/fd.bak
#在Linux中软盘的设备文件名是/dev/fd0
#这条命令先把软盘中的数据保存为临时数据文件
[root@localhost ~]# dd if=/tmp/fd.bak of=/dev/fd0
#然后更换新的软盘,把数据备份复制到新软盘中,就实现了软盘的复制
Jika anda perlu membuat sandaran cakera, gunakan arahan dd untuk mencipta imej ISO cakera dalam Linux. Perintahnya adalah seperti berikut:

#制作光盘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
EULAisolinux repodata RPM-GPG-KEY-CentOS-Security-6
GPL Packages RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Testing-6
#数据是光盘当中的数据,这个ISO镜像是可以被当作真正的光盘使用的

Kadangkala kita perlu mencipta fail dengan saiz yang ditentukan Contohnya, apabila menambah partition swap, kita perlu mencipta fail dengan saiz yang ditentukan. Perintahnya adalah seperti berikut:

[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

Arahan dd adalah serupa dengan fungsi alat GHOST apabila menyalin keseluruhan cakera Walau bagaimanapun, data cakera keras yang disalin oleh arahan dd jauh lebih stabil daripada data cakera keras yang disalin oleh GHOST. Walaupun arahan dd berkuasa, ia juga mempunyai kelemahan yang jelas, iaitu ia mengambil masa yang lama untuk menyalin 15 hingga 25 minit untuk menyalin 100GB data (bergantung pada prestasi pelayan).

Terdapat banyak kaedah dan alatan untuk sandaran data, seperti arahan tar dan cpio. Bagi alat replikasi rangkaian, seperti rsync dan scp, anda memerlukan pengetahuan rangkaian yang agak lengkap untuk mempelajarinya dan tidak akan diperkenalkan di sini.

Atas ialah kandungan terperinci Analisis arahan dd Linux: contoh terperinci sandaran data dan penukaran format. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam