centos安装rsync及两台机器进行文件同步

《centos安装rsync及两台机器进行文件同步》

介绍

   rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。

   Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。

  Rsync本来是用于替代rcp的一个工具,目前由rsync.samba.org维护,所以rsync.conf文件的格式类似于samba的主配置文件。Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。连接时,Rsync server会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,以后则就只需进行增量备份。

  Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,如cwRsync和Sync2NAS等工具。

安装及配置

主机配置
1.安装
# yum -y install rsync
//不能以正常的模式启动  

//检查是否已经成功安装 
# rsync  --version 

2.配置
vi /etc/rsyncd.conf
---------------------------------------------------------------
uid = root
gid = root
timeout = 180
max connections=20
port=873
log file=/var/log/rsync.log
pidfile = /var/run/rsync.pid  #<<<<<<<<<<<一定要配置
list = no
ignore errors
read only=no 
hosts allow=*
secrets file = /root/rsyncd.passwd
address=127.0.0.1 #<<<<<<<<<<<一定要配置 使之作为本地服务被启动

[www.xxx.cn]  //模块名称
comment = ftp export area
path = /usr/share/nginx/html/www.xxx.cn   //要备份的文件路径
auth users = root #用户名
 
[storage2]
path = /storage2
auth users = root

[comic]
path = /storage2/comic
auth users = root

[news]
path = /storage2/news
auth users = root

-------------------------------------------------------------------


//主机的密码(从机用这个密码访问主机)
3.编写用户密码文件 
# echo "root:123456" > /root/rsyncd.passwd //被访问时的服务密码
# echo "123456" > /root/rsyncd.pass //访问别人的访问密码

4.修改密码文件的权限(只能是600):
# chmod 600 /root/rsyncd.passwd
# chmod 600 /root/rsyncd.pass

5.启动rsyncd服务 : 
# systemctl restart rsyncd.service  
//启动此进程的用户必须和  auth users 一致
# systemctl status rsyncd.service 
//开机启动
# systemctl enable rsyncd.service 



6.查看进程占用端口:netstat -tunlp
《centos安装rsync及两台机器进行文件同步》

如果启动失败,请用以下方法启动: !!!!!!!!!!

rsync --daemon --config=/etc/rsyncd.conf

开放防火墙

rsync使用873端口,需要开放防火墙
//如果你用的是iptables
# iptables -A INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT
# iptables -L  查看一下防火墙是不是打开了 873端口
//如果你用的是firewall
# firewall-cmd --permanent --zone=public --add-port=873/tcp;  设置详细看这里
# firewall-cmd --reload 
# firewall-cmd --list-all 
从机配置
1.# yum -y install rsync ...
2.# echo "root:123456" > /root/rsyncd.passwd //被访问时的服务密码
  # echo "123456" > /root/rsyncd.pass //访问别人的访问密码
3.# chmod 600 /root/rsyncd.passwd
  # chmod 600 /root/rsyncd.pass

4.# vi /etc/rsyncd.conf (无需设置)


5.定时任务
# crontab -e:
//加入一行 执行频率间隔自已定义

//新测试  效果好,速度快!!!!
//将远程项目stroage2 复制到本地 (项目,双冒号)
# rsync -vzrtopg --delete --progress --password-file=/root/rsyncd.passwd root@192.168.0.80::storage2 /usr/share/nginx/html/live2d

//将远程项目comic 复制到本地 (项目,双冒号)
# rsync -vzrtopg --delete --progress --password-file=/root/rsyncd.passwd root@192.168.0.80::comic /storage2/comic

//将远程项目news 复制到本地 (项目,双冒号)
# rsync -vzrtopg --delete --progress --password-file=/root/rsyncd.passwd root@192.168.0.80::news /storage2/news

//将本地test目录 同步备份到远程 test项目
rsync -vzrtopg --delete --progress --password-file=/root/rsyncd.pass /storage2/test/ root@192.168.0.90::test

//目录同步而非项目同步需要输入用户密码
//--password-file=/root/rsyncd.pass  参数无效
//The --password-file option may only be used when accessing an rsync daemon.
//将本地/storage2/test/目录  同步备份到远程目录 /storage2/test/ (目录,单冒号)
rsync -vzrtopg  --delete /storage2/test2/ root@192.168.0.90:/storage2/test2/

rsync -vzrtopg --delete --progress --password-file=/root/rsyncd.pass  /storage2/comic/p3 root@192.168.0.90::p3 




//含义:
-vzrtopg 
v是“--verbose”显示详细输出模式
z是“--compress”压缩模式
r是“--recursive”以子目录递归模式
t是“--times“用来保持文件信息时间
o是”--owner“用来保持文件的属主信息
p是”--perms“用来保持文件权限
g是”--group“用来保持文件的属组
--delete 指定以rsync服务器为基准进行数据镜像同步,也就是要保持rsync服务器端目录与客户端目录的完全一致
--progress 用来显示数据镜像同步的过程

//旧测试方法 不建议使用此方法
10 0 * * * rsync -vr --password-file=/root/rsyncd.passwd --exclude "uploads" --exclude "cache"  root@192.168.0.80::www_xxx3.com /usr/share/nginx/html/www_xxx3.com > /dev/null 2>&1 ;

//建议使用shell
10 0 * * * sh /root/rsyncd.sh > /dev/null 2>&1;

写法规则

1)本地使用:
rsync [OPTION…] SRC -> [DEST]
rsync [OPTION…] [源] -> [目的地]
2)通过远程 Shell 使用:
拉: rsync [OPTION…] [USER@]HOST:SRC… [DEST]
推: rsync [OPTION…] SRC… [USER@]HOST:DEST
3)访问 rsync 服务器:
拉: rsync [OPTION…] [USER@]HOST::SRC… [DEST]
推: rsync [OPTION…] SRC… [USER@]HOST::DEST
拉: rsync [OPTION…] rsync://[USER@]HOST[:PORT]/SRC… [DEST]
推: rsync [OPTION…] SRC… rsync://[USER@]HOST[:PORT]/DEST

常用选项

《centos安装rsync及两台机器进行文件同步》
《centos安装rsync及两台机器进行文件同步》
《centos安装rsync及两台机器进行文件同步》

测试

//基于ssh的rsync远程同步数据(拉取) 
# rsync -vr --password-file=/root/rsync.passwd --exclude "uploads" --exclude "cache"  root@192.168.0.80::www_xxx2.com  /usr/share/nginx/html/www_xxx2.com 
//基于ssh的rsync远程同步数据(推)
rsync [OPTION…] [源] -> [目的地]
rsync -av /etc root@192.168.249.135:/www/

定期自动同步数据

《centos安装rsync及两台机器进行文件同步》
//计划定时任务:每天00:10分执行
# crobtab -e
10 0 * * * * sh rsync.sh

//rsync.sh 内容如下:
#!/bin/bash
#其中判断挂载点非常重要,在挂载点不存在的情况下会自动写入"/",造成很大的问题(多么痛的领悟!20200601)
storage_file="/storage"
if [ -d $storage_file ]; then
	echo "挂载点存在!"
	rsync -vzrtopg --delete --progress --password-file=/root/rsyncd.passwd root@192.168.0.10::xxx /xxxx
else
	echo "挂载点不存在!"
fi
点赞

发表评论

邮箱地址不会被公开。 必填项已用*标注