一、文件同步
首先我们先了解一下 rsync
命令。
rsync 可以在本地系统之间或本地系统与远程系统之间同步、复制和备份文件和目录。rsync 通过比较源与目标文件的差异来最小化数据传输,从而提高效率和速度。
rsync 命令有许多可选的参数,下面简单列一下常见的几个参数:
- -a:以归档模式同步文件,保持文件的权限、时间戳、所有者等属性。
- -v:显示详细的输出信息,包括传输过程中的文件列表。
- -r:递归地同步目录及其子目录。
- -u:仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件。
- -z:在传输过程中进行压缩,以减少网络传输的数据量。
- -P:显示传输进度,并保留部分传输的文件,方便继续传输。
- --delete:删除目标位置上与源位置不匹配的文件。
- --log-file:指定日志文件路径
同步命令:
rsync -avuz --log-file=/var/log/rsync/log.txt --delete /home/dbserver/aaa [email protected]:/home/whbgkj/sync_backup/
我们直接输入上述命令会提示输入密码,后续我们需要使用到定时执行,肯定不能每次都输入密码,所以还得先取消密码登录。
二、设置无需密码登录
1、生成SSH密钥对。
在源服务器上生成密钥对。包含一个私钥(id_rsa)和公钥(id_rsa.pub)。
文件生成在 ~/.ssh
中。
ssh-keygen -t rsa
我们可以查看一下生成的公钥如下,后续如果ssh-copy-id命令无效的话可以来这里直接复制。
2、复制公钥到目标服务器
在目标服务器使用 ssh-copy-id
命令将本机的公钥复制到远程机器的authorized_keys文件中,手动复制到该文件中也行。
ssh-copy-id -i .ssh/id_rsa.pub 用户名@源服务器ip地址
三、设置定时任务
接下来就我们可以创建定时任务来自动执行我们的同步命令了。
- 查看定时任务
crontab -l
- 创建/修改定时任务
crontab -e
在文件中添加上面同步的命令即可:
* * */1 * * rsync -avuz --log-file=/var/log/rsync/log.txt --delete /home/dbserver/aaa [email protected]:/home/whbgkj/sync_backup/
- 重启服务
service cron restart
参考链接:
rsync命令详解
Ubuntu通过rsync实现定时同步文件夹
生成SSH密钥
crontab和cron表达式详解