您的位置:首页 > 其它

rsync远程同步

2018-07-31 11:27 441 查看

rsync远程同步

技能目标

学会配置rsync备份源

学会使用rsync下行、上行异地备份

学会使用rsync+inotify实时备份

rsync的作用

正确、有效的备份方案是保障系统及数据安全的重要手段,在服务器中,通常会结合计划性任务、shell脚本来执行本地备份。
为了进一步提高备份的可靠性使用异地备份也是非常必要的

实验实例



1:配置rsync源服务器

[root@localhost 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配置文件

[root@localhost ~] 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:为备份账户创建数据文件

[root@localhost ~] vim /etc/rsyncd_users.db
backuper:abc123
[root@localhost ~] chmod 600 /etc/rsyncd_users.db

备份用户backuper需要对源目录/var/www/html有相应的读取权限,实际上只要other组有读写权限。则备份用户backuper和运行用户nobody也就有读取权限

[root@localhost ~] mkdir -p /var/www/html
[root@localhost ~] 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)

[root@localhost ~] rsync --daemon
[root@localhost ~] 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“选项用来备份链接文件

[root@localhost ~] rsync /etc/fstab /opt/
[root@localhost ~] cd /opt/
[root@localhost opt] ls
fstab  rh
[root@localhost 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
[root@localhost opt] rm -rf *
[root@localhost opt] ls
[root@localhost opt] rsync -rl /etc/fstab /var/log/ /opt/
[root@localhost 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 用户名@主机地址::共享模块“
[root@localhost ~] rsync -azv backuper@192.168.32.207::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://用户名@主机地址/共享模块名“
[root@localhost ~] rsync -azv rsync://backuper@192.168.32.207/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目录下

[root@localhost ~]# mkdir /myweb
[root@localhost ~]# rsync -azvH --delete backuper@192.168.32.207::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
[root@localhost ~]# ls /myweb/
index.php

7:实际生产环境中的备份工作通常是按计划性任务重复执行的

例如:每天晚上22:30对服务器网站目录进行一次同步,计划性任务可以交给crond服务来完成
为了避免计划性任务的人机交互,可以在客户端保存同步的用户密码,

[root@localhost ~] vim /opt/backuper.passwd
abc123
[root@localhost ~] chmod 600 /opt/backuper.passwd
[root@localhost ~] crontab -e
crontab: installing new crontab

30 22 * * * /usr/bin/rsync -az --delete --password-file=/opt/backuper.passwd backuper@192.168.32.207::wwwr
oot /myweb  #//每天22:30执行任务
[root@localhost ~] service crond restart     #//重新启动计划性任务
Redirecting to /bin/systemctl restart crond.service
[root@localhost ~] chkconfig crond on    #//开启开机自启动
注意:正在将请求转发到“systemctl enable crond.service”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rsync 远程 同步