rsync备份服务器配置

# rsync

Rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具
拷贝cp

rsync /etc/hosts /tmp/host_rsync

查看ls

rsync /etc	

远程备份数据scp

scp -rp /etc/hosts [email protected]:/backup	
rsync -rp /etc/hosts 172.16.1.41:/backup/hosts_rsync

替代rm删除命令

rsync -rp --delete /null/ 172.16.1.41:/backup
--delete   实现无差异同步数据

rsync服务器端配置

1.查询是否安装rsync

rpm -qa | grep rsync

2.contos7默认安装了rsync.

yum install rsync

3.编写配置文件

vim /etc/rsyncd.conf
    uid = rsync       --- 指定管理备份目录的用户  
    gid = rsync       --- 指定管理备份目录的用户组
    port = 873        --- 定义rsync备份服务的网络端口号
    fake super = yes  --- 将rsync虚拟用户伪装成为一个超级管理员用户 
    use chroot = no   --- 和安全相关的配置
    max connections = 200  --- 最大连接数  同时只能有200个客户端连接到备份服务器
    timeout = 300          --- 超时时间(单位秒)
    pid file = /var/run/rsyncd.pid   --- 记录进程号码信息 1.让程序快速停止进程 2. 判断一个服务是否正在运行
    lock file = /var/run/rsync.lock  --- 锁文件
    log file = /var/log/rsyncd.log   --- rsync服务的日志文件 用于排错分析问题
    ignore errors                    --- 忽略传输中的简单错误
    read only = false                --- 指定备份目录是可读可写
    list = false                     --- 使客户端可以查看服务端的模块信息
    hosts allow = 172.16.1.0/24      --- 允许传输备份数据的主机(白名单)
    hosts deny = 0.0.0.0/32          --- 禁止传输备份数据的主机(黑名单)
    auth users = rsync_backup        --- 指定认证用户 
    secrets file = /etc/rsyncd.password   --- 指定认证用户密码文件 用户名称:密码信息
    [backup]                         --- 模块信息
    comment = "backup dir by **"   备注信息
    path = /backup                   --- 模块中配置参数 指定备份目

4.创建rsync服务的虚拟用户(用于上传或下载文件的虚拟用户)

useradd  rsync -M -s  /sbin/nologin	--创建rsync用户,-M不创建家目录,-s傀儡用户

5.创建备份目录

mkdir /backup								创建备份目录
chwon	rsync.rsync /backup					改变目录属主

6.创建备份服务认证密码文件

echo "rsync_backup:123456" >/etc/rsyncd.password			创建认证密码文件
chmod 600 /etc/rsncd.password				修改文件的rxw属性

7.启动备份服务

systemctl start rsyncd						启动服务
systemctl enble rsyncd						将服务加入为开机自启动
systemctl status rsyncd						查看服务是否正常运行

rsync命令参数详细说明

	-v --verbose			详细的传输信息
	-a --archive			(常用)归档文件,该参数保护了(rtopgDl)
	-r --recursive			递归
	-t	--times				保持文件的时间不变(modifid时间)
	-o --owner				保持文件的属主信息不变
	-g --group				保持文件的属组信息不变
							PS: 如何让-o和-g参数生效,需要将配置文件uid和gid改为root,
							需要将 fake super参数进行注释
	-p --perms				保持文件的权限信息不变
	-D						保持设备文件的信息不变
	-l	--links				保持连接文件属性不变
	-L						保持链接文件的信息不变
	-P						显示数据传输的进度信息
	--exclude=路径			排除指定数据不被传输
	--exclude-from=file 	(批量)排除指定信息数据不被传输
	--bwlimit=RATE			传输速率限制
	--delete				(慎用)无差异同步参数,我有的文件你也有,我没有的你也不能有。

rsync守护进程名称语法:

Access via rsync daemon: 客户端做拉的操作: 恢复数据
Pull: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
客户端做推的操作: 备份数据
Push: rsync [OPTION…] SRC… [USER@]HOST::DEST
src: 要推送备份数据信息
[USER@]: 指定认证用户信息
HOST: 指定远程主机的IP地址或者主机名称
::DEST: 备份服务器的模块信息 rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST

客户端使用push备份操作:

不设置password文件密码上传文件
rsync -avz /backup/ rsync_backup@backup::backup/lb02
/backup 本地要备份的数据文件夹,/backup后面带/与不带有区别。
备份目录后面有 / – /oldboy/ : 只将目录下面的内容进行备份传输
备份目录后面没有/ – /oldboy : 会将目录本身以及下面的内容进行传输备份。 rsync_backup 上传文件所使用的用户名,服务器上创建的。 backup 此处为服务器主机名称,此处也可以写入服务器的IP
backup/lb02 备份到服务器的路面。后跟lb02则会在backup下创建lb02的文件夹。

客户端设置自动备份

1.创建password密码文件

echo “123456” >/etc/rsyncd.password
chmod 600 /etc/rsncd.password				 修改文件的rxw属性

2.编写sh脚本,用于自动备份

mkdir -p /server/scripts	#创建脚本文件夹
vim	/server/scripts/backup.sh
#binbash
#此脚本用于自动打包etc下的配置文件,每天上传到备份服务器。
tar -zcvf /backup/etc.$(date +%F-%T).backup.tgz /etc	
#打包的时间加入时间%F为年月日%T为时分秒。
rsync -avz -delete /backup/ rsync_backup@backup::backup/lb02 --password-file=/etc/rsyncd.password		
#上传到备份服务器

3.创建crontab定时计划任务

crontab -e	#编辑
*	*	1	*	*  /usr/bin/sh	/server/scripts/backup.sh

4.恢复文件

rsync -avz rsync_backup@backup::backup/lb02/ /backup --password-file=/etc/rsyncd.password

排除不备份的数据

1.排除单个文件

rsync -avz /backup --exclude=路径 --exclude=路径 [email protected]::backup --password-file=/etc/rsyncd.password

2.排除多个文件

vim /etc/exclude.txt
添加需要排除的文件名称
rsync -avz /backup --exclude-from=/etc/exclude.txt [email protected]::backup --password-file=/etc/rsyncd.password 

实现无差异同步

rsync -avz --delete /backup/ [email protected]::backup/lb02 --password-file=/etc/rsyncd.password

项目案例脚本

需求:实现客户端自动备份,备份文件夹内删除7天后的文件,生成md5文件,上传到服务端对数据进行完整性校验,服务器端将备份的结果发送邮件。

1、服务器端脚本

vim /server/scripts/backup_server.sh 
#bin/bash
#find exeed 180day and del (or) exclude wenk1
find /backup/ -type f -mtime +180 ! -name "*week1.tar.gz" | xargs rm &2>/dev/null
#complet  checking 
find /backup/ -type f -name "finger.txt" | xargs md5sum -c >/tmp/check.txt  
#seed email 
mail -s "数据备份" [email protected] </tmp/check.txt 

2、服务器邮箱配置
开启163IMAP/SMTP服务
在这里插入图片描述
服务器邮箱配置文件

vim /etc/mail.rc
#163.com
set from=邮箱账号
smtp=smtp.163.com
set smtp-auth=user=邮箱账号
smtp-auth-password=邮箱密码
smtp-auth=login

#每天早上5点运行脚本将备份的数据的情况发送到邮箱

crontab -e
0 5 * * * /bin/sh /server/scripts/backup_server.sh &>/dev/null

3、客户端脚本

[root@lb01 /]# vim /server/scripts/backup.sh 
#bin/bash
Backup_dir="/backup"
#tar  /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
tar zchf $Backup_dir/lb01/system_backup_$(date +%F_week%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables
#tar (web.server) /var/html/www 
tar zchf $Backup_dir/lb01/www_backup_$(date +%F_week%w).tar.gz ./var/html/www
#del exceed 7day file
find $Backup_dir/ -type f -mtime +7 | xargs rm &>/dev/null
#create finger.txt
find $Backup_dir/ -type f -mtime -1 ! -name "finger*" | xargs md5sum >$Backup_dir/lb01/finger.txt
#create rsync.password
echo "123456" >/etc/rsync.password
chmod 600 /etc/rsync.password
#push backup.server
rsync -az $Backup_dir/ [email protected]::backup --password-file=/etc/rsync.passwor

创建定时计划任务每天晚上0点将数据打包备份到服务器端

crontab -e
#backup date (每天晚上零点备份数据)
0 0 * * * /bin/sh /server/scripts/backup.sh &>/dev/null

你可能感兴趣的:(linux)