rsync远程同步
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync远程同步相关的知识,希望对你有一定的参考价值。
rsync远程同步
技能目标
- 学会配置rsync备份源
- 学会使用rsync下行、上行异地备份
- 学会使用rsync+inotify实时备份
rsync的作用
正确、有效的备份方案是保障系统及数据安全的重要手段,在服务器中,通常会结合计划性任务、shell脚本来执行本地备份。
为了进一步提高备份的可靠性使用异地备份也是非常必要的
实验实例
1:配置rsync源服务器
[[email protected] Packages] rpm -ivh rsync-3.0.9-18.el7.x86_64.rpm
警告:rsync-3.0.9-18.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
软件包 rsync-3.0.9-18.el7.x86_64 已经安装
2:建立/etc/rsyncd.conf配置文件
[[email protected] ~] vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes #//禁锢在本地源
address = 192.168.32.207 #//监听本地地址
port 873 #//监听端口
log file = /var/log/rsyncd.log #//日志存放位置
pid file = /var/run/rsyncd.pid #//存放进程ID的文件位置
host allow = 192.168.32.0/24 #//允许访问的客户机地址
[wwwroot] #//共享模块名称
path = /var/www/html #//源目录的实际路径
comment = Document Root of www1.kgc.cn
read only = yes #//是否为只读
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #//同步时不再压缩的文件类型
auth users = backuper #//授权账户
secrets file = /etc/rsyncd_users.db #//存放账户信息的数据文件
基于安全性的考虑,对于rsync的同步源最好允许以只读方式做同步。另外,同步可以采用匿名的方式,只要将其中的auth users 和 secrets file 配置纪录去掉就可以了
3:为备份账户创建数据文件
[[email protected] ~] vim /etc/rsyncd_users.db
backuper:abc123
[[email protected] ~] chmod 600 /etc/rsyncd_users.db
备份用户backuper需要对源目录/var/www/html有相应的读取权限,实际上只要other组有读写权限。则备份用户backuper和运行用户nobody也就有读取权限
[[email protected] ~] mkdir -p /var/www/html
[[email protected] ~] ls -ld /var/www/html/
drwxr-xr-x. 2 root root 6 7月 31 09:36 /var/www/html/
4:启动rsync服务程序,运行参数为--daemon
完成上述操作后,执行rsync --daemon命令就可以启动rsync服务,以独立监听的方式运行,若要关闭服务kill掉rsync的进程号(启动前关闭防墙、setenforce 0)
[[email protected] ~] rsync --daemon
[[email protected] ~] netstat -ntap | grep rsync
tcp 0 0 192.168.32.207:873 0.0.0.0:* LISTEN 8830/rsync
4.1:使用rsync备份工具
有了同步源服务器之后,就可以使用rsync工具来执行远程同步。
4.2:rsync命令的基本用法
绝大多数的备份程序要求指定原始位置和目标位置,rsync命令也一样,最简单的rsync用法类似于cp命令,例如:将/etc/fstab和目录/boot/grub同步备份到/opt目录下,其中“-r”选项表示递归整个目录树,”-l“选项用来备份链接文件
[[email protected] ~] rsync /etc/fstab /opt/
[[email protected] ~] cd /opt/
[[email protected] opt] ls
fstab rh
[[email protected] opt] cat fstab
#
# /etc/fstab
# Created by anaconda on Tue Jul 10 22:15:58 2018
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=ca0fed2f-3b05-41a3-85b2-ef00661afa16 / xfs defaults 0 0
UUID=89c9c477-1d91-4581-b16d-240a37af2b2a /boot xfs defaults 0 0
UUID=d7521d72-fa9e-4d30-81c9-004547187a10 /home xfs defaults 0 0
UUID=a9dc5409-587d-48bb-91d1-cd1cfaea26d1 /opt xfs defaults 0 0
UUID=db2690ca-e206-4c8d-8209-3064cd31bf49 swap swap defaults 0 0
[[email protected] opt] rm -rf *
[[email protected] opt] ls
[[email protected] opt] rsync -rl /etc/fstab /var/log/ /opt/
[[email protected] opt] ls
amanda dmesg libvirt sa vmware-vgauthsvc.log.0 Xorg.2.log
anaconda dmesg.old maillog samba vmware-vmsvc.log Xorg.9.log
audit firewalld messages secure vmware-vmusr.log yum.log
boot.log fstab ntpstats speech-dispatcher wpa_supplicant.log
btmp gdm pluto spooler wtmp
chrony glusterfs ppp sssd Xorg.0.log
cron grubby_prune_debug qemu-ga tallylog Xorg.0.log.old
cups lastlog rhsm tuned Xorg.1.log
4.3:命令格式及常用备份选项
从以上操作可以看出,备份的基本格式为”rsync [选项] 原始位置 目标位置“,其中常用的一些命令如下,根据实际需求做出选择(如:-avz)
-r:递归模式,包含目录及子目录中的所有文件。
-l: 对于符号链接文件仍然复制为符号链接文件。
-V: 显示同步过程的详细(verbose) 信息。
-a:归档模式,保留文件的权限、属性等信息,等同于组合选项-rlptgoD.
-z: 在传输文件时进行压缩(compress)
-p: 保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记(仅超级用户使用)。
-0: 保留文件的属主标记(仅超级用户使用)。
-H:保留硬连接文件。
-A:保留ACL属性信息。
-D:保留设备文件及其他特殊文件。
--delete:删除目标位置有而原始位置没有的文件。
- --ehecksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过 文件
5:配置源地表示方法
#”rsync -avz 用户名@主机地址::共享模块“
[[email protected] ~] rsync -azv [email protected]::wwwroot/root
Password:
sent 4 bytes received 8 bytes 1.85 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [Receiver=3.0.9]
#”rsync -avz rsync://用户名@主机地址/共享模块名“
[[email protected] ~] rsync -azv rsync://[email protected]/wwwroot/root
Password:
sent 4 bytes received 8 bytes 1.85 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1518) [Receiver=3.0.9]
6:rsync备份操作示例
执行以下操作将访问源服务器中的wwwroot共享模块,并下载到本地/myweb目录下
[[email protected] ~]# mkdir /myweb
[[email protected] ~]# rsync -azvH --delete [email protected]::wwwroot /myweb
Password:
receiving incremental file list
./
index.php
sent 83 bytes received 161 bytes 44.36 bytes/sec
total size is 6 speedup is 0.02
[[email protected] ~]# ls /myweb/
index.php
7:实际生产环境中的备份工作通常是按计划性任务重复执行的
例如:每天晚上22:30对服务器网站目录进行一次同步,计划性任务可以交给crond服务来完成
为了避免计划性任务的人机交互,可以在客户端保存同步的用户密码,
[[email protected] ~] vim /opt/backuper.passwd
abc123
[[email protected] ~] chmod 600 /opt/backuper.passwd
[[email protected] ~] crontab -e
crontab: installing new crontab
30 22 * * * /usr/bin/rsync -az --delete --password-file=/opt/backuper.passwd [email protected]::wwwr
oot /myweb #//每天22:30执行任务
[[email protected] ~] service crond restart #//重新启动计划性任务
Redirecting to /bin/systemctl restart crond.service
[[email protected] ~] chkconfig crond on #//开启开机自启动
注意:正在将请求转发到“systemctl enable crond.service”。
以上是关于rsync远程同步的主要内容,如果未能解决你的问题,请参考以下文章