用django做网站,淮南网备查询,磁业 东莞网站建设,wordpress mu 安装简介
dd 命令源自于磁盘复制#xff08;disk dump#xff09;的缩写#xff0c;是 Linux 和 Unix 系统中用于转换和复制文件的一个强大工具。它可以在复制过程中进行格式转换#xff0c;支持不同的块大小#xff0c;能够直接对硬盘设备进行操作#xff0c;非常适合进行备…简介
dd 命令源自于磁盘复制disk dump的缩写是 Linux 和 Unix 系统中用于转换和复制文件的一个强大工具。它可以在复制过程中进行格式转换支持不同的块大小能够直接对硬盘设备进行操作非常适合进行备份和恢复任务。dd 命令能够精确控制输入/输出过程中的数据块大小以及数量使其在处理原始磁盘数据时特别有用。
使用方式
dd [选项]常用选项 bsBYTES一次读和写 BYTES 字节。该选项会覆盖 ibs 和 obs 设定的值默认为 512。 cbsBYTES一次转换 BYTES 字节。 convCONVS指定一个或多个转换参数以逗号分隔。具体参数列表见下文 countN只拷贝输入文件的前 N 个块。 ibsBYTES指定一次读取 BYTES 字节默认为 512。 ifFILE从指定的 FILE 中读取而不是默认的标准输入中。 iflagFLAGS指定一个或多个输入处理标志以逗号分隔。具体标志列表见下文 obsBYTES指定一次写入 BYTES 字节默认为512. ofFILE将数据写入指定的 FILE 而不是标准输出。 oflagFLAGS指定一个或多个输出处理标志以逗号分隔。具体标志列表见下文 seekN指定在开始写入数据之前应该跳过写入目标的前 N 个块块大小由 obs 指定或默认。 skipN指定在开始处理输入数据之前应该跳过 N 个块块大小由 ibs 指定或默认。 statusLEVEL控制 dd 命令在标准错误输出stderr上打印的信息量级别。 none抑制所有的输出信息除了错误消息。noxfer抑制最后的传输统计信息。progress显示周期性的传输统计信息。 --help显示帮助信息。 --version显示版本信息。
CONV 转换参数 ascii从EBCDIC编码转换为ASCII编码。EBCDIC是一种在IBM大型机上使用的字符编码而ASCII是更通用的字符编码。 ebcdic从ASCII编码转换为 EBCDIC 编码。 ibm从ASCII编码转换到 alternate EBCDIC编码这种形式常用于IBM系统。 block将以换行符结尾的记录使用空格填充至指定的 cbs转换块大小大小。 unblock将 cbs 大小记录中的尾部空格替换为换行符。 lcase将大写字母转换为小写字母。 ucase将小写字母转换为大写字母。 sparse尝试对包含 NUL空字符的输入块进行 seek 操作跳过而不是写入操作以此来优化空间使用。 swab交换每对输入字节的位置。 sync将每个输入块使用 NULs空字符填充至 ibs输入块大小。如果与 block 或 unblock 一起使用则用空格而不是 NULs 填充。 excl如果输出文件已经存在操作将失败。 nocreat不创建输出文件。 notrunc不截断输出文件即不改变文件的大小。 noerror在读取错误后继续运行。 fdatasync在操作完成前将数据写入磁盘确保数据已被真实存储。 fsync与 fdatasync 相似但也包括元数据的写入。
FLAG append以追加模式写入数据到输出文件。仅对输出有效建议与 convnotrunc 一起使用以避免截断文件。 direct使用直接 I/O 进行数据读写绕过操作系统的缓存可以提高处理大量数据时的效率。 directory当目标不是一个目录的时候操作失败。 dsync使用同步I/O进行数据写入确保数据在返回之前确实被写入存储设备。 sync类似于 dsync但同步操作也包括元数据确保数据和元数据的完整性。 fullblock累计完整的输入块直到达到指定的块大小再处理。仅适用于输入标志有助于确保数据块的完整性。 nonblock使用非阻塞 I/O允许在没有立即可用数据时继续执行操作而不是阻塞等待。 noatime读取文件时不更新其访问时间有助于减少对源文件系统的影响。 nocache请求操作系统丢弃或避免使用缓存。 noctty执行 dd 操作时不将打开的文件分配为控制终端。 nofollow不跟随符号链接。 count_bytes将 countN 选项视为字节计数而不是块计数。仅适用于输入标志。 skip_bytes将 skipN 选项视为字节计数而不是块计数。仅适用于输入标志。 seek_bytes将 seekN 选项视为字节计数而不是块计数。仅适用于输出标志。
参考示例
1. 创建一个大小为1GB的文件
dd if/dev/zero of1GB.file bs1G count1使用 /dev/zero 作为输入文件一个提供无限零值的特殊文件输出到1GB.file块大小设置为1GB只复制1个块
jayubuntu:~/Project/test/dd$ dd if/dev/zero of1GB.file bs1G count1
10 records in
10 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 8.12519 s, 132 MB/s命令执行成功后查看文件属性确认生成的文件大小为 1G
jayubuntu:~/Project/test/dd$ ls -lh
total 1.1G
-rw-rw-r-- 1 jay jay 1.0G Feb 29 16:52 1GB.file2. 备份磁盘区
sudo dd if/dev/sda1 of./backup.img bs4M将 /dev/sda1 分区复制到一个名为 backup.img 的文件中同时使用 4MB 的块大小提高复制效率。
jayubuntu:~/Project/test/dd$ sudo dd if/dev/sda1 of./backup.img bs4M
[sudo] password for jay:
1280 records in
1280 records out
536870912 bytes (537 MB, 512 MiB) copied, 0.544554 s, 986 MB/s3. 生成随机字符串
dd if/dev/urandom bs1 count15 statusnone | base64 -w 0结合 /dev/urandom 设备我们可以直接生成随机数序列并且使用 base64 转换为可读字符串
jayubuntu:~/Project/test/dd$ dd if/dev/urandom bs1 count15 statusnone | base64 -w 0
AyCv7e1kTuyAVTcnwpvK示例中使用了抑制输出信息选项来保证输出内容的简洁并且由于使用了 base64 将二进制数据转换为可读的字符所以实际长度会比设定的 15 个字节要长使用 dd 命令生成的二进制数据确实是 15 个字节。
4. 测试磁盘写入速度
dd if/dev/zero of./testfile bs2G count1 oflagdirect使用 oflagdirect 可以使写入操作绕过操作系统缓存直接到磁盘这个方法得到的写入速度更加真实同时 /dev/zero 是个特殊设备对它进行读取会产生无限的零值并且不会产生 IO 操作。因此上述命令只存在写入IO 操作其结果可以作为磁盘写入速度的依据
jayubuntu:~/Project/test/dd$ dd if/dev/zero of./testfile bs2G count1 oflagdirect
01 records in
01 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 2.15183 s, 998 MB/s5. 测试磁盘读取速度 dd if./testfile of/dev/null bs2G count1 iflagdirect同样使用 iflagdirect 可以使读取操作绕过系统缓存从而得到更真实的读取速度。其中 /dev/null 也是一个特殊设备所有写入其中的数据都会被丢弃不会产生 IO 操作上述命令只存在读 IO 操作其结果可以作为磁盘读取速度的依据
jayubuntu:~/Project/test/dd$ dd if./testfile of/dev/null bs2G count1 iflagdirect
01 records in
01 records out
2147479552 bytes (2.1 GB, 2.0 GiB) copied, 1.34799 s, 1.6 GB/s注意事项 选项参数中的 N 和 BYTES 可以带有特定后缀用来表示不同的数量单位以字节为基准以乘法形式与 N 或 BYTES 进行计算。如 c1w2b512kB1000K1024MB1000*1000M1024*1024xM等同于MGB1000*1000*1000G1024*1024*1024。以此类推也支持 TPEZY。 当 dd 命令正在执行数据复制或转换操作时你可以向它发送一个 USR1 信号。接收到这个信号后dd 进程会将当前的 I/O 统计信息打印到标准错误输出stderr然后继续执行其复制或转换操作。这允许用户在 dd 操作过程中实时监控其性能和进度而不会中断或重启命令。 使用 dd 命令时需要格外小心错误的输入文件if或输出文件of路径可能导致数据丢失。 由于 dd 命令非常强大其能直接作用于物理硬盘因此建议在执行 dd 命令前再次检查命令的正确性并确保有适当的数据备份。避免造成无法挽回的后果。