http://10.1.1.35/ule_basic/ule10.txt

来源:互联网 发布:魔幻手机水晶娃娃淘宝 编辑:程序博客网 时间:2024/06/05 19:39
--

linux系统的备份与恢复


哪些需要备份:



/bin 存放的是系统可执行的二进制文件
/etc 存放的是配置文件
lost+found 分区下才会有这个目录,存放系统出错时遗失的碎片文件
/mnt 默认的挂载目录(mount)
/opt 扩展软件包
/sbin 系统管理员可执行的二进制文件
/tmp 存放临时文件的目录
/boot 存放引导镜象的目录
initrd-2.6.18-164.el5.img vmlinuz-2.6.18-164.el5
/home 用户家目录
管理的家目录为/root
/media 默认挂载media的目录
/proc 虚拟目录 ,它记录的是当前系统的各种动态信息和状态
/selinux 高级安全管理
/usr 用户软件目录,用户装软件一般存放在此
/dev 一切设备都是文件
/dev/sda scsi U盘
/dev/hdaIDE
/dev/cdrom 光盘
/dev/fd0软驱
/dev/lp打印机
/dev/mouse鼠标

/lib系统使用的函数库目录,程序运行过程中,会调用一些这里的库文件
/var 主要存放执行过程中经常变化的文件,比如说:日志,邮件
/var/lib 程序执行过程中,使用的数据文件放置的目录:比如:rpm包的数据库, 的locate查找的数据库等
/var/log 系统日志和各种服务日志存放的目录
/var/run 一般用来存放程序运行的pid
/var/spool/mail每个用户收邮件的目录


系统本身:

/etc/ --下面有/etc/passwd,/etc/fstab,/etc/initab等等重要的系统配置文件和服务配置文件
/root,/home/用户名 --各个用户的家目录,存放各个用户的文件
/var/spool/mail,/var/log/messages --邮件,系统日志信息
/usr/local,/opt/,/usr/src --用户安装的软件,扩展软件包,软件包源码
/bin/,/sbin/--用户和管理的可执行命令

服务相关:
与服务器跑的服务相关的数据要备

不需要备的:/tmp,/mnt,/proc,/dev



备份的介质:
软盘:/dev/fd0
光盘:/dev/cdrom
硬盘:/dev/hda(b,c,...) IDE/dev/sda(b,c,...) SCSI,SATA,USB
磁带机: /dev/ht0 IDE /dev/st0 SCSI
usb接口的外接设备

备份的种类:
全备--也可以称为镜像备份
增量差异备份--只备份变化的
累计增量差异备份 --累计一段时间的变化数据



linux下备份的工具

cp tar
scp rsync
dump/restore rdump
dd
cpio


tar
实现系统全备:
tar cjvf --exclude=/proc --exclude=/tmp --exclude=/mnt --exlude=/media --exlude=/misc --exclude=/dev --exclude=/backup /backup/fullbackup.tar.bz2 /


tar -N参数(了解)

tar -N '2010-05-09' -cvjf /backup/newer.tar.bz2 /test/test/
--备份比2010-05-09新的文件,包括20100509这天的



tar打包备份,并按时间命令
tar cvjf /backup/`date +%Y-%m-%d`.tar.bz2 /home/--注意`符号(执行符号)是tab键上面的那个键


远程备份

scp --远程备份目录时,记得加-r参数
要实现用脚本自动scp的远程备份,注意配ssh等效性


rsync remote sync 远程同步 比wget要好

wget http://127.0.0.1/ule07.txt--直接接url uniform resouce locate(统一资源定位)

curl -I

rsync 特点:

1,可以镜像保存整个目录树和文件系统
2,容易做到保存原有的权限,时间,软硬链接
3,传输效率高,使用同步算法,只比较变化的
4,支持匿名传输,方便网站镜像

软件包:rsync.i386


普通应用:

rsync -av /home /backup --本机上的同步,把/home目录下的内容同步到/backup目录下

rsync -av /home/ 10.1.1.218:/backup--把本地的/home目录内容,同步到远端218的/backup目录下

rsync -av 10.1.1.218:/backup/ /backup/--把远端218的/backup目录下的内容同步到本地的/backup目录

rsync -avlR /backup/ -e ssh 10.1.1.218:/backup/--加上-e ssh参数那么就经过ssh加密传输


rsync 参数介绍
-v verbo
-a 归档模式,递归的方式传输文件,并保持文件的属性
-l 保留软链接
-R保留相对路径
-H 保留硬链接
-p ,-o,-g,-A 分别保留权限,属主,属组,acl等 ,但如果加了-a,这些就都包括了



rsync服务
/etc/xinetd.d/rsync --服务启动脚本

配置文件: /etc/rsyncd.conf--默认不存在,需要手动建立
man rsyncd.conf --帮助



服务器端的配置:
1,第一步:
vim /etc/rsyncd.conf

uid=root--执行同步时的身份,注意文件是否有权限去操作
gid=root
max connections =4--最大连接数
syslog facility= local5--指定日志产生到local5
pid file =/var/run/rsyncd.pid--pid文件

[backup]--定义一个让客户端能同步的名称
path=/backup--实际让客户端能同步的路径

2,第二步:
vim /etc/xinetd.d/rsync --修改服务启动脚本

service rsync
{
disable = no--yes改为no 打开rsync服务功能
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}


第三步:
/etc/init.d/xinetd restart--重启服务

netstat -ntlup |grep 873--服务端就会有873的端口在监听了
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4080/xinetd




客户端的操作:
[root@s214 ~]# rsync -avlR 10.1.1.35::backup /backup/--把服务器端10.1.1.35的backup(注意这个backup是/etc/rsyncd.conf里[backup]里的字段,这是对应的) 是同步到客户端本地的/backup目录




例二:
rsync服务加上让普通用户能同步的验证功能
vim /etc/rsyncd.conf

uid=root
gid=root
max connections =4
syslog facility= local5
pid file =/var/run/rsyncd.pid

[backup]
path=/backup
auth users= a,b--能使用rsyncd服务的普通用户名,注意要系统存在
secrets file =/etc/rsyncd.passwd--指定a,b用户的密码文件位置


vim /etc/rsyncd.passwd--把a,b用户的密码写在/etc/rsyncd.passwd里
a:123
b:123456

chmod 600 /etc/rsyncd.passwd --注意权限改为600,只root用户能读能写


-----------------------------------------------------------------


dump备份
restore 恢复

dump的特点:
1,只能针对整个分区
2,能够支持绝大部分文件类型,包括设备文件,也能保留原属性
3,支持镜像备份和增量备份
4,备份时支持基本压缩

备份级别:
通过备份级别来支持增量和镜像备份
0-9级别,0代表的是全备(镜像备份),后面的数字代表递增的增量备份


周期 1234567
级别0123456



备份方法:
dump -0u /dev/sda13 -f /backup/sda13_0_full.dump--/dev/sda13磁盘的0级别的全备

touch dump1--touch一个文件,与先前有差异
dump -1u /dev/sda13 -f /backup/sda13_1_added.dump--1级别备份,也就是将会只备份差异的

touch dump2
dump -2u /dev/sda13 -f /backup/sda13_2_added.dump

touch dump3
dump -3u /dev/sda13 -f /backup/sda13_3_added.dump

touch dump4
dump -4u /dev/sda13 -f /backup/sda13_4_added.dump


[root@li quota]# ll /backup/
总计 120820
-rw-r--r-- 1 root root 123084800 05-09 14:04 sda13_0_full.dump
-rw-r--r-- 1 root root 122880 05-09 14:06 sda13_1_added.dump
-rw-r--r-- 1 root root 122880 05-09 14:07 sda13_2_added.dump
-rw-r--r-- 1 root root 122880 05-09 14:07 sda13_3_added.dump
-rw-r--r-- 1 root root 122880 05-09 14:07 sda13_4_added.dump


restore -t -f sda13_4_added.dump --查看备份集里备份的文件用-t参数

恢复restore
1, 因为整个分区崩溃,需要恢复,那么在这里最好重新格式化一下这个分区,再重新挂载
2,开始restore恢复

cd /恢复路径 --先cd到要恢复的路径,再一级一级恢复,不能跳级

restore -r -f /backup/sda13_0_full.dump --先恢复全备,-r参数就是重建

restore -r -f /backup/sda13_1_added.dump

restore -r -f /backup/sda13_2_added.dump

restore -r -f /backup/sda13_3_added.dump

restore -r -f /backup/sda13_4_added.dump

针对单一文件的恢复

直接从备份中提取出文件:

restore -x -f /backup/sda13_0_full.dump /a1--直接提取出a1文件,用-x参数

You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume # (none if no more volumes): 1
set owner/mode for '.'? [yn] y


交互性的提取出文件:

[root@li quota]# restore -i -f /backup/sda13_0_full.dump --交互性用-i参数
restore > ls
.:
a1 a4 aa2 b1 lost+found/
a2 a5 aquota.group b2
a3 aa1 aquota.user bb1

restore > add a2
restore > add a3
restore > add a4--把备份集中的a2,a3,a4加到提取列表,如果是目录的话使用 add 目录名/*

restore > ls--再次查看备份集会看到加入到提取列表文件被加了标记
.:
a1 *a4 aa2 b1 lost+found/
*a2 a5 aquota.group b2
*a3 aa1 aquota.user bb1

restore > extract--这个命令提取出来
You have not read any volumes yet.
Unless you know which volume your file(s) are on you should start
with the last volume and work towards the first.
Specify next volume # (none if no more volumes): 1
set owner/mode for '.'? [yn] n
restore > quit--退出



rdumpremote dump 远程dump

先配ssh等效性

RSH=/usr/bin/ssh rdump -0u /dev/sda13 -f 10.1.1.218:/tmp/sda13_0_full.dump
--把本地的/dev/sda13的数据远程dump到218的/tmp目录,远程dump要受网络的影响





-----------------------------------------------------------------


dd 指定大小地拷贝一个文件,并在拷贝的同时可以进行一些转换

1,备份mbr
dd if=/dev/sda of=/backup/mbr.backup bs=1 count=512
恢复:dd if=/backup/mbr.backup of=/dev/sda
2,备份整个硬盘
dd if=/dev/sda of=/dev/sdb --把/dev/sda的数据备份到/dev/sdb
恢复:dd if=/dev/sdb of=/dev/sda
dd if=/dev/sda of=/backup/full.backup --把/dev/sda的数据备份成一个文件
恢复:dd if=/backup/full.backup of=/dev/sda
3,备份软盘
dd if=/dev/fd0 of=/backup/fd0.backup bs=1 count=1440
恢复:dd if=/backup/fd0.backup of=/dev/fd0
4,从光盘拷贝iso镜像
dd if=/dev/cdrom of=/xxx.iso
5,从内存里拷贝资料到磁盘
dd if=/dev/mem of=/backup/mem.bin
特殊应用:
6,销毁磁盘数据
dd if=/dev/urandom of=/dev/sda --随机数填充磁盘
7,修复硬盘,当硬盘长时间不使用
dd if=/dev/sda of=/dev/sda
8,raw设备(裸设备)或者lvm数据迁移等



-------------------------------------------------------
cpio能备份任何类型文件(了解)

一般使用管道和别的命令配合(find)


find /quota/ |cpio -ov > /backup/quota.cpio--备份

cpio -iv < /backup/quota.cpio --恢复

-o 备份
-i 恢复
-v 显示










-----------------------------------------------------------------------------

模块管理

/lib/modules/`uname -r`/kernel

[root@li /]# ls /lib/modules/2.6.18-164.el5/kernel/
arch/ crypto/ drivers/ fs/ lib/ net/ sound/
架构平台 加密有关 驱动有关 文件系统 库 网络 声音



lsmod 查看装载模块列表
modinfo 查看模块信息 modinfo 8139too
rmmod删除正在装载的模块 rmmod 8139too


insmod /lib/modules/2.6.18-164.el5/kernel/drivers/net/8139too.ko --这个要写路径
modprobe 8139too--这个只要写模块名就可以了



-----------------------------

--内核编译

内核的功能定制

www.kernel.org



10.1.1.35:/share/soft/kernel/linux-2.6.25.tar.bz2

内核编译要考虑几点:
自己定制的内核运行更快,具有更少的代码
把不需要的功能编译进内核可能会有受到漏洞被利用的风险
将某种功能编译成模块方式比直接编译进内核速度要慢


tar xvf /share/soft/kernel/linux-2.6.25.tar.bz2 -C /usr/src/

cd /usr/src/linux-2.6.25/


编译内核的步骤:
1,make mrproper --消除当前内核源码,使之干净,(和make clean相似)
2,make config--基于文本的传统的配置界面,不推荐使用
make menuconfig--基于ncurses-devel库的一种文本选单方式(要装ncurses-devel)
make oldconfig--如果只想在原来的内核配置基础上修改的话,用此选项
make xconfig --基于x windows的图形配置界面,基于qt的(要装avahi-qt3-devel)

* 代表编入内核
M 代表编成模块
空 代表不编入内核


有三种括号:
方括号:要么是编进,要么是不编
尖括号:三种选择,编进,不编,编成模块
圆括号: 多选一


3,make
4,make modules_install --把编译后的模块复制到/lib/modules/内核新版本/ 以后就可以用modprobe insmod来装载使用
5,make install --拷贝vmlinuz,initrd 到/boot/下 ,并自动修改grub


















原创粉丝点击