设有两机,均为局域网,两机可相互通信无问题,中间无防火墙。
两机IP分别为:A:192.168.1.240 B:192.168.1.102
假设A,B机的SSH都允许root登录
设要把 A上的 /root/abc.zip 传到 B机并放到/abc目录,可以在A机上用命令
scp /root/abc.zip root@192.168.1.102:/abc/
若 SSH端口不是默认的22,比如,是端口1234 则加-P参数:
scp -P 1234 /root/abc.zip root@192.168.1.102:/abc/
也可以在B机上用命令:
scp root@192.168.1.240:/root/abc.zip /abc/
一个简单的bash脚本,实现sftp自动上传/下载文件。
#!/bin/bash local_dir=/PATH target_dir=/PATH user=USERNAME password=PASSWORD serverip=SERVERIP lftp -u $user,$password sftp://$serverip <<END_SFTP lcd $local_dir cd $target_dir mput * bye END_SFTP
需要注意的是前六行的大写字母部分你要替换成你自己的实际信息。各变量的含义如下。
local_dir 本地需要上传的数据目录
target_dir 要上传到的目标服务器的数据目录
user sftp登陆用户名
password sftp登陆用户密码
serverip 服务器ip
另外,第9行的代码mput *会默认上传本地数据目录下的所有文件,如果你只需要上传某个文件则改成put filename。
当然更具体的需求需要你自己去修改。
第12行的END_SFTP必须顶格写,经常有人脚本出错就是这个问题