需要开发一个需求,将服务器A的 批量数据文件 定时同步 到远程服务器B中,这里我们的基本思路为:
- 服务器A:存放数据文件
- 服务器B:部署shell脚本,从服务器A中拉取文件至本地目录中。
注意:这里也可以将shell脚本部署在数据服务器上,但是我们这里数据服务器A比较重要,最好不要部署程序。因此,我们将shell脚本部署在了目标服务器B上。
因为涉及批量数据的迁移拷贝,涉及的关键技术点包括:
- 设置服务器B通过秘钥访问服务器A
- 编写shell脚本
- 设置crontab
1、通过秘钥访问服务器
我们知道基于linux的scp
命令可以实现本地与远程服务器间的文件传输,具体可以参考博客:linux 基于scp命令实现本地与远程服务器间文件拷贝
但是单个scp命令的执行需要手动输入服务器的密码,对于批量文件拷贝来说不可行。批量文件的迁移使用脚本来执行,因此这里我们使用秘钥的方式访问远程服务器。
- 进入服务器B 的~/.ssh目录查看是否有生成私钥和公钥。如果秘钥不存在则需要执行以下命令:
ssh-keygen
输入以上命令后多按几次回车就可以生成本机秘钥,如下图所示:
2. 通过cd命令进入到~/.ssh目录,输入ls命令确认秘钥是否正常生成,如下图:
cd ~/.ssh
可以看到秘钥已经生成。
- 将服务器A添加至服务器B的授权列表中。
ssh-copy-id -i id_rsa.pub user@hostname
user@hostname对应数据服务器A的用户名及IP地址。
- 完成授权后,可以通过ssh命令测试下是否可以直接登录。
可以看到,这里无需密码即可登录到服务器A上,说明我们已经实现了通过秘钥访问远程服务器。
2、编写Shell脚本
[待更新…]
3、Crontab定时任务
[待更新…]
参考资料
- Shell脚本实现将文件批量迁移到远程服务器
- linux(ubuntu)中crontab定时器命令详解 以及windows中定时器