dd
命令在 Linux 系统中主要用于数据块复制和转换操作,它可以执行各种复杂的数据处理任务,如格式化磁盘、镜像硬盘等。为了简化重复性的操作或复杂的多步骤流程,可以使用自动化脚本来完成这些任务。
dd
命令dd
是一个非常强大的命令行工具,用于将输入数据转换为输出,并根据指定的缓冲区大小进行读取和写入。它的工作原理是通过读取源文件或设备的数据,并将其复制到目标位置的同时执行各种数据转换操作。
dd if=/dev/sdx of=/path/to/file bs=1M conv=notrunc,noerror,sync
if
:输入文件(或设备),如 /dev/sdx
。of
:输出文件(或设备)。bs
:块大小,通常以字节为单位,也可以是 K、M 或 G 等单位表示千字节、兆字节或吉字节。conv
:转换选项,用于数据处理。以下是一个使用 dd
命令自动化备份整个磁盘的简单脚本。该脚本将 /dev/sdb
设备的内容镜像到一个文件中,并在操作过程中记录日志。
#!/bin/bash
# 定义变量
SOURCE="/dev/sdb"
DESTINATION="/backup/image.img"
LOG_FILE="/var/log/dd_backup.log"
# 创建备份目录,如果不存在
mkdir -p /backup
# 开始记录时间
START_TIME=$(date +%s)
# 执行 dd 命令并重定向到日志文件
dd if=$SOURCE of=$DESTINATION bs=1M conv=notrunc,noerror,sync 2>&1 | tee -a $LOG_FILE
# 结束时间和总耗时计算
END_TIME=$(date +%s)
TOTAL_TIME=$((END_TIME - START_TIME))
echo "Backup completed in $TOTAL_TIME seconds" >> $LOG_FILE
# 记录备份结果到日志文件
if [ $? -eq 0 ]; then
echo "Backup successful!" >> $LOG_FILE
else
echo "Backup failed!" >> $LOG_FILE
fi
dd
命令:使用标准输出重定向将命令的标准错误输出到日志文件中,并通过管道将其追加写入日志。将上述脚本保存为 backup_script.sh
并赋予执行权限:
chmod +x backup_script.sh
然后,可以通过以下命令运行该脚本:
./backup_script.sh
确保在运行此类操作时已经备份了重要数据,并且了解所有命令的潜在影响。