0


linux基本功系列之dd命令实战

文章目录

前言🚀🚀🚀

大家好,我是沐风晓月,双一流本科,计算机专业,一起学习,努力成长!
🛰️🛰️系列专栏:【linux基本功-基础命令实战】
💓想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。
💓 只要地球不爆炸,我们永远不放假,只要宇宙不重启,我们永远不休息,,风里雨里节日里我们都在机房等着你
💓 知识最重要的是记忆,反复练习才能有所成就
💓 入门须知: 想要人生从容,必须全力以赴,努力才是你最终的入场券🚀🚀🚀
💕 最后: 努力成长自己,愿我们都能在看不到的地方闪闪发光 ,一起加油进步🍺🍺🍺

一. dd 命令介绍

Linux dd 命令用于读取、转换并输出数据,换言之就是转换和拷贝文件

dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

二. 语法格式及常用选项

具体的使用方法如下:
dd if=“输入文件” of=“输出文件” bs=“数据块” count=“数量”
我们用 --help来查看具体的帮助信息

[root@mufenggrow ~]# dd --help
用法:dd [操作数]...
 或:dd 选项
Copy a file, converting and formatting according to the operands.

  bs=BYTES        read and write up to BYTES bytes at a timecbs=BYTES       convert BYTES bytes at a timeconv=CONVS      convert the file as per the comma separated symbol list
  count=N         copy only N input blocks
  ibs=BYTES       read up to BYTES bytes at a time(default: 512)if=FILE         read from FILE instead of stdin
  iflag=FLAGS     read as per the comma separated symbol list
  obs=BYTES       write BYTES bytes at a time(default: 512)of=FILE         write to FILE instead of stdout
  oflag=FLAGS     write as per the comma separated symbol list
  seek=N          skip N obs-sized blocks at start of output
  skip=N          skip N ibs-sized blocks at start of input
  status=LEVEL    The LEVEL of information to print to stderr;'none' suppresses everything but error messages,
                  'noxfer' suppresses the final transfer statistics,
                  'progress' shows periodic transfer statistics

N and BYTES may be followed by the following multiplicative suffixes:
c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M
GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y.

Options are:

      --help        显示此帮助信息并退出
      --version        显示版本信息并退出

dd 命令常用的字段介绍
字段描述if代表输入文件。如果不指定 if,默认就会从 stdin 中读取输入。of代表输出文件。如果不指定 of,默认就会将 stdout 作为默认输出bs代表字节为单位的块大小count代表被复制的块数。/dev/zero是一个字符设备,会不断返回 0 值字节(\0)conv = ucase把字母由小写变为大写conv = lcase把字母由大写变为小写conv = noerror出错时不停止处理。

三. 参考案例

3.1 创建指定大小的文件

这个我们用的比较多,也是必会的内容,参考以下格式:
dd if=“输入文件” of=“输出文件” bs=“数据块” count=“数量”

案例一: 创建1G大小的文件,文件保存在/tmp/dd_test, 块的大小为1M

[root@mufenggrow ~]# dd if=/dev/zero of=/tmp/dd_test bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,2.60265 秒,413 MB/秒
## 查看创建文件的大小[root@mufenggrow ~]# ll -h /tmp/dd_test 
-rw-r--r--. 1 root root 1.0G 2月   5 07:51 /tmp/dd_test
[root@mufenggrow ~]# 

3.2 清空磁盘数据

我们在网上看到的各种”某某门“ ,往往是因为处理不要到磁盘的时候,只是做了删除,没有做专业的处理。

我们的数据保存在硬盘上,靠删除和格式化是删不干净的,还需要使用专业工具,或者dd命令来删除

比如:
我们要删除 /dev/sdb盘的信息:
当然如果我们没有sdb盘,系统会提示,设备上没有空间,

[root@mufenggrow ~]# ll -h /tmp/dd_test 
-rw-r--r--. 1 root root 1.0G 2月   5 07:51 /tmp/dd_test
[root@mufenggrow ~]# dd if=/dev/zero of=/dev/sdb
dd: 正在写入"/dev/sdb": 设备上没有空间
记录了1829129+0 的读入
记录了1829128+0 的写出

我们删除文件等同于删掉了inode,并不能完全删除数据,如果要彻底删除,除非数据被覆盖掉,而上面的代码就是让数据全被被 /dev/zero 覆盖,相当于置空。

3.3 给磁盘做备份还原

相当于一个复制过程,只是速度会更快一些:

  • 把sda的数据备份到sdb
[root@mufeng ~]# dd if=/dev/sda  of=/dev/sdb
  • 利用备份好的sdb进行数据还原
ddif=/dev/sdb  of=/dev/sda

3.4 把光盘拷贝到root下

我们可以拷贝光盘数据到root文件夹下,并保存为cd.iso文件

ddif=/dev/cdrom of=/root/cd.iso

3.5 内存不足的处理方法

安卓手机是类unix系统,用的时间久了之后就会有些卡顿,这时候我们可以设置swap空间,来确保手机的运行。
也就是我们常用的虚拟内存。

虚拟内存:
利用硬盘的空间,充当内存的空间
相当于虚拟内存

  • 当物理内存不够用时,使用磁盘空间来模拟内存
  • 在一定程度上缓解内存不足的问题

swap空间也有一定的不足:

swap是存放在磁盘上的,磁盘的速度和内存比较起来慢了好几个数量级,如果不停的读写swap,那么对系统的性能影响很大,甚至会导致卡死。

接下来我们模拟下把文件变为SWAP空间的情况。

## 查看swap到总大小[root@mufenggrow ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819431729071315270
Swap:          20477151332## 生成一个G的文件[root@mufenggrow ~]# dd if=/dev/zero of=/home/swap_test bs=1M count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1073741824字节(1.1 GB)已复制,2.53391 秒,424 MB/秒
## 授权[root@mufenggrow ~]# chmod 0600 /home/swap_test ## 把文件变成swap空间[root@mufenggrow ~]# mkswap -f /home/swap_test 
正在设置交换空间版本 1,大小 =1048572 KiB
无标签,UUID=d6bdd0b3-42f7-4cff-b51b-d04184000c1a
## 设置永久生效[root@mufenggrow ~]# echo "/home/swap_test none swap defaults 0 0 " >> /etc/fstab[root@mufenggrow ~]# swapon  -a## 再次查看发现多了1G大小的swap空间[root@mufenggrow ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1819429709071319269
Swap:          30717142357[root@mufenggrow ~]# 

四. 文中出现的概念解释

swapon命令介绍

使用swapon命令可以启用Linux系统的交换分区或交换文件。
参数描述-a将/etc/fstab文件中所有设置为swap的设备,启动为交换区-s显示交换区的使用状况;-p指定交换分区的优先级-U使用设备的UUID-L使用设备的卷标
与之相对应的命令是 swapoff 用于关闭指定的交换空间

swapoff -a 表示关闭所有的在/etc/fstab里设置的swap空间。

4.2 /dev/zero 介绍

/dev/zero是一个特殊的字符设备文件,当我们使用或读取它的时候,它会提供无限连续不断的空的数据流(特殊的数据格式流)
主要使用场景有两个:

  • 可以使用/dev/zero文件覆盖其他文件信息,比如本文中的清空磁盘
  • 产生指定大小的空文件,例如:交换文件、模拟虚拟文件系统等。

总结

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

请添加图片描述
在这里插入图片描述

标签: linux 运维 服务器

本文转载自: https://blog.csdn.net/wisdom_futrue/article/details/128885393
版权归原作者 我是沐风晓月 所有, 如有侵权,请联系我们删除。

“linux基本功系列之dd命令实战”的评论:

还没有评论