zoukankan      html  css  js  c++  java
  • Linux Sever简单笔记(第十一堂课)之linux下的备份和恢复及rsync还有inotify和dump以及restore

    11章Linux下的备份和恢复

    了解Linux下的备份种类和备份策略 

    掌握Linux下的备份方法

    Linux下的数据备份种类 

    系统备份 

    用户备份 

    日志备份 

    数据库备份 

    用户数据备份

    Linux下的数据备份策略 

    完全备份 

    增量备份 

    累积备份 

    磁盘镜像 

    网络备份

    使用rsync备份 

    rsyncremote synchronize

    ⚫ rsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具。 适用于多个平台。从软件名称可以看出来是远程同步的意思(remote sync)可实现全量备 份与增量备份,因此非常适合用于架构集中式备份或异地备份等应用。

    支持本地复制,或者与其他SSHrsync主机同步

    官方网站:http://rsync.samba.org/

    ⚫ rsync监听端口:TCP 873

    使用rsync备份 

    rsync功能特点

    不同的分区

    不同的硬盘

    不同的计算机

    仅传输不同之处

    安全数据传输

    保持所有权

    使用rsync备份

    rsync传输方式及应用场景

    上传(推)

    所有主机推送本地数据至Rsync备份服务器,会导致数据同步缓慢(适合少量数据备份)

    机器量不是很多的时候,可以使用推送

    下载(拉)

    ◆ rsync备份服务端拉取所有主机上的数据,会导致备份服务器开销大

    机器量很大的时候,推和拉协同使用

    rsync的传输模式 

    本地方式

    单个主机本地之间的数据传输,类似cp命令

    远程方式

    通过ssh通道传输数据,类似scp命令

    守护进程

    服务,持续后台运行

    rsync命令 

    rsync命令的用法

    基本格式:rsync [选项] 原始位置 目标位置

    常用选项:

    ◆ -a:归档模式,递归并保留对象属性,等同于 -rlptgoD      

    ◆ -v:显示同步过程的详细(verbose)信息

    ◆ -z:在传输文件时进行压缩(compress

    ◆ -H:保留硬连接文件

    ◆ -A:保留ACL属性信息

    ◆ --delete:删除目标位置有而原始位置没有的文件

    ◆ --checksum:根据对象的校验和来决定是否跳过文件

    rsync的本地传输 

    本地备份文件同步

    格式:rsync [选项] 原始位置 目标位置

    [root@centos7 ~]# rsync -av /boot /tmp/boot

    sending incremental file list

    boot/ boot/.vmlinuz-3.10.0-1062.el7.x86_64.hmac boot/System.map-3.10.0-1062.el7.x86_64 boot/config-3.10.0-1062.el7.x86_64 boot/initramfs-0-rescue-71170756d7cf4565bc28bfba47de8eed.img

     

     

     

    rsync的远程方式 

    上传(推)

    格式:rsync [选项] 目标位置(本地) user@host:原始位置

    [root@client ~]# rsync -av /tmp/rootbak root@192.168.1.20:/root/ 

    远程方式存在的缺陷:

    需要使用系统用户(不安全)

    使用普通用户(权限存在问题)

    需要走ssh协议

    rsync的远程方式 

    下载(拉)

    格式:rsync

    [选项] user@host:原始位置 目标位置(本地)

    [root@client ~]# rsync -av root@192.168.1.20:/root/ /tmp/rootbak

    created directory /tmp/rootbak

    delta-transmission enabled

    ./

    ……

    anaconda-ks.cfg

    test.txt

    ……

    [root@centos ~]# ls /tmp/rootbak/

    anaconda-ks.cfg test.txt

     

     

     

    rsync的守护进程方式 

    上传

    [root@client ~]# rsync -avz /mnt/ rsync_backup@192.168.1.20::backup/ 

    下载

    [root@client ~]# rsync -avz rsync_backup@192.168.1.20::backup/ /mnt/ 

    原始位置的两种表示方法

    用户名@主机地址::共享模块名 rsync_backup@192.168.1.20::backup/

    ⚫rsync://用户名@主机地址/共享模

    rsync://rsync_backup@192.168.1.20/backup/

    上传下载

     

     

     

     

    服务

    配置rsync备份服务器 

    rsync的配置文件-1(全局配置) 

    ⚫ /etc/rsyncd.conf

    uid = rsync // 运行进程的用户

    gid = rsync // 运行进程的用户组

    port = 873 // 监听端口

    fake super = yes // 无需让rsyncroot身份运行,允许存储文件的完整属性

    use chroot = no // 关闭假根功能

    max connections = 200 // 最大连接数

    timeout = 600 // 超时时间

    ignore errors // 忽略错误信息

    read only = false // 对备份数据可读写

    list = false // 不允许查看模块信息

    auth users = rsync_backup // 定义虚拟用户,作为连接认证用户

    secrets file = /etc/rsync.password // 定义

    rsync服务用户连接认证密码文件路径

    log file = /var/log/rsyncd.log // 日志文件

    配置文件

     

     

    配置rsync备份服务器 

    rsync的配置文件-2(局部配置) 

    ⚫ /etc/rsyncd.conf

    [backup] // 定义模块信息

    comment = welcome to backup! // 模块注释信息

    path = /backup // 定义接收备份数据目录

    创建密码文件

     

    配置rsync备份服务器 

    创建虚拟用户密码文件(用于客户端连接时使用的用户)

    创建虚拟用户和密码文件,并赋予600权限

    [root@server ~]# echo "rsync_backup:123456" > /etc/rsync.password

    [root@server ~]# chmod 600 /etc/rsync.password

    修改密码文件的权限

    配置rsync备份服务器 

    创建用户

    运行rsync服务的用户身份

    创建rsync账户,不允许登录不创建家目录

    [root@server ~]# useradd -M -s /sbin/nologin rsync

    创建备份目录(尽可能磁盘空间足够大),授权rsync用户为属主

    [root@server ~]# mkdir /backup

    [root@server ~]# chown -R rsync.rsync /backup/

    创建用户

     

    更改数组属主

     

    rsync服务测试验证 

    将客户端的/etc/passwd 推送至 rsync服务端[backup]

    [root@client ~]# rsync -av /etc/passwd

    rsync_backup@192.168.1.20::backup

    Password: //输入rsync_backup用户的密码

    sending incremental file list

    passwd

    sent 2,506 bytes received 43 bytes 7.01 bytes/sec

    total size is 2,410 speedup is 0.95 p

    rsync服务端模块[/backup]的内容下载至本地

    [root@client ~]# rsync -av rsync_backup@192.168.1.20::backup /tmp Password: //输入rsync_backup用户的密码

    ………

    passwd

    进入backup目录

    rsync服务测试验证 

    同步时不输入密码

    第一种方式,sersync

    [root@client ~]# echo "123456" > /etc/rsync.password

    [root@client ~]# chmod 600 /etc/rsync.password

    [root@client ~]# rsync -av rsync_backup@192.168.1.20::backup /tmp --password-file=/etc/rsync.password

    receiving incremental file list

    ……….

    第二种方式:写脚本时使用 export RSYNC_PASSWORD=123456 设置RSYNC_PASSWORD环境变量=123456 这里的1是密码,密码要和服 务端的一致

    创建测试文件

    创建文件

    创建有内容的文件

    创建链接文件

     

    配置rsync备份服务器

    启动服务

    设置开机启动

    查看是否设置启动

    rsync实时同步 

    定期同步的不足

    执行备份的时间固定,延迟明显、实时性差

    当同步源长期不变化时,密集的定期任务是不必要的

    实时同步的优点

    一旦同步源出现变化,立即启动备份

    只要同步源无变化,则不执行备份

    关于inotify

    Linux内核的inotify机制

    从版本2.6.13开始提供

    可以监控文件系统的变动情况,并作出通知响应

    辅助软件:inotify-tools

    rsync+inotify实时同步 

    调整inotify内核参数

    ⚫ max_queue_events:监控队列大小

    ⚫ max_user_instances:最多监控实例数

    ⚫ max_user_watches:每个实例最多监控文件数

    [root@client ~]# vi /etc/sysctl.conf

    fs.inotify.max_queued_events = 32768

    fs.inotify.max_user_instances = 1024

    fs.inotify.max_user_watches = 1048576

    [root@client ~]# sysctl –p //更新并查看该参数是否生效 fs.inotify.max_queued_events = 32768

    fs.inotify.max_user_instances = 1024

    fs.inotify.max_user_watches = 1048576

    做备份

    编辑文件

    添加一项

    检查

    rsync+inotify实时同步 

    配置rsync服务器

    [root@server ~]# vi /etc/rsyncd.conf

    20 [webbak]

    21 comment = home directory backup

    22 path = /webbak

    [root@server ~]# mkdir /webbak

    [root@server ~]# chown -R rsync.rsync /webbak/

    [root@server ~]# systemctl restart rsyncd

    服务器端添加模块

     

    创建目录更改属主属组目录为rsync

    重启服务

    rsync+inotify实时同步 

    安装inotify-tools

    [root@client ~]# tar zxf inotify-tools-3.14.tar.gz -C /usr/src/ [root@client ~]# cd /usr/src/inotify-tools-3.14/

    [root@client inotify-tools-3.14]# ./configure

    [root@client inotify-tools-3.14]# make

    [root@client inotify-tools-3.14]# make install

    客户端:

    源码包安装

    进入目录

    配置安装

    安装

    rsync+inotify实时同步 

    监控/website目录

    [root@client inotify-tools-3.14]# inotifywait -mrq -e

    modify,create,move,attrib,delete /website

    /website/ CREATE index.html

    /website/ MODIFY index.html

    ^C

    第一个终端

    创建目录

    启动监控

    第二个终端

    webssite里面创建文件

    第一个终端观看监控

    连接rsync测试

    [root@client inotify-tools-3.14]# rsync -azH --delete

    --password-file=/etc/rsync.password /website/

    rsync_backup@192.168.1.20::webbak

    终端一测试ryscns的连接

     

    去服务器查看

    客户端

    终端二

    服务器终端一

    创建文件

    客户端

    终端一,可以监控

    rsync+inotify实时同步 

    编写一个脚本实现同步

    [root@client inotify-tools-3.14]# vi /opt/inotify_rsync.sh

    #!/bin/bash

    INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /website/"

    RSYNC_CMD="rsync -azH --delete --password-file=/etc/rsync.password /website/

    rsync_backup@192.168.1.20::webbak"

    $INOTIFY_CMD | while read DIRECTORY EVENT FILE

    do

    $RSYNC_CMD

    done

    粘贴到客户端的opt

    打开配置文件

     

    rsync+inotify实时同步 

    配置脚本开机自动运行

    [root@client ~]# chmod a+x /opt/inotify_rsync.sh

    [root@client ~]# echo ‘/opt/inotify_rsync.sh &’ >> /etc/rc.d/rc.local //设置开机自动运行该脚本

    [root@client ~]# chmod a+x /etc/rc.d/rc.local

    [root@client ~]#reboot

    [root@client ~]# pgrep inotify_rsync.s     //可以使用此命令查看脚本是否在运行,如果在运行,会显示其进程号

    添加执行权限

    做一个备份

    追加文字

    reboot

    添加执行权限

    然后rebooot

    监控进程

    进入目录

     

    服务器:

    终端一

    dump和restore

    dumprestore命令使递增备份与差异备份很容易实现。dump可以取得目录内容, restore可以交互式将备份文件返回原址。

    dump命令存档 ,用于备份ext文件系统

    restore进行恢复

    dump备份实例 

    dump命令

    格式: dump -0uf 备份文件存放的路径 要备份的目录

    [root@centos7 ~]# df -Th

    文件系统 类型 容量 已用 可用 已用% 挂载点

    /dev/sdb1      ext4  976M  2.6M   907M   1% /extfs1

    [root@centos7 ~]# dump -0uf /tmp/extfs1.bak /extfs1

    DUMP: Date of this level 0 dump: Mon Oct 21 21:39:27 2019

    DUMP: Dumping /dev/sdb1 (/extfs1) to /tmp/extfs1.bak

    DUMP: Label: none

    DUMP: Writing 10 Kilobyte records

    ………

    dump实现备份策略 

    完全备份

    ⚫ dump -0uf 

    增量备份:使数字递增即可

    ⚫ dump -1uf

    ⚫ dump -2uf

    ⚫ dump -3uf p

    累加备份(差异备份):一直使用非0数字即可

    ⚫ dump -5uf

    ⚫ dump -5uf

    ⚫ dump -5uf

    练习

    首先添加1g硬盘

    查看

    fdisk

    创建分区

     

    格式化

    创建用户目录

    挂载

    查看

    创建测试文件

    rpm查看

    安装

    rpm dump

    全备

    重新为目录添加文件

    创建增量备份

    restore恢复备份的文件 

    恢复整个文件系统

    模拟故障,删除所有文件

    [root@centos7 ~]# ls /extfs1 dir1 file1 lost+found

    [root@centos7 ~]# rm -rf /extfs1/*

    [root@centos7 ~]# ls /extfs1

    注:还原文件时,要进入备份的目录进行还原,保证还原到文件原来的位置

    例如:

    删除

    查看

    restore恢复备份的文件 

    进入restore还原模式

    格式:restore -if 备份文件

    [root@centos7 ~]# restore -if /tmp/extfs1.bak

    restore > help

    Available commands are:

    ls [arg] - list directory

    cd arg - change directory

    pwd - print current directory

    add [arg] - add `arg' to list of files to be extracted

    delete [arg] - delete `arg' from list of files to be

    extracted extract - extract requested files

    ………

    restore恢复备份的文件 

    restore恢复模式指令

    ⚫ ls 列出文件或目录列表

    ⚫ add 标记要还原的文件

    ⚫ extract 还原标记过的文件(询问时输入1n

    ⚫ quit 退出

    例如:

    恢复还原

     

     

    restore恢复备份的文件 

    restore恢复文件

    [root@centos7 ~]# cd /extfs1

    [root@centos7 extfs1]# restore -if /tmp/extfs1.bak

    restore > ls

    dir1 file1 lost+found/

    restore > add *

    restore > ls

    *dir1  *file1   *lost+found/

    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

    [root@centos7 extfs1]# ls

    dir1 file1 lost+found

    例如:

    恢复增量

     

    另一种文件系统

    Xfs文件系统dumprestore

    做备份

     

     

    恢复

     

     

     

  • 相关阅读:
    centos 6 升级gcc
    linux fdisk 分区
    centos使用163的源
    工作流发布成功但不能自动启动
    可怕的断电
    FTP 之 550 permission denied
    Track & Trace
    AutoKey思想的應用(二)
    Windows登錄過程淺析
    snapshot.exe出現異常
  • 原文地址:https://www.cnblogs.com/yxd1308243944/p/13929922.html
Copyright © 2011-2022 走看看