设置 rsync 同步 crontab 并使用 flock 控制锁


设置 rsync 同步 crontab 并使用 flock 控制锁

rsync 分服务端与客户端 以下是服务端配置

port=8090
log file=/home/rsync/rsyncd.log
pid file=/home/rsync/rsync.pid
#address=192.168.0.1
[test]
path=/home/rsync/test
use chroot=true
max connextions=2
read only=no
list=true
uid=root
gid=root
auth user=test
secrets file=/home/rsync/rsyncd.passwd
#hosts allow=192.168.0.1

rsyncd.passwd 格式 用户名:密码

test:JFjsArQcAaVF4N0BfKoknpmtWeGo0ZKL

启动 服务端

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

客户端不需要配置 

/home/rsync/rsyncd.passwd 指定用户名与密码 与服务端相同

/home/test 需要发送的目录

用以下命令即可发起同步但是不会自动执行,需要配置crontab

rsync -avz --delete --port=8090 --password-file=/home/rsync/rsyncd.passwd /home/test rsync@192.168.0.1::test

配置 crontab

文件 rsync.sh 增加执行权限 chmod +x

crontab 设置 5分钟执行一次

*/5   *   *   *   *    /home/rsync/rsync.sh

crontab 设置5分钟执行一次 可能没有同步完下一次又执行了,需要使用 flock 加锁控制,如下

#!/usr/bin/env bash

flock -xn /home/rsync/rsync.lock -c "rsync -avz --delete --port=8090 --password-file=/home/rsync/rsyncd.passwd /home/test rsync@192.168.0.1::test"