Maison  >  Article  >  Tutoriel système  >  Analyse des commandes Linux dd : exemples détaillés de sauvegarde de données et de conversion de format

Analyse des commandes Linux dd : exemples détaillés de sauvegarde de données et de conversion de format

王林
王林avant
2024-01-05 15:46:121045parcourir

La commande

dd est principalement utilisée pour la sauvegarde des données et peut effectuer une conversion de format pendant le processus de sauvegarde. En fait, la commande dd peut copier les données source dans les données cible et la sauvegarde des données peut être effectuée indépendamment du fait que les données source soient un fichier, une partition, un disque ou un CD.

Le format de base de la commande

dd est le suivant :

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

Paramètres :

  1. if : définit le fichier pour les données d'entrée, ou il peut s'agir d'un périphérique d'entrée ;
  2. of : définit le fichier pour les données de sortie, ou il peut s'agir d'un périphérique de sortie ;
  3. bs : spécifiez la taille du bloc de données, c'est-à-dire définissez le nombre d'octets à lire ou à écrire en même temps. La taille du bloc de données de modèle est de 512 octets ;
  4. count : Précisez le nombre de bs ;
  5. conv=flag : convertit les fichiers en fonction des indicateurs. Les signes sont les suivants :
  6. ascii : Convertir du code EBCDIC en code ASCII ;
  7. ebcdic : Convertir du code ASCII en code EBCDIC
    • ibm : Conversion du code ASCII en code EBCDIC de remplacement
    • block : remplacez la nouvelle ligne dans le bloc de caractères de fin par un espace de longueur égale ;
    • unblock : remplacez les espaces de fin dans les blocs de taille CBS par un caractère de nouvelle ligne ;
    • lcase : convertit les caractères majuscules en minuscules ;
    • notrunc : Ne tronque pas le fichier de sortie
    • ucase : convertit les caractères minuscules en majuscules ;
    • écouvillon : échangez chaque paire d'octets de données d'entrée ;
    • noerror : continuez à lire les données après qu'une erreur se produit ;
    • sync : remplissez chaque bloc de données d'entrée avec des caractères NUL à la taille de ibs ; lorsqu'ils sont combinés avec block ou unblock, des espaces seront utilisés à la place des caractères NUL ;
    • 【Exemple 1】Fichier de sauvegarde
    • [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
      #查看一下生成的备份文件的大小
    • 【Exemple 2】Partition de sauvegarde en tant que fichier de sauvegarde
    • [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
    • Si vous souhaitez sauvegarder directement une partition sur une autre partition, vous devez générer une nouvelle partition. La taille de cette partition ne peut pas être inférieure à la partition source, et ne peut être qu'égale ou supérieure à la partition source. La commande est la suivante :
    [root@localhost ~]# dd if=/dev/sda1 of=/dev/sdb1
    #如果需要恢复,则只需把输入项和输出项反过来即可,命令如下
    [root@localhost ~]# dd if=/dev/sdb1 of=/dev/sda1
【Exemple 3】Sauvegarde complète du disque

[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

【Exemple 4】Copier une disquette

[root@localhost ~]# dd if=/dev/fd0 of=/tmp/fd.bak
#在Linux中软盘的设备文件名是/dev/fd0
#这条命令先把软盘中的数据保存为临时数据文件
[root@localhost ~]# dd if=/tmp/fd.bak of=/dev/fd0
#然后更换新的软盘,把数据备份复制到新软盘中,就实现了软盘的复制
Si vous devez sauvegarder un disque, utilisez la commande dd pour créer une image ISO du disque sous Linux. La commande est la suivante :

#制作光盘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镜像是可以被当作真正的光盘使用的

Parfois, nous devons créer un fichier d'une taille spécifiée. Par exemple, lors de l'ajout d'une partition d'échange, nous devons créer un fichier d'une taille spécifiée. Dans ce cas, nous utilisons également la commande dd. La commande est la suivante :

[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

La commande dd est similaire à la fonction de l'outil GHOST lors de la copie de l'intégralité du disque. Cependant, les données du disque dur copiées par la commande dd sont beaucoup plus stables que les données du disque dur copiées par GHOST. Bien que la commande dd soit puissante, elle présente également un inconvénient évident, à savoir que la copie prend beaucoup de temps. Il faut 15 à 25 minutes pour copier 100 Go de données (selon les performances du serveur). Il existe de nombreuses méthodes et outils de sauvegarde des données, tels que les commandes tar et cpio. Quant aux outils de réplication réseau, tels que rsync et scp, vous avez besoin de connaissances réseau relativement complètes pour les apprendre et ne seront pas présentés ici.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer