linux dd 命令详解
[ 2008/09/23 15:44 | by selboo ]
先简要介绍下dd的参数,后边通过几个实例介绍dd的应用,参考了其他网友的资料,在此一并感谢,水平有限文中有什么错误请大家指正.dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换.
1. 命令简介
dd 的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入.
of=file
输出文件名,缺省为标准输出.
ibs=bytes
一次读入 bytes 个字节(即一个块大小为 bytes 个字节).
obs=bytes
一次写 bytes 个字节(即一个块大小为 bytes 个字节).
bs=bytes
同时设置读写块的大小为 bytes ,可代替 ibs 和 obs .
cbs=bytes
一次转换 bytes 个字节,即转换缓冲区大小.
skip=blocks
从输入文件开头跳过 blocks 个块后再开始复制.
seek=blocks
从输出文件开头跳过 blocks 个块后再开始复制.(通常只有当输出文件是磁盘或磁带时才有效).
count=blocks
仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数.
conv=conversion[,conversion...]
用指定的参数转换文件.
转换参数:
ascii 转换 EBCDIC 为 ASCII.
ebcdic 转换 ASCII 为 EBCDIC.
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充.
unblock 使每一行的长度都为 cbs ,不足部分用空格填充.
lcase 把大写字符转换为小写字符.
ucase 把小写字符转换为大写字符.
swab 交换输入的每对字节.
noerror 出错时不停止.
notrunc 不截短输出文件.
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐.
2.实例分析
2.1.数据备份与恢复
2.1.1整盘数据备份与恢复
备份
将本地的/dev/hdx整盘备份到/dev/hdy :dd if=/dev/hdx of=/dev/hdy
将/dev/hdx全盘数据备份到指定路径的image文件:dd if=/dev/hdx of=/path/to/image
备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径:dd if=/dev/hdx | gzip
>/path/to/image.gz
恢复
将备份文件恢复到指定盘:dd if=/path/to/image of=/dev/hdx
将压缩的备份文件恢复到指定盘 :gzip -dc /path/to/image.gz | dd of=/dev/hdx
2.1.2.利用netcat远程备份
在源主机上执行此命令备份/dev/hda:dd if=/dev/hda bs=16065b | netcat < targethost-IP >
1234
在目的主机上执行此命令来接收数据并写入/dev/hdc:netcat -l -p 1234 | dd of=/dev/hdc
bs=16065b
以下两条指令是目的主机指令的变化分别采用bzip2 gzip对数据进行压缩,并将备份文件保存在当
前目录 :
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
2.1.3.备份MBR
备份:
备份磁盘开始的512Byte大小的MBR信息到指定文件:dd if=/dev/hdx of=/path/to/image
count=1 bs=512
恢复:
将备份的MBR信息写到磁盘开始部分:dd if=/path/to/image of=/dev/hdx
2.1.4.备份软盘
将软驱数据备份到当前目录的disk.img文件:dd if=/dev/fd0 of=disk.img count=1 bs=1440k
2.1.5.拷贝内存资料到硬盘
将内存里的数据拷贝到root目录下的mem.bin文件:dd if=/dev/mem of=/root/mem.bin
bs=1024
2.1.6.从光盘拷贝iso镜像
拷贝光盘数据到root文件夹下,并保存为cd.iso文件:dd if=/dev/cdrom of=/root/cd.iso
2.2.增加Swap分区文件大小
创建一个足够大的文件(此处为256M):dd if=/dev/zero of=/swapfile bs=1024 count=262144
把这个文件变成swap文件:mkswap /swapfile
启用这个swap文件:swapon /swapfile
在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行:/swapfile swap
swap defaults 0 0
2.3.销毁磁盘数据
利用随机的数据填充硬盘:dd if=/dev/urandom of=/dev/hda1
在某些必要的场合可以用来销毁数据.执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作
无法执行.
2.4磁盘管理
2.4.1.得到最恰当的block size
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
2.4.2测试硬盘读写速度
通过两个命令输出的执行时间,可以计算出测试硬盘的读/写速度:
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
hdd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
2.4.3.修复硬盘
当硬盘较长时间(比如一两年年)放置不使用后,磁盘上会产生magnetic flux point.当磁头读到
这些区域时会遇到困难,并可能导致I/O错误.当这种情况影响到硬盘的第一个扇区时,可能导致
硬盘报废.下面的命令有可能使这些数据起死回生.且这个过程是安全,高效的.
dd if=/dev/sda of=/dev/sda
1. 命令简介
dd 的主要选项:
指定数字的地方若以下列字符结尾乘以相应的数字:
b=512, c=1, k=1024, w=2, xm=number m
if=file
输入文件名,缺省为标准输入.
of=file
输出文件名,缺省为标准输出.
ibs=bytes
一次读入 bytes 个字节(即一个块大小为 bytes 个字节).
obs=bytes
一次写 bytes 个字节(即一个块大小为 bytes 个字节).
bs=bytes
同时设置读写块的大小为 bytes ,可代替 ibs 和 obs .
cbs=bytes
一次转换 bytes 个字节,即转换缓冲区大小.
skip=blocks
从输入文件开头跳过 blocks 个块后再开始复制.
seek=blocks
从输出文件开头跳过 blocks 个块后再开始复制.(通常只有当输出文件是磁盘或磁带时才有效).
count=blocks
仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数.
conv=conversion[,conversion...]
用指定的参数转换文件.
转换参数:
ascii 转换 EBCDIC 为 ASCII.
ebcdic 转换 ASCII 为 EBCDIC.
ibm 转换 ASCII 为 alternate EBCDIC.
block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充.
unblock 使每一行的长度都为 cbs ,不足部分用空格填充.
lcase 把大写字符转换为小写字符.
ucase 把小写字符转换为大写字符.
swab 交换输入的每对字节.
noerror 出错时不停止.
notrunc 不截短输出文件.
sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐.
2.实例分析
2.1.数据备份与恢复
2.1.1整盘数据备份与恢复
备份
将本地的/dev/hdx整盘备份到/dev/hdy :dd if=/dev/hdx of=/dev/hdy
将/dev/hdx全盘数据备份到指定路径的image文件:dd if=/dev/hdx of=/path/to/image
备份/dev/hdx全盘数据,并利用gzip工具进行压缩,保存到指定路径:dd if=/dev/hdx | gzip
>/path/to/image.gz
恢复
将备份文件恢复到指定盘:dd if=/path/to/image of=/dev/hdx
将压缩的备份文件恢复到指定盘 :gzip -dc /path/to/image.gz | dd of=/dev/hdx
2.1.2.利用netcat远程备份
在源主机上执行此命令备份/dev/hda:dd if=/dev/hda bs=16065b | netcat < targethost-IP >
1234
在目的主机上执行此命令来接收数据并写入/dev/hdc:netcat -l -p 1234 | dd of=/dev/hdc
bs=16065b
以下两条指令是目的主机指令的变化分别采用bzip2 gzip对数据进行压缩,并将备份文件保存在当
前目录 :
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
2.1.3.备份MBR
备份:
备份磁盘开始的512Byte大小的MBR信息到指定文件:dd if=/dev/hdx of=/path/to/image
count=1 bs=512
恢复:
将备份的MBR信息写到磁盘开始部分:dd if=/path/to/image of=/dev/hdx
2.1.4.备份软盘
将软驱数据备份到当前目录的disk.img文件:dd if=/dev/fd0 of=disk.img count=1 bs=1440k
2.1.5.拷贝内存资料到硬盘
将内存里的数据拷贝到root目录下的mem.bin文件:dd if=/dev/mem of=/root/mem.bin
bs=1024
2.1.6.从光盘拷贝iso镜像
拷贝光盘数据到root文件夹下,并保存为cd.iso文件:dd if=/dev/cdrom of=/root/cd.iso
2.2.增加Swap分区文件大小
创建一个足够大的文件(此处为256M):dd if=/dev/zero of=/swapfile bs=1024 count=262144
把这个文件变成swap文件:mkswap /swapfile
启用这个swap文件:swapon /swapfile
在每次开机的时候自动加载swap文件, 需要在 /etc/fstab 文件中增加一行:/swapfile swap
swap defaults 0 0
2.3.销毁磁盘数据
利用随机的数据填充硬盘:dd if=/dev/urandom of=/dev/hda1
在某些必要的场合可以用来销毁数据.执行此操作以后,/dev/hda1将无法挂载,创建和拷贝操作
无法执行.
2.4磁盘管理
2.4.1.得到最恰当的block size
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小:
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
2.4.2测试硬盘读写速度
通过两个命令输出的执行时间,可以计算出测试硬盘的读/写速度:
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
hdd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
2.4.3.修复硬盘
当硬盘较长时间(比如一两年年)放置不使用后,磁盘上会产生magnetic flux point.当磁头读到
这些区域时会遇到困难,并可能导致I/O错误.当这种情况影响到硬盘的第一个扇区时,可能导致
硬盘报废.下面的命令有可能使这些数据起死回生.且这个过程是安全,高效的.
dd if=/dev/sda of=/dev/sda
linux ps命令用法详解
[ 2008/09/23 15:37 | by selboo ]
ps命令
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了.
(1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
(2)ps -A 显示所有程序。
(3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
(4)ps -e 此参数的效果和指定"A"参数相同。
(5)ps e 列出程序时,显示每个程序所使用的环境变量。
(6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
(7)ps -H 显示树状结构,表示程序间的相互关系。
(8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
(9)ps s 采用程序信号的格式显示程序状况。
(10)ps S 列出程序时,包括已中断的子程序资料。
(11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
(12)ps u 以用户为主的格式来显示程序状况。
(13)ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而ps命令就是最基本同时也是非常强大的进程查看命令.使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等.总之大部分信息都是可以通过执行该命令得到的.
ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了.
(1)ps a 显示现行终端机下的所有程序,包括其他用户的程序。
(2)ps -A 显示所有程序。
(3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
(4)ps -e 此参数的效果和指定"A"参数相同。
(5)ps e 列出程序时,显示每个程序所使用的环境变量。
(6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
(7)ps -H 显示树状结构,表示程序间的相互关系。
(8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
(9)ps s 采用程序信号的格式显示程序状况。
(10)ps S 列出程序时,包括已中断的子程序资料。
(11)ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
(12)ps u 以用户为主的格式来显示程序状况。
(13)ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps -aux,然后再利用一个管道符号导向到grep去查找特定的进程,然后再对特定的进程进行操作。
linux ssh登陆安全设置
[ 2008/09/11 13:16 | by selboo ]
linux ssh登陆安全设置
目前大多数linux 用户远程登陆首先采用ssh,因些多点时间来关心SSH的使用方法是服务器应用的第一步。
1.安装 在安装LINUX系统时请注意选装SSH,大部份系统都会默认安装。在初步配置防火墙时,请注意把SSH默认的22端口打开。当然,用户也可以更改22端口到其它端口。
2.设置
第一步:在linux中先添加一个普通用户
# adduser YouName -p YouPassWord
在系统中添加一个名为 YouName 的用户 密码为 YouPassWord
第二步:测试新用户可用性
用putty 等SSH 工具测试 第一步中添加的用户是否可用
如果没有工具,可以直接在LINUX 中键入 ssh 192.168.0.10 -l YouName (假定你的服务器IP是192.168.0.10),第一次使用,输入yespassword:后输入密码。如果没有报错,下一行直接是 $,中间没有其它行。
第三步:修改ssh配置文件
vi /etc/ssh/sshd_config
按esc 键入 /PermitRootLogin
光标会自动找到这一行
把#PermitRootLogin yes 更成为 PermitRootLogin no
注意 前面的 # 要去了,后面的yes 要心为no
第四步 重启ssh
/etc/rc.d/init.d/sshd restart
第五步 试用
用putty 等SSH 工具测试 第一步中添加的用户是否可用.如果没有工具,可以直接在LINUX 中键入 ssh 192.168.0.10 -l YouName (假定你的服务器IP是192.168.0.10),第一次使用,输入yespassword:后输入密码。如果没有报错,下一行直接是 $,中间没有其它行。
现在用普通用户"$"转入root
$ su
输入root 密码 进入即可
3.使用
以后,每次进入都先用普通用户进入,再换成root用户。这样防止了黑客直接猜root密码。如果是远程修改,请一定要注意步骤。最好按上面的方法一步步来
附:更改密码命令
passwd YouName
输入新的密码 两次
linux./etc/fstab文件详解
[ 2008/08/26 10:37 | by selboo ]
通常情况下,一个Linux系统将拥有很多的文件系统,然而,仅仅通过一个或非常少的文件系统来配置Linux系统也是可能的,你希望创建多个文件系统 的一个原因就是通过使用/etc/fstab文件中指定的mount选项来控制对它们的访问.
/etc/fstab文件的内容主要包括六项:
/dev/hda1 / ext3 defaults 1 1
/dev/hda5 /usr ext3 defaults 1 2
/dev/hda1 /home ext3 defaults 1 2
/dev/hda6 /var ext3 defaults 1 1
/dev/hda7 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext3 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
none /proc proc defaults 0 0
第一列:设备名或者设备卷标名,(/dev/sda10 或者 LABEL=/)
第二列:设备挂载目录 (例如上面的“/”或者“/mnt/D/”)
第三列:设备文件系统 (例如上面的“ext3”或者“vfat”)
第四列:挂载参数 (看帮助man mount)
对于已经挂载好的设备,例如上面的/dev/sda2,现在要改变挂载参数,这时可以不用卸载该设备,而可以使用下面的命令(没有挂载的设备,remount 这个参数无效)#mount /mnt/cdrom/ -o remount,ro (改defaults为ro)为了安全起见,可以指明其他挂载参数,例如:
default 设置该安装选项为rw,suid(允许SUID和SGID执行),dev(允许字符和块专用设备),exec(允许二进制文件的执行),auto(允许mount -a),nouser(只有根用户能配置该文件系统,不允许普通用户挂载)和async(异步I/O)
nodev 不解释或允许在该文件系统上创建字符或块专用文件(设备文件),(不允许挂载设备文件)
noexec 在该文件系统上不允许二进制文件或脚本的执行,(不允许可执行文件可执行,但千万不要把根分区挂为noexec,那就无法使用系统了,连mount 命令都无法使用了,这时只有重新做系统了!
ro 设置此文件系统为只读
user 允许除根用户以外的用户配置该文件系统.除非被明令撤销否则该选项会自动设置noexec,nosuid和nodev选项
nosuid,nosgid 不允许SUID或SGID对该文件系统产生作用(不允许有suid和sgid属性)
noatime 取缔在此文件系统内所有文件和目录上的访问时间更新,该选项在2.2.x版及其之后的内核中可以使用
第五列:指明是否要备份.(0为不备份,1为要备份,一般根分区要备份)
第六列:指明自检顺序. (0为不自检,1或者2为要自检,如果是根分区要设为1,其他分区只能是2)
在安装之前,请仔细考虑你的用户需要的访问类型,这样可以更好的对创建的系统提出要求.对于本地文件系统,考试下列这些选取mount选项的指导方针:
(1)用户主目录不应当成为SUID脚本和程序的发源地,而且也不应该拥有字符和块专用文件.
(2)任何文件系统如果拥有可被除根用户以外的人定入的目录,在最低程度上都应该使用nosuid选项./var文件系统就是这样一个文件系统,并且该文件系统对于你的系统至关重要.
(3)任何不需要被写入的文件系统(特殊情况除外)应当被安装设置为只读文件.
我们应对/var文件系统应用第二条指导原则,而对/home文件系统应用第一条指导原则.为了方便用户,我们还希望将user选项增加到/mnt/cdrom上,这样便可以允许非根用户在没有根用户干预的情况下安装CD-ROM.与user选项相联系的那些附加限制选项如nosuid,noexec和nodev应该为此提供足够的安全保障.
假设在/usr文件系统中拥有一个/usr/local/bin子目录,该子目录包含了那些被很多用户使用的可执行程序,如果这些可执行文件不会经常改变,你或许希望创建一个单独的文件系统并用ro选项对/usr/local/bi目录进行配置.可惜的是,如果确实这样去做了,那么每当需要修改/usr/local/bin或/usr/local/lib目录中的文件时,都要重新配置它的rw选项(最好是以单用户模式).在不出意外 的情况下,增强系统和网络的安全性.将会影响到性能或用户的方便性.
一个更安全的/etc/fstab表
/dev/hda1 / ext3 defaults 1 1
/dev/hdb4 sr/local/bin ext3 ro,nosuid 1 2
/dev/hdb9 sr/local/lib ext3 ro,nosuid 1 2
/dev/hda5 /usr ext3 defaults 1 2
/dev/hdb1 /home ext3 noexec,nodev,nosuid 1 2
/dev/hda6 /var ext3 nosuid 1 1
/dev/hda7 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext3 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro,user 0 0
none /proc proc defaults 0 0
1,加或不加auto,开机时会自动挂载;加noauto时不自动挂载,当执行mount -a的时候也不能挂载,只有通过手动挂载.
2,user 允许除根用户以外的用户配置该文件系统.
3,noexec 在该文件系统上不允许二进制文件或脚本的执行
Linux系统下MBR分区表的备份与恢复
[ 2008/08/26 10:33 | by selboo ]
备份MBR分区
1.使用fdisk -l 确定MBR位置
2.备份MBR
dd if=/dev/sda1 of=/root/mbr bs=512 count=1
3.恢复MBR
dd if=/root/mbr of=/dev/sda1 bs=512 count=1
4.恢复分区表
dd if=/root/mbr of=/dev/sda1 bs=512 skip=446 count=66
注:mbr大小512 所以bs=512 count=1
bs=512 skip=446 count=66 用来确定分区表在备份文件中的位置