在两台服务器之间同步文件,除了配置rsync服务端和客户端以外,也可以使用ssh协议进行同步。
(若需要放到计划任务或脚本中,则需要:两台服务器之间配置ssh,进行免密登录 https://www.xianmoyi.com/?p=1098#more-1098
或者 命令前加 sshpass -p"密码")
命令:
rsync -e 'ssh -p 33069' -av --progress --delete /本地目录 root@192.168.0.0:/远端目录
-e 'ssh -p 33069' 指 rsync使用ssh协议和指定端口进行同步
参数说明:
--------------------------------------------------------------------
-a 相当于 -rlptgoD 的集合
-u 等同于 --update,在目标文件比源文件新的情况下不更新
-v 显示同步的文件
--progress 显示文件同步时的百分比进度、传输速率
--delete 删除目标目录中多于源目录的文件
--exclude 排除不需要的文件,文件用双引号
-o, --owner 保留所有者
-p,--perms 保持原来的权限
--chown=USER:GROUP 简单的用户/组名映射
--log-file 日志文件,例如:
--log-file=/root/rsync_log/rsync_`date -d "now" +%Y-%m-%d`.log
-z 传输文件时进行压缩传输
--------------------------------------------------------------------
脚本
#!/bin/bash
flock -xn /var/run/rsync.lock -c 'sshpass -p"密码" rsync -e "ssh -p 22" -avz --delete /data/* root@172.16.2.237:/data/' >>/tmp/rsynclog`date +%Y-%m-%d`.log 2>&1
exit 0