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远程同步的主要内容,如果未能解决你的问题,请参考以下文章

rsync远程同步

rsync远程同步(定期同步实时同步)

rsync 远程文件同步+实验

rsync远程同步

rsync远程同步

Linux 远程同步:rsync