目录
编写目的........................................................................5
1使用篇.........................................................................5
1.1 SUSE LINUX Enterprise Server安装后的一些常用命令..................................5
1.1.1 启动/关闭系统................................................................5
1.1.2 磁盘重新分区和创建文件系统......................................................6
1.1.3 查询、设置主机的IP地址、子网掩码................................................14
1.1.4 查询设置主机名称.............................................................16
1.1.5查询、设置主机的路由和网关.....................................................20
1.1.6查询、设置主机的日期时间.......................................................23
1.1.7 telnet和ftp.................................................................26
1.1.8 ssh和scp..................................................................38
1.1.9 建立NFS文件共享............................................................39
1.1.10 查看CPU、内存、网卡等硬件的配置情况...........................................42
1.1.11 修改显示分辨率、刷新频率.....................................................46
1.2 服务器系统的可靠维护手段........................................................48
1.2.1 修复文件系统................................................................48
1.2.2 在SLES下的备份方法..........................................................48
1.2.2.1 用tar进行备份和恢复.........................................................49
1.2.2.2使用dd进行备份/恢复.........................................................51
SUSE LINUX Enterprise Server 8/9 为安全的企业计算提供了可扩展的高性能基础,使企业能够充分利用Linux* 和开放源代码。该产品具有极强的可靠性,并且为当前的网络环境提供了全面的功能,以满足用户的需求。SUSE LINUX Enterprise Server还支持广泛的硬件平台和领先的软件应用。凭借其独特的开放式管理能力,您可以在网络的任何位置轻松地安装、部署、配置、保护和更新Linux服务器――从而显著节约IT成本。由于SUSE LINUX Enterprise Server由Novell提供全面的支持,因此,在实施可行的关键任务平台时,可获得所需的可靠发布周期、法律保护、教育和认证方案、合作伙伴资格以及全面的支持环境。
编写本文稿的目的在于向用户简单介绍常用的SUSE LINUX Enterprise Server 8/9日常维护命令和备份恢复方案。
相信大家肯定都知道开关机器的步骤。与任何UNIX系统一样,SUSE LINUX系统只要上电就可以开机,关机使用shutdown命令。但是在日常维护中,开关机仍然是必须学习的内容,因为在开关机的过程中可能会有一些特殊问题。
当你给系统加电的时候,SUSE LINUX将自动从启动管理器开始执行。通常我们不需要对系统的启动作任何干预,SUSE LINUX就可以自动执行启动脚本直到出现登录提示(kdm或login)。
当系统启动脚本开始执行的时候,系统必须首先mount 上文件系统。系统在此之前将会调用fsck程序来自动检测文件系统。一般情况下,fsck会正确修复文件系统中的错误。然而,如果发生了致命错误,那么fsck会退出,这时系统启动脚本会出现类似于这样的提示:
fsck failed. Please repair manually and reboot. The root
file system is currently mounted read-only. To remount it
read-write do:
bash# mount -n -o remount,rw /
Attention: Only CONTROL-D will reboot the system in this
shutdown or reboot will not work.
然后启动脚本会调用一个sulogin程序,这个程序会提示你输入超级用户口令:
Give root password for maintenance (or type Control-D for normal startup):
输入超级用户口令之后,你将得到一个shell,在这个shell中你可以使用fsck命令修
理有问题的文件系统。fsck结束之后,用exit命令退出这个shell,系统将会重新启动。
如果由于硬件升级或管理原因你想关闭或重新启动系统,可以使用shutdown命令:
shutdown [时间] [信息]
时间参数定义在什么时候关机,基本的格式是hh:mm,比如12:30代表12点30分。不过更多的人喜欢用+[分钟],例如shutdown +3代表3分钟后关闭系统。一个特殊的字符串n
ow表示+0,即立刻关机。信息参数用来向连接在系统上的所有用户发送一条消息,例如
,想要在两分钟后关闭系统,并且向所有用户发送一条“system now halted.Please s
ave your work”的信息,命令是
# shutdown +2 'system now halted,Please save your work'
如果要重新启动机器,可以使用shutdown的-r参数,例如
# shutdown -r now
也可以用reboot命令:
reboot
在SUSE Linux操作系统安装好之后,由于扩容等原因,需要在新的磁盘上创建新的分区或在原有磁盘上改变某些分区的大小以适应应用的需要。在SUSE Linux上可以通过工具yast2 disk管理分区,也可以通过命令行工具fdisk管理分区
例如:系统原有一块SCSI磁盘/dev/sda,现在新增了一块SCSI磁盘/dev/sdb
图形方式
对于yast2 disk模块管理磁盘分区方法如下:
# LC_ALL=C yast2 disk
分区程序会显示警告信息,因为分区在系统中处于非常底层的地位,所有文件系统都建立在分区之上。如果在分区中的某些错误操作会导致整个系统的毁坏,所以在运行中的系统上进行分区变更需要特别注意,事先做好规划。
单击Yes,进入分区程序主窗口
我们在测试环境中对/dev/sdb进行分区
创建一个主分区选择Format ->Do not format,Size -> End输入+100M,Mount Point从下拉列表里选择空项
单击OK按钮在分区计划里创建/dev/sdb1
重复上面的步骤,创建主分区/dev/sdb2和/dev/sdb3
创建第四个分区/dev/sdb4为扩展分区
然后创建逻辑分区/dev/sdb5
单击Apply,再次单击Apply之后将上面的分区计划保存到磁盘/dev/sdb的分区表中。
命令行方式
对这块磁盘进行分区,通过fdisk工具分区的方法如下:
# fdisk /dev/sdb
Command (m for help):
""新增一个主分区/dev/sdb1
(command m for help): n
e extended
p primary partition (1-4)
p
Partition number (1-4):1
First cylinder (1-3648, default 1):
Last cylinder or +size or +sizeM or +sizeK (1-3648, default 3648):+100M
""新增一个主分区/dev/sdb2
Command (m for help): n
e extended
p primary partition (1-4)
p
Partition number (1-4):2
First cylinder (14-3648, default 14):
""新增一个主分区/dev/sdb3
Command (m for help): n
e extended
p primary partition (1-4)
p
Partition number (1-4):3
First cylinder (27-3648, default 27):
Last cylinder or +size or +sizeM or +sizeK (1-3648, default 3648):+100M
""新增一个扩展分区/dev/sdb4
Command (m for help): n
e extended
p primary partition (1-4)
e
First cylinder (40-3648, default 40):
Last cylinder or +size or +sizeM or +sizeK (1-3648, default 3648):
""新增一个逻辑分区/dev/sdb5
Command (m for help): n
First cylinder (40-3648, default 40):
Last cylinder or +size or +sizeM or +sizeK (1-3648, default 3648):+100M
SLES中可以用yast2 network来配置IP地址、子网掩码,也可以通过修改配置文件的方式并运行命令实现这个目的。
方法1. 通过yast2管理工具进行配置
在console中运行yast2工具配置缺省网关和到特定网络或主机的路由
# LC_ALL=C yast2 network
配置未经配置的网卡选择“Network cards configuration”中“Network cards configuration”中“Configure...”
修改已配置网卡的设置选择“Network cards configuration”中“Network cards configuration”中“Change...”
根据具体的网络配置,选择用DHCP自动分配地址还是使用静态IP地址,如果用静态IP地址同时输入子网掩码。
方法2. 通过修改配置文件的方式并运行命令进行配置,SLES8和SLES9之间配置文件命名方式有区别。下面分别进行介绍。
SLES8
编辑文件/etc/sysconfig/ifcfg-ethx(x为对应的逻辑网络设备号,从 0开始),文件可以包含下面的配置项:
关键字 | 类型 | 取值范围 |
BOOTPROTO | string | static|dhcp |
STARTMODE | string | onboot|manual |
IPADDR | string | 四个十进制数点分IP地址 |
BROADCAST | string | 四个十进制数广播地址 |
NETWORK | string | 四个十进制数网络地址 |
NETMASK | string | 四个十进制数子网掩码 |
配置文件例子:
BOOTPROTO='static'
STARTMODE='onboot'
IPADDR='192.168.1.251'
BROADCAST='192.168.1.255'
NETWORK='192.168.1.0'
NETMASK='255.255.255.0'
修改配置文件/etc/modules.conf,修改网卡内核模块的对应关系
例如对于网卡Intel Pro100网卡,它的内核模块是e100,如果希望它是内核先加载的网络驱动,可以修改配置文件/etc/modules.conf添加行:
alias e100 eth0
然后重启网络服务
# /etc/rc.d/network restart
可以运行命令ifconfig 设置临时IP地址
在eth0上添加IP地址192.168.3.20/255.255.255.0
# ifconfig eth0 192.168.3.20 netmask 255.255.255.0 up
删除eth0上的IP地址设置
# ifconfig eth0 down
SLES9
在SLES9上,将网络设备的配置和网络设备对应起来,其特点就是配置文件的文件名中包含设备的唯一标识,对于网卡来说这个唯一标识就是网卡的MAC地址。有一块网卡,它的MAC地址如果是00:0C:76:AD:8B:D6,那么它的配置文件的文件名就是/etc/sysconfig/network/ifcfg-eth-id-00:0c:76:ad:8b:d6。
SLES中可以用yast network来修改主机名(hostname),也可以通过修改配置文件的方式并运行命令实现这个目的。
方法1. 通过yast2管理工具进行配置
在console中运行yast2工具修改主机名(hostname)
# LC_ALL=C yast2 network
配置未经配置的网卡
点击“Network cards configuration”窗口中的“Configure...”按钮
修改已配置网卡的设置
点击“Network cards configuration”窗口中“Change...”按钮
点击“Network address setup”窗口中“Detailed settings”下的“Host name and name server”按钮。
在“Host name”输入框中输入主机名,在“Domain name”中数入域名,如果没有域名,接受缺省值。
方法2. 通过修改配置文件的方式并运行命令修改主机名
修改/etc/HOSTNAME文件,在此文件中保存主机名,例如:
linuxserv1
然后运行命令设置主机名
# /etc/rc.d/boot.localnet start
SLES中可以用yast network来配置缺省网关和到特定网络或主机的路由,也可以通过修改配置文件的方式并运行命令实现这个目的
方法1. 通过yast2管理工具进行配置
在console中运行yast2工具配置缺省网关和到特定网络或主机的路由
# LC_ALL=C yast2 network
配置未经配置的网卡
点击“Network cards configuration”窗口中的“Configure...”按钮
修改已配置网卡的设置
点击“Network cards configuration”窗口中“Change...”按钮
“Network address setup”窗口中“Detailed settings”下单击“Routing” 按钮,在”Default gateway”输入框中输入缺省网关。
如果要设置到特定网络或主机的路由,选中“Routing table”中的“Expert configuration”在“Add”和“Edit”的对话窗口中,填写“Destination”,“Dummy or Gateway”和“Netmask”,“Device”可以不用填写。
例子1: 网络192.168.2.128/255.255.255.128的网关为192.168.2.129,“Destination”填写目的网络地址192.168.2.128,“Dummy or Gateway”填写网关地址192.168.2.129,“Netmask”填写255.255.255.128。
例子2: 主机192.168.3.20/255.255.255.255的网关为192.168.3.20,“Destination”填写目的主机地址192.168.3.20,“Dummy or Gateway”填写网关地址192.168.3.20,“Netmask”填写255.255.255.255。
方法2. 通过修改配置文件的方式并运行命令进行配置
修改文件/etc/sysconfig/network/routes,配置缺省网关和到特定网络或主机的路由
文件的格式:
以#开始的行是注释,每一行是一个路由记录,由空格分隔的多列组成
<default|目的网络|目的主机><网关><目的网络子网掩码><本地网络接口>
示例/etc/sysconfig/network/routes文件
# default gw
default192.168.0.1--
# network 192.168.2.128/255.255.255.128 gateway set to 192.168.2.129
192.168.2.128192.168.2.129 255.255.255.128
# host 192.168.3.20/255.255.255.255 gateway set to 192.168.3.20
192.168.3.20192.168.3.20 255.255.255.255
这个配置文件在执行/etc/rc.d/network start时会被加载
运行命令添加上述路由
# route add default gw 192.168.0.1
# route add -net 192.168.2.128 netmask 255.255.255.128 gw 192.168.2.129
# route add -host 192.168.3.20 gw 192.168.3.20
删除上述路由
# route del -net 0.0.0.0
# route del -net 192.168.2.128 netmask 255.255.255.128
# route del -host 192.168.3.20
在SLES中可以运行yast2 timezone修改日期和时间,也可以运行命令修改日期和时间
注:SLES8下没有修改时间和日期的YaST模块
SLES9
方法1. 通过yast2管理工具进行配置
在console中运行yast2工具的时区模块
# LC_ALL=C yast2 timezone
单击“Clock and Time Zone Configuration” 窗口中“Change Time or Date”按钮修改日期和时间,然后单击“Apply”按钮,使应用生效。
在SLES8和SLES9上都可以用命令修改日期和时间。运行命令修改日期和时间的命令的例子如下:
将日期和时间改为2004年11月27日22时20分
# date -s "2004/11/27 22:20:00"
在SLES8下和SLES9下配置telnet服务(通过YaST2工具和修改配置文件)的方法略有不同,下面分别针对两种系统下的配置方法分别作出说明。
SLES8
方法1. 通过yast2管理工具进行配置
在console中运行yast2工具激活inetd以及telnet服务
#LC_ALL=C yast2 inetd
“Enable/disable inetd” 选择框下选择“On with custom configuration ...” 然后单击“Next”按钮。
“Enable/disable network services”激活"telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd”对应的行,然后单击”Finish”按钮
方法2. 通过修改相关配置文件并运行命令管理进行配置
编辑/etc/inetd.conf文件,去掉下面这行前面的注释:
#telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd
然后运行如下命令激活inetd服务并启动inetd
# chkconfig -a inetd
# /etc/init.d/inetd restart
SLES9
方法1. 通过yast2管理工具进行配置
在console中运行yast2工具激活inetd以及telnet服务
# LC_ALL=C yast2 inetd
“Network Services Configuration (xinetd)”,选择“Enable”前的单选框
在“Currently Available Services”中选择"telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd”对应的行
单击“Toggle Status (On or Off)”按钮,然后单击“Finish”按钮。
方法2. 通过修改相关配置文件并运行命令管理进行配置
编辑/etc/xinetd.d/telnet文件,将行
disable = yes
改为
disable = no
然后运行如下命令激活xinetd服务并启动xinetd
# chkconfig -a xinetd
# /etc/init.d/xinetd restart
检查及排错:
可以用下面的命令查看ftp服务有没有起来
# netstat -l | grep telnet
telnet服务缺省禁止root用户使用.因为telnet口令传输使用明文,从安全的角度考虑不建议开放root用户的telnet限制.
可以编辑/etc/securitty文件添加行
pts/1
pts/2
pts/3
pts/4
pts/5
pts/6
打开root用户的telnet限制
在SLES中可以用yast2 inetd来配置打开ftp服务,也可以通过修改配置文件的方式加以支持
SLES8
方法1. 通过yast2管理工具进行配置
首先编辑/etc/vsftpd.conf文件
将如下两行去掉注释
#local_enable=YES
#write_enable=YES
在console中运行yast2工具激活inetd以及ftp服务
# yast2 inetd
“Enable/disable inetd” 选择 “On with custom configuration ...” 然后单击“Next”按钮。
“Enable/disable network services” 激活“ftp stream tcp nowait root /usr/sbin/tcpd vsftpd”对应的行,然后单击“Finish”按钮。
方法2. 通过修改相关配置文件并运行命令管理进行配置
首先编辑/etc/vsftpd.conf文件
将如下两行去掉注释
#local_enable=YES
#write_enable=YES
编辑/etc/inetd.conf文件,去掉下面这行前面的注释:
#ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
然后运行如下命令激活inetd服务并启动inetd
# chkconfig -a inetd
# /etc/init.d/inetd restart
SLES9
方法1. 通过yast2管理工具进行配置
首先编辑/etc/vsftpd.conf文件
将如下两行去掉注释
#local_enable=YES
#write_enable=YES
在console中运行yast2工具激活inetd以及ftp服务
# LC_ALL=C yast2 inetd
“Network Services Configuration (xinetd)”窗口选择“Enable”前的单选框。
在“Currently Available Services”中选择,“ftp stream tcp nowait root /usr/sbin/tcpd vsftpd”对应的行。
然后单击“Toggle Status (On or Off)”按钮,然后单击“Finish”按钮。
方法2. 通过修改相关配置文件并运行命令管理进行配置
首先编辑/etc/vsftpd.conf文件
将如下两行去掉注释
#local_enable=YES
#write_enable=YES
编辑/etc/inetd.conf文件,去掉下面这行前面的注释:
#ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
然后运行如下命令激活inetd服务并启动inetd
# chkconfig -a inetd
# /etc/init.d/inetd restart
检查及排错:
可以用下面的命令查看ftp服务有没有起来
# netstat -l | grep ftp
还可以查看vsftpd的日志文件进行排错
ftp服务缺省禁止root用户使用.可以编辑/etc/ftpusers文件取消对root的限制.
传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这 些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓 “中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中 间人”一转手做了手脚之后,就会出现很严重的问题。
SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额 外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一 个安全的“通道”。
ssh客户端的命令的语法和telnet很类似:
ssh -l [your accountname on the remote host] [address of the remote host]
如果SSH工作正常,你会看到下面的提示信息:
The authenticity of host [hostname] can't be established.
Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.
Are you sure you want to continue connecting (yes/no)?
SSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。
然后,SSH提示你输入远程主机上你的帐号的口令。输入完口令之后,就建立了SSH连接,这之后就可以象使用telnet那样使用SSH了。
用“scp”拷贝文件,SSH提供了一些命令和shell用来登录远程服务器。在默认情况下它不允许你拷贝文件,但是还是提供了一个“scp”命令。 假定你想把本地计算机当前目录下的一个名为“dumb”的文件拷贝到远程服务器www.foobar.com上你的家目录下。而且你在远程服务器上的帐号名为“bilbo”。可以用这个命令:
scp dumb bilbo@www.foobar.com:.
把文件拷贝回来用这个命令:
scp bilbo@www.foobar.com:dumb .
“scp”调用SSH进行登录,然后拷贝文件,最后调用SSH关闭这个连接。
“scp”假定你在远程主机上的工作目录为你的HOME目录。如果你使用相对目录就要相对于HOME目录。
用“scp”命令的“-r”参数允许递归地拷贝目录。“scp”也可以在两个不同的远程主机之间拷贝文件。
在SLES下可以运行yast2管理模块配置nfs服务器,也可以通过修改配置文件并运行命令的方式配置nfs服务器。SLES8和SLES9在nfs服务器的设置上没有区别。
方法1. 通过yast2管理工具进行配置
在console中运行yast2工具配置nfs服务
# LC_ALL=C yast2 nfs_server
“Configuration of the NFS server” 选择 “Start NFS server” 然后单击“Next”按钮。
“Add directory”添加要输出的目录,例如/opt
“Hosts wildcard”输入可以使用此服务的网络或主机信息,例如192.168.0.0/255.255.255.0 ,“Options”输入所需选项,选项sync或async必须填写,其它选项可以参见man exports(5)
方法2. 通过修改相关配置文件并运行命令管理进行配置
首先编辑/etc/exports文件
# export /mnt to any host with option ro,async
/mnt*(ro,async)
# export /media to hosts 192.168.0.0/255.255.255.0 with option ro,root_squash,sync
/media192.168.0.0/24(ro,root_squash,sync)
然后运行下面的命令激活并启动nfs服务
# chkconfig -a nfsserver
# /etc/init.d/nfsserver restart
检查及排错:
可以用下面的命令查看nfs服务有没有起来
# rpcinfo -p localhost | grep nfs
从linux客户端加载nfs共享文件系统的命令语法
# mount -t nfs <hostname:sharedir> <localmountpoint>
例如:
# mount -t nfs 192.168.1.99:/opt /mnt
在SLES下可以通过运行YaST2模块hwinfo查看各种硬件信息。
运行YaST2的hwinfo模块查看各种硬件信息
#LC_ALL=C yast2 hwinfo
查看CPU信息
查看内存信息
查看网卡信息
查看PCI设备信息
在SLES下用命令行命令查看CPU,内存等设备的信息的方法如下:
查看cpu的信息
# cat /proc/cpuinfo
查看内存的信息
# cat /proc/meminfo
查看网卡等硬件的信息
#lspci | grep Ethernet
查看SCSI控制器信息
#lspci | grep SCSI
可以通过手工修改/etc/X11/XF86Config文件的方式来改变分辨率,对于手工改变刷新频率,需要知道显示器支持的水平扫描频率和垂直扫描频率范围,这里提到的刷新率一般指的是垂直扫描频率。修改配置文件里Monitor Section的HorizSync和VertRefresh字段的值。
Section "Monitor"
Identifier "Monitor[0]"
ModelName "1280X1024@70HZ"
Option "DPMS"
VendorName "--> LCD"
HorizSync 28-82
VertRefresh 57-70
EndSection
然后修改Screen Section的DefaultDepth所对应的SubSection的Modes
Section "Screen"
DefaultDepth 16
SubSection "Display"
Depth 15
Modes "640x480"
EndSubSection
SubSection "Display"
Depth 16
#将Modes改为 1024x768 800x600 640x480
Modes "1024x768" "800x600" "640x480"
EndSubSection
SubSection "Display"
Depth 24
Modes "640x480"
EndSubSection
SubSection "Display"
Depth 32
Modes "640x480"
EndSubSection
SubSection "Display"
Depth 8
Modes "640x480"
EndSubSection
Device "Device[0]"
Identifier "Screen[0]"
Monitor "Monitor[0]"
EndSection
在本章中我们向您介绍在linux下的文件系统维护和备份方法。
在SLES8/9上, 系统安装时默认的文件系统是reiserfs, 其他的文件系统如: ext3, jfs, xfs等都是日志文件系统. 这些日志文件系统在系统启动时会做检查/etc/fstab里面记录的文件系统, 并作出自动修复. 通常情况下不需要用户的交互.
如果用户因为变更/etc/fstab加入了无效的文件系统记录, 系统自动检测会失败, 会进入管理员模式, 让管理员进行维护. 管理员首先应该根据console上记录的出错判断fsck返回错误的文件系统是哪个文件系统. 然后作相应的处理.
一旦发生文件系统失败, 可以由管理员手工执行fsck, 在作fsck之前, 首先要根据数据的重要性,对文件系统所在的分区作备份!!!!
例如: /dev/sdc1上的文件系统保存业务系统的重要数据, 在系统正常工作时加载在/opt/serv_data
目录下, 首先需要对/dev/sdc1作备份, 然后进行手工修复
""首先将/重新用defaults属性加载
# mount -o remount,defaults /
""备份/dev/sdc1到/archives目录下的sdc1.dat文件, 确保目的文件系统有足够大的空间
# dd if=/dev/sdc1 of=/archives/sdc1.dat
""假设/dev/sdc1文件系统类型为ext3
# fsck.ext3 /dev/sdc1
""假设/dev/sdc1文件系统类型为reiserfs
# fsck.reiserfs /dev/sdc1
关于fsck.ext3和fsck.reiserfs的详细帮助,请参见man e2fsck(8)和man reiserfsck(8)
服务器的安全性和可靠性是与备份密切相关的。定期备份是一件非常重要的事。错误随时会发生。有可能是硬件出错、电源问题或是人为的错误。如果你是系统管理员,很有可能有人会让你恢复一些被误删除的文件。如果定期备份,就能把这种损失减到最小。最安全的备份方法是把它们备份到别的地方,如:网络上、磁带、可移动驱动器(removable drive)或可写光驱,等等。
在备份和还原系统时,Linux 基于文件的性质成了一个极大的优点。在 Windows 系统中,注册表与系统是非常相关的。配置和软件安装不仅仅是将文件放到系统上。因此,还原系统就需要有能够处理 Windows 这种特性的软件。在 Linux 中,情况就不一样了。配置文件是基于文本的,并且除了直接处理硬件时以外,它们在很大程度上是与系统无关的。硬件驱动程序的现代方法是,使它们以动态加载的模块的形式可用,这样内核就变得更加与系统无关。不同于让备份必须处理操作系统如何安装到系统和硬件上的复杂细节,Linux 备份处理的是文件的打包和解包。
一般情况下,以下这些目录是需要备份的:
目录名 | 说明 |
/etc | 包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。 |
/var | 含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。 |
/home | 包含所有用户的默认用户主目录。这包括他们的个人设置、已下载的文件和用户不希望失去的其他信息。 |
/root | 是根(root)用户的主目录。 |
/opt | 是安装许多第三方软件的地方。用户的应用也经常安装在这个目录下。 |
在SLES下常用的备份方法主要有两种,一种是用tar进行备份和恢复,另外一种是用dd进行备份和恢复。
tar 是一个已移植到 Linux 中的经典 UNIX 命令。tar 是 tape archive(磁带归档)的缩写,最初设计用于将文件打包到磁带上。如果您下载过 Linux 源代码,或许已经碰到过 tar 文件。这是一个基于文件的命令,它本质上是连续地、首尾相连地堆放文件。
使用 tar 可以打包整个目录树,这使得它特别适合用于备份。归档文件可以全部还原,或从中展开单独的文件和目录。备份可以保存到基于文件的设备或磁带设备上。文件可以在还原时重定向,以便将它们重新放到一个与最初保存它们的目录(或系统)不同的目录(或系统)。tar 是与文件系统无关的。它可以使用在 ext2、ext3、 jfs、Reiser 和其他文件系统上。
使用 tar 非常类似于使用诸如 PKZip 这样的文件实用工具。只需将它指向一个目的(可以是文件或设备),然后指定您想要打包的文件。您可以通过标准的压缩类型来动态压缩归档文件,或指定一个自己选择的外部压缩程序。要通过 bzip2 压缩或解压缩文件,可使用 tar -z 命令。
使用tar进行备份的方法:
备份步骤 | 示例 | 备注 |
1确定要备份的目录和文件 | 通常情况下用户可以选择要备份的目录,但是为了保证 系统和应用的一致性,我们建议用户备份除临时文件之外的所有文件 | 要备份的目录 / 不备份的目录 /proc |
2确定保存备份的设备 | 一般情况下,通常备份到外部存储设备上,我们的例子里备份设备是第一个非回卷磁带设备/dev/nst0 | |
3执行全备份 | 我们用文件系统上的文件作为备份的标识 # mkdir -p /backup # date +%Y"-"%m"-"%d" "%H":"%M":"%S > /backup/full_backup 进行第一次全备份 # tar -cpzMf /dev/nst0 / --exclude=/proc | 文件/backup/full_backup的内容是下一次备份时要使用的时间戳。 |
4定期执行增量备份 | 备份前,建立文件系统上的时间戳 # date +%Y"-"%m"-"%d" "%H":"%M":"%S > /backup/incr_backup_1 # tar –newer=`cat /backup/full_backup` -cpzMf /dev/nst0 / --exclude /proc | 文件/backup/incr_backup_1的内容是下一次备份时要使用的时间戳。 |
使用tar进行恢复的方法:
恢复步骤 | 示例 | 备注 |
1确定恢复的磁盘设备 | 新加一块磁盘,将来会在这块磁盘上建立分区和文件系统 | |
2用系统安装光盘引导系统 进入manual->rescue模式 | 插入SLES操作系统安装光盘, 加载所需的SCSI控制器的驱动模块 | |
3建立分区和文件系统 | 在新加入的磁盘上建立分区和文件系统 会用到命令mkfs.reiserfs/mkfs.ext3,fdisk等 | |
4加载分区上的文件系统到 某个目录 | # mkdir /restore # mount /dev/sda1 /restore | |
5将磁带回卷 | 执行命令 # mt -f /dev/nst0 rewind | |
6从磁带上恢复全备份 | # tar -zxpvf /dev/nst0 | |
7从磁带上恢复增量备份 | # tar -zxpvf /dev/nst0 |
dd 是一个文件系统复制实用工具,它产生文件系统的二进制副本。dd还可用于产生硬盘驱动器的映像,类似于使用诸如 Symantec 的Ghost 这样的产品。然而,dd 不是基于文件的,因此您只能使用它来将数据还原到完全相同的硬盘驱动器分区。
使用dd进行磁盘备份的方法:
备份步骤 | 示例 | 备注 |
1确定要备份的分区或磁盘 | 确定要备份第一块SCSI盘 在linux上设备名为/dev/sda 这个盘是操作系统和应用所在的磁盘,实际中可根据实际情况确定要备份的磁盘设备。 | 假设这个磁盘大小为60GB |
2选择备份镜像文件的存储 | 备份文件保存在共享存储上, 文件名为SLES_9_APP_20050107.img | 假设共享存储设备名为/dev/sdc1,分区后有足够的自由空间, 在备份系统上加载在/mnt目录下 |
3切换到单用户 | 执行命令 # init 1 | |
4加载共享存储 | 执行命令 # mount /dev/sdc1 /mnt | |
5运行dd命令生成磁盘镜像 | 执行命令 # dd if=/dev/sda of=/mnt/SLES_9_APP_20050107.img |
使用dd进行磁盘恢复的方法:
恢复步骤 | 示例 | 备注 |
1用同类型的磁盘更替有故障的磁盘 | 更替系统上的第一块SCSI磁盘/dev/sda | |
2用SLES安装光盘引导系统 进入manual->rescue模式 | 插入SLES操作系统安装光盘, 加载所需的SCSI控制器的驱动模块 | |
3手工加载共享存储 | 执行命令 # mount /dev/sdc1 /mnt | |
4用磁盘的备份镜像文件进行恢复 | 执行命令 # dd if=/mnt/SLES_9_APP_20050107.img of=/dev/sda | |
5恢复完毕后重启系统 |
评论专区