假设本地为客户端A(tony@192.168.3.6),远程服务端为B(tom@192.168.3.100),定时从B复制文件夹内容到A:
设置步骤:
1. 设置免密登陆
(1)在客户端(A )生成一对公钥和秘钥,使用 ssh-keygen -t rsa
生成,一路回车即可;
sudo su
ssh-keygen -t rsa
(2)进入秘钥文件夹查看文件: 其中id_rsa.pub
是公钥,id_rsa
是私钥;
//进入文件夹
cd /root/.ssh
(3) 把id_rsa.pub
上传到到服务端(B);
scp /root/.ssh/
id_rsa.pub
tom@192.168.3.100:/home/tom/
(4)在服务端(B)上生成公钥和密钥(不需要进入root),使用 ssh-keygen -t rsa
生成,一路回车即可;
(5)在服务端(B)上创建authorized_keys,并把(3)上传A的id_rsa.pub
的内容拷贝到服务端(B )的 authorized_keys:
touch ~/.ssh/authorized_keys
cat /home/tom/
id_rsa.pub >>
~/.ssh/authorized_keys
2. 在客户端(A )创建执行scp操作的sh脚本:testscp.sh
#!/bin/sh
/usr/bin/scp -r tom@192.168.3.100:/home/tom/data/ /home/tony/datasets/
exit 0
3. 在客户端(A )设置定时任务
sudo gedit /etc/crontab
添加:每天02:50执行该脚本
50 02 * * * root /home/tony/testscp.sh >> /home/tony/scp.log 2>&1
4. 在客户端(A )重启cron来应用这个计划任务
sudo service cron restart
备注:由于我的定时任务是A上root执行的,所以密钥需要在root下生成,待测试普通用户执行定时任务的设置;