点击访问原文 您还可以加入全栈技术交流群( QQ 群号: 254842154 )
今天给大家介绍一种在 Linux 服务器之间自动拷贝文件的方法。主要使用了基于 ssh 的并且安全的文件 copy 技术—— scp 。这种方法安全并且便捷,无需输入登录密码。
我们先设定一下场景和需求:每天凌晨 4 点 30 分,服务器 A 的文件自动同步到服务器 B 。我们可以认为服务器 A 是服务端,服务器 B 是客户端。下面演示如何达到这个目标。
①在客户端(服务器 B )生成一对公钥和秘钥。使用 ssh-keygen -t rsa
生成,一路回车即可;
②进入秘钥文件夹查看文件。其中id_rsa.pub
是公钥,id_rsa
是私钥;
//进入文件夹
cd ~/.ssh
③打开id_rsa.pub
文件,并把它的内容拷贝到服务端(服务器 A )的 authorized_keys 文件中;
④在客户端(服务器 B )编写文件拷贝的脚本;
#!/bin/sh
#copy data from remote server. you should copy your client's id_rsa.pub content to the server's ~/.ssh/authorized_keys file
#this script run at client
scp -r root@x.xx.xxx.xxxx:/var/www/html/hellojammy/* /var/www/html/hellojammy/
exit 0;
其中,x.xx.xxx.xxxx
是服务端(服务器 A )的 ip 地址。这段脚本的作用是拷贝服务器 B 的/var/www/html/hellojammy/
目录下的所有文件(包括子文件夹下的文件),到服务器 A 的/var/www/html/hellojammy/
目录。脚本文件为 scp_test.sh
⑤在客户端(服务器 B )编写定时任务脚本,执行文件拷贝的命令。
//编辑定时任务
crontab -e
//添加定时任务
30 4 * * * /bin/sh /data/script/scp_test.sh > /data/script/logs/scp_test.log 2>&1
至此,完成!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.