需要用到的工具有:sshpass
- 安装sshpass
sudo apt install sshpass
- 然后先传输一个文件试试,同时把ssh key也接收了:
scp 本机文件路径 目标服务器用户名@目标服务器IP:目标路径
# 如 scp ~/test.txt root@192.168.0.2:/srv/ ;把本地test.txt传给远程服务器/srv/目录下
如果要传一个目录下的全部文件,使用如下:
scp /本机文件路径/* 目标服务器用户名@目标服务器IP:目标路径
# 如 scp ~/test/* root@192.168.0.2:/srv/ ;把本地 ~/test/ 下的全部文件都传给远程服务器/srv/目录下
- 把传输任务写入脚本,配置linux的定时任务:
echo 'sshpass -p 远程服务器密码 scp 本地文件 root@192.168.0.2:目标路径' > auto_send.sh
chmod +x auto_send.sh
# 例:sshpass -p passwd scp ~/test/* root@192.168.0.2:/srv/
# 使用sshpass 可以使用 -p 密码配置,不用每次使用scp都要输密码了
- 配置定时任务:
crontab -e
然后在结尾添加:
*/1 * * * * auto_send.sh # 每分钟运行一次
0 0 * * * auto_send.sh # 每天0点运行一次
可以查看一下当前的定时任务确认一下:
crontab -l
更多配置请参考:https://www.jianshu.com/p/d93e2b177814
保存配置后即可定时传输文件
注意:
- 发送的时间是按照服务器的时区走的,如果不是中国CST时区,需要修改服务器的时区请参考:Linux一行代码修改时区
- 在使用sshpass前一定要先连一下,以确保已接收到ssh key,否则会不传输同时也不会报错