Ubuntu18.04服务器局域网定时同步文件

一、文件同步

首先我们先了解一下 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 root@192.168.16.50:/home/whbgkj/sync_backup/

注意下是否需要加 /,比如/home/dbserver/aaa是表示同步子文件夹包括这个文件夹本身,/home/dbserver/aaa/表示只同步文件夹内的东西,不包括aaa这个文件夹本身。

我们直接输入上述命令会提示输入密码,后续我们需要使用到定时执行,肯定不能每次都输入密码,所以还得先取消密码登录。

二、设置无需密码登录

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 root@192.168.16.50:/home/whbgkj/sync_backup/
  • 重启服务
service cron restart

参考链接:
rsync命令详解
Ubuntu通过rsync实现定时同步文件夹
生成SSH密钥
crontab和cron表达式详解

posted @ 2024-02-18 09:46  香酥豆腐皮  阅读(198)  评论(0编辑  收藏  举报
正在加载今日诗词....