备份与恢复,尚观Da y

 本周的课程安排:

    周一:    备份于恢复
    周二:  DNS 服务器的搭建 , ntp服务器的搭建
    周三:    apache服务的搭建 ,dhcp
    周四:    samba服务器的搭建, kernel编译
    周五:    sendmail服务器的搭建


=======================================

第一、备份与恢复
    
    dump/restore
    rsync
    tar cp

    1、dump/restore备份与恢复

        dump的特点:
                a、只能针对整个分区分区
                b、备份的时候支持基本压缩
                c、支持镜像备份和增量备份
                d、能够支持绝大部分文件类型备份,包括设备文件,他能保留原来文件的属性


        备份级别:
            镜像备份--全备份,称之为 0 级别,备份的内容最完整;
            增量备份:1-9级别,每个解别递增都会相对于前一个级别的内容变化备份下来

        备份周期: 从0 --高级别--0 的一个过程


        使用方法:
            第一次备份肯定是需要备份镜像:
            dump -0u /dev/sda15 -f /tmp/test/sda15_0_full.dump
                #  -0u 指定是完整备份

            接着就是增量备份:
            (删除部分文件)
            dump -1u /dev/sda15 -f /tmp/test/sda15_1_add.dump
                #  -1u 指定是级别1的增量备份
            (格式化后再存放一些新文件*.onf)
            dump -3u /dev/sda15 -f /tmp/test/sda15_3_add.dump


        数据恢复:
            (恢复之前先把当前状态的数据备份一下,免得负责任)
            1、要重新格式化你准备恢复的那个分区
            2、重新挂载
            3、镜像备份恢复:
                cd /恢复路径
                restore -r -f /tmp/test/sda15_0_full.dump
                    #  -r 重建参数,就是恢复的意思
                    #  -f 指定备份文件的路径
                restore -r -f /tmp/test/sda15_1_add.dump
                restore -r -f /tmp/test/sda15_3_add.dump
            注意:恢复必须先镜像备份恢复,然后再到增量备份,恢复增量备份的时候不能跳级    
            
            
        查看备份集里的文件列表:
        restore -t -f ./sda15_0_full.dump  


        提取文件:
            a、非交互式的提取
        restore  -x -f sda15_0_full.dump /grub   <---提取备份文件里的一个文件夹
        restore  -x -f sda15_0_full.dump /grub/grub.conf

            b、交互式的提取

[root@dns test]# restore  -i -f sda15_0_full.dump  <---  -i  交互式
restore > ?
restore > ls
restore > add vmlinuz-2.6.28.10   <---把这个文件放到提取列表里
restore > add grub/*
restore > ls
.:
 System.map                     initrd-2.6.28.10.img
 System.map-2.6.18-128.el5      lost+found/
 System.map-2.6.18-128.el5PAE   restoresymtable
 System.map-2.6.28.10           symvers-2.6.18-128.el5.gz
 System.map-2.6.28.10.old       symvers-2.6.18-128.el5PAE.gz
 config-2.6.18-128.el5          vmlinuz-2.6.18-128.el5
 config-2.6.18-128.el5PAE       vmlinuz-2.6.18-128.el5PAE
*grub/                         *vmlinuz-2.6.28.10     <----打 * 号的代表放在提取列表了
 initrd-2.6.18-128.el5.img      vmlinuz-2.6.28.10.old
 initrd-2.6.18-128.el5PAE.img

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   <---踢去的文件是否来自单独的备份文件
restore: cannot create symbolic link ./grub/menu.lst->./grub.conf: File exists
set owner/mode for '.'? [yn] n  
restore > quit   

        
        
        备份到远程机器:把A 机器的内容备份到 B 机器
        
            a、配置ssh登录密钥
                
ssh-keygen -t dsa
ssh-keygen -t rsa
cat id_dsa.pub > authorized_keys
cat id_rsa.pub >> authorized_keys
scp /root/.ssh/authorized_keys  10.1.1.141:/root/.ssh/


            b、备份操作

RSH=/usr/bin/ssh  rdump -0u  /dev/sda15 -f root@10.1.1.141:/tmp/sda15_0_full.dump




    2、rsync
    软件包: rsync.i386

    a、普通使用
        rsync -azvP  /tmp/test   10.1.1.141:/tmp  <---把test目录同步过去
        rsync -azvPR  /tmp/test   10.1.1.141:/  <---把相对目录建立起来
                 --delete  支持增量备份
        缺点: 使用系统帐号的密码、没有访问控制,没有权限控制,没有日志记录

    b、以服务的形式
        
        1、配置文件: /etc/rsyncd.conf

uid = nobody      <---执行同步时候的身份,指定的时候必须注意,注意文件是否有权限去操作
gid = nobody       <---
use chroot = no   <--- no 代表执行操作的时候可以切换到别的目录 ,yes就是不能,应为锁定了工作目录
max connections = 4  <---最大连接数
syslog facility = local5 <---指定 产生 syslog日志信息的设备
pid file = /var/run/rsyncd.pid  <---服务运行时候的PID 存放的地方


[ftp]  《---模块定义,名字随便
path = /var/ftp/pub  <---模块对应的目录,准备要同步(备份)的目录
comment = whole ftp area (approx 6.1 GB)  <---注释


        2、修改服务启动参数
        rsync的启动依靠 xinetd 启动,对应启动文件 /etc/xinetd.d
 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
}

        3、重新启动服务,让配置生效
    
service xinetd restart
验证是否成功打开这个服务:
netstat -ntl | grep 873



        4、测试
用另外一台电脑去远程同步服务器上的数据到本地
 rsync -azvP tom@10.1.1.20::ftp  /backup


例子2:
关于use chroot = no的实现配置:
1. vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = no  
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid


[ftp]
path = /var/ftp/pub
uid = nobody
gid = nobody


2. 创建测试使用的相关文件
echo "can you rsync me ?" > /1111.txt
cd /var/ftp/pub
ln -s /1111/txt  ./linkfile


3. 重启 service xinetd restart


另外一台机器测试:rsync -azvPL tom@10.1.1.20::ftp  /backup  # -L参数就是把软链接文件指向的文件的内容读取并同步到本地,同步之后文件名字保留软连接的名字
        效果: cat linkfile   <---看到的是远程机器 /1111.txt的内容



如果把use chroot = no改成 yes ,并重启服务,你再用客户端运行:
    rsync -azvPL tom@10.1.1.20::ftp  /backup
    就会发现同步linkfile文件失败



例子3:增加用户验证
1、配置文件
uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid


[ftp]
path = /var/ftp/pub
auth users = tom,bean  <--之允许tom这个用户登录并且同步数据,注意:tom,bean必须是系统存在的
secrets file = /etc/rsync.passwd
uid = nobody
gid = nobody

2、创建密码文件
vim /etc/rsync.passwd
tom:123
bean:123456

chmod 600 !$  <---注意权限问题

3、service xinetd restart

4、测试

例子4:访问控制,权限控制
uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid


[ftp]
path = /var/ftp/pub
auth users = tom,bean
read only = yes  <---只读,也就是只允许你把数据拿走,但不能把数据同步上来
secrets file = /etc/rsync.passwd
uid = nobody
gid = nobody

重启服务并测试
[root@station8 backup]# rsync -azvP  /backup  tom@10.1.1.20::ftp  
Password:
building file list ... done
ERROR: module is read only  <--同步失败


修改一下参数:read only = no


重启服务并测试:
    如果 /var/ftp/pub 是755权限就同步失败,因为nobody没有权限去写
    如果 /var/ftp/pub 是777权限就同步成功

例子5:访问控制--限制网络

uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid


[ftp]
path = /var/ftp/pub
auth users = tom,bean
read only = no
secrets file = /etc/rsync.passwd
uid = nobody
gid = nobody
hosts allow = 10.1.1.0/255.255.255.0,192.168.20.0/255.255.255.0
hosts deny = *

测试


例子6:日志记录

uid = nobody
gid = nobody
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
transfer logging = yes
log file = /var/log/rsync.log
log format = %t  %a %m  %f  %b  <---日志格式 man rsyncd.conf

[ftp]
path = /var/ftp/pub
auth users = tom,bean
read only = no
secrets file = /etc/rsync.passwd
uid = nobody
gid = nobody


参数的说明:
uid / gid  如果遇到权限问题,要么就修改遇到问题的文件的属性,要么就修改 uid 或者 gid ,可以放到局部参数里设定



客户端命令使用技巧:

    增量备份:rsync -azvP --delete tom@10.1.1.20::ftp  /backup

    免去手工输入密码:
touch /mypwd
chmod 600 /mypwd
echo "123"  > /mypwd

rsync -azvP --delete --password-file=/mypwd  tom@10.1.1.20::ftp  /backup


第二、高级文件搜索

    whereis  which locate  find

    locate <---快速定位包含指定关键字的路径,第一运行需要生成数据库文件: updatedb
    

    find 路径  [options]

        find /etc   -name "httpd.conf"
        find /etc   -name "*.conf"
[root@dns test]# find /tmp/test  -iname "new1.txt"  《-不区分大小写
/tmp/test/new1.txt
/tmp/test/new1.tXt    

        find /dev  -type s    
        find /usr/bin  -type l -name "z*"
        find /usr/bin  -type l -name "z*" -exec ls {} /;
        find /etc -perm 400  《--按权限去找文件
        find /etc  -size 40k
        find /etc  -size 1M   <--- 1G
        find /etc  -size +40k  《  大于 40k
        find /etc  -size 40k -name "*.cf" -exec cat {} /;
        find /etc  -mtime -1  <--- 单位:天, -1 一个小时之内修改内容
        find /etc  -ctime +1  <--- 单位:天, +1 一个小时之前,但24小之内属性修改国的文件
                -atime

[root@dns test]# find ./ -mtime +1  < 修改时间超过 N+1 天
[root@dns test]# find ./ -mtime -1  < 修改时间在一天之内
[root@dns test]# find ./ -mtime +0  < 修改时间超过N+1天

        find /etc  -mmin -1   <---单位是分钟,-1  一分钟之内修改的文件 -amin  -cmin

stat new1.txt        
Access: 2009-11-02 11:21:41.000000000 +0800   《--读取文件内容或执行文件的时候会修改
Modify: 2009-11-02 11:21:41.000000000 +0800   《--修改文件内容的时候才变化
Change: 2009-11-02 11:21:41.000000000 +0800

----
Access: 2009-11-02 11:36:02.000000000 +0800
Modify: 2009-11-02 11:21:41.000000000 +0800
Change: 2009-11-02 11:21:41.000000000 +0800
[root@dns test]# echo "new content"  > new1.txt
Access: 2009-11-02 11:36:02.000000000 +0800
Modify: 2009-11-02 11:38:20.000000000 +0800  <---修改文件内容的时候才变化,这里改了
Change: 2009-11-02 11:38:20.000000000 +0800  <---这里也改了  ,只要inode信息变化了,这里的时间也会变化

        inode table 什么情况变化?
            修改文件内容、权限、文件名、用户组、为他创建硬链接、改变拥有者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值