使用rsync 实现服务器文件同步

隔壁公司同事询问我linux 文件同步怎么做?这个问题一下问住我了。之前虽然有过了解。但也没用在实际工作上面。今天就大概给大家说一下linux 文件同步。


分别在两个服务器下面新建两个自己能测试的文件夹,如果所示

用test-data代表从服务器。 test 代表主服务器

使用rsync 实现服务器文件同步_第1张图片使用rsync 实现服务器文件同步_第2张图片

在test 文件中新建3个文件命名为111,222,333


我们先用rsync 基本命令先测试一下

输入  rsync  -v -e ssh /alibaba/test/* root@IP:/alibaba/test-data   

可以看到在test-data 目录下面已经出现了这3个文件。(因为之前做过测试,ssh 密钥一直存在,所以运行命令是直接可以传输的,如果你是第一次做这个。运行命令它会让你输入ssh密码

如果对-v -e  不是很了解请转到这里点击打开链接。

 前面这块其实很简单,有些文章也能看见。接下来就是重点。我们如何让他自动化进行同步呢。我在网上搜了搜。有一篇文章博主是在rsync 配置文件中进行从服务器编写。貌似还需要在新建密码文件。看了半天感觉有点复杂。为什么不能简单化呢??

ok  之前的命令是可以同步。但是有两个问题。

1.每次运行都要输入服务器密码。

2.不能定时定点进行同步。

想到这里,有什么好的办法解决这样的问题??

针对第一个问题。。。

rsync配置文件里面可以配置要同步的服务器信息。但我觉得这样太过于复杂。每次还需要重复书写服务器信息到配置文件。还有什么解决办法呢? 我想到了ssh密钥。就像在git管理一样。我们把每个要提交的服务器密钥添加进服务器这样就不需要重复输入密码。直接提交就行。也方便管理。

密钥虽然方便。但又一个问题。如果一台机器被攻破,一个黑客很容易跳到下一个系统而不登录。所以明智地选择是关键

为此我编写了一个shell脚本,来自动化密钥安装。


针对第二个问题。。。

为了让您的数据每小时同步一次,请打开crontab编辑器:

crontab -e
0 * * * * /alibaba/test.sh
在test.sh 里面我们写入刚才的运行命令。注意shell 脚本的书写格式。保存并赋予权限

chmod u+x test.sh

上面的*号代表的大致意思是

-分钟(0-59)

-小时(0-23)

-一个月的第几天(1-31)

-月(1-12)

-星期几(0-6) 0代表星期天


如果是每分钟执行

* * * * * /alibaba/test.sh
如果凌晨1点更新

0 1 * * 5 /alibaba/test.sh

以上就是文件同步的大致思路。大家可以举一反三。



你可能感兴趣的:(使用rsync 实现服务器文件同步)