版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333760
【声明】:文章主要参考来源 -【rsync 实现文件备份同步】,然后根据自己的具体情况进行了实例说明,在此谢谢前辈们的经验指导…
IP:192.168.1.160
),其中的一个客户端(IP:192.168.1.161
),后期添加了另一个客户端(IP:192.168.1.150
)rsync
查看,一般会有如下的界面:yum install rsync
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf #创建 rsyncd.conf,这是 rsync 服务器的配置文件
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf #创建软链接
touch /etc/rsyncd/rsyncd.secrets #创建 rsyncd.secrets ,这是用户密码文件
chmod 600 /etc/rsyncd/rsyncd.secrets #将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为 600, 否则无法备份成功
touch /etc/rsyncd/rsyncd.motd
# Distributed under the terms of the GNU General Public License v2
# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
secrets file = /etc/rsyncd/rsyncd.secrets
motd file = /etc/rsyncd/rsyncd.motd
port = 873
#指定运行端口,默认是873,您可以自己指定;
address = 192.168.1.160
#指定服务端IP地址
# uid = nobody
# gid = nobody
uid = root
gid = root
use chroot = no
read only = yes
#limit access to private LANs
hosts allow=192.168.1.161 192.168.1.150 #以空格分割 客户端IP
hosts deny=*
max connections = 10
#This will give you a separate log file
log file = /var/log/rsync.log
#This will log every file transferred - up to 85,000+ per user, per sync
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[ftpfile]
path = /server/ftpfile
list=yes
ignore errors = true
auth users = root
#auth users 是必须在服务器上存在的真实的系统用户,如果你想用多个用户以 “,” 号隔开,比如auth users = moTzxx,root
comment = This is moTzxx-comment
#提交信息,便于识别
exclude = file3/
#此处表明,同步文件 除去所有的 file3 目录,如果以斜杠开头,则可指定“path = /server/ftpfile”下的任何目录或文件,例如“/file1/file5/re.log”,指的是文件“/server/ftpfile/file1/file5/re.log”
vim /etc/rsyncd/rsyncd.secrets
添加信息:root:root123
chown root.root /etc/rsyncd/rsyncd.secrets
chmod 600 /etc/rsyncd/rsyncd.secrets
vim /etc/rsyncd/rsyncd.motd
自定义添加如下:
++++++++++++++++++++++++++++++++++++++++++
Welcome to moTzxx`s world!
++++++++++++++++++++++++++++++++++++++++++
/usr/bin/rsync --daemon
/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf #--config用于指定rsyncd.conf的位置,如果在/etc下可以不写
lsof -i :873
【注:】修改rsync配置后服务器端需要重启
killall rsync
rsync --daemon
lsof -i :873
注:】如果第二步能获得 873 进程信息,这一步没必要进行操作,本人在开启测试前,就关闭了防火墙undefined
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
iptables -L #查看一下防火墙是不是打开了 873端口
service iptables stop
将防火墙关掉。当然在生产环境这是很危险的,可千万不要这么做!yum install rsync
【注意】:服务器端的密码应该以 user:password 的形式存放明文密码,而客户端的密码只需要以 password 的明文形式保存
【执行命令】(举例密码为 root123):
echo root123> rsyncd.secrets
chmod 600 rsyncd.secrets
rsync --list-only 192.168.1.160::ftpfile
rsync --list-only --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile
rsync -avzP 192.168.1.160::ftpfile /server/ftpfile
rsync -avzP --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile /server/ftpfile
rsync -avzP --delete 192.168.1.160::ftpfile /server/ftpfile
rsync -avzP --delete --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile /server/ftpfile
表示客户端上的数据要与服务器端完全一致,如果 ftpfile 目录中有服务器上不存在的文件,则删除。最终目的是让 ftpfile 目录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除
/etc/crontab
中添加命令/etc/crontab
中vi /etc/crontab
或者通过 crontab 进行设定 ,执行命令:
crontab -e
*/1 * * * * rsync -avzP --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile /server/ftpfile
vim /server/ftp-update-ftpfile.sh #自定义即可
#!/bin/bash
rsync -avzP --password-file=/server/rsyncd.secrets 192.168.1.160::ftpfile /server/ftpfile
crontab -e
*/1 * * * * /server/ftp-update-ftpfile.sh
killall crond #注:杀死crond 服务器的进程;
ps aux |grep crond # 注:查看一下是否被杀死;
/usr/sbin/crond #注:启动 crond 服务器;
- 使用非脚本命令执行的可行性高,期间测试了好多次,当然也有可能是自己的配置存在问题
- 使用脚本命令,相对而言要方便些,更改脚本文件信息后,不需要每次重启 crond ,当然希望能正确配置,那就再好不过了
- 个人测试而言,脚本命令对于 CentOS6.5 可行,而对于 CentOS7 却不执行建议参考文章
- [CentOS 6.4 中的 cron 计划任务配置方法](http://www.linuxidc.com/Linux/2015-01/112054.htm)
- [CentOS 设置定时任务执行指定脚本的方法](http://www.jb51.net/article/106528.htm)