我看网上关于远程服务器的文件上传下载教程都非常简洁~但是大多数漏掉了一些处理上的细节,这里进行一个稍微详细一点的总结。
远程连接服务器
在本机的cmd或本地Linux系统下,使用如下ssh
命令进行连接(我使用的是WSL):
ssh username@server_ip
eg. ssh zwx@123.567.890.1
password(当然这里是不显示的,别怀疑自己,大胆输入就好)
当然这个是常规情况,对于更高安全级别的系统,我们修改了其端口号,所以需要用-p
指令连接端口号port,假设端口号是1001,其连接命令行如下:
ssh -p 1001 zwx@123.567.890.1
注意!-p是小写的p,而不是大写P
上传本地文件到服务器指定目录
注意是在你自己系统下的cmd或Linux进行scp操作,而不是在连接好的远程服务器中用scp
上传和下载的命令是scp
,所以都应该scp开头。scp是Secure Copy Based on ssh,也就是基于ssh连接的加密拷贝传输协议。
在上传文件中,格式如下:
scp [-P 1001] local_file_path username@ip:server_path
如果服务器带非默认端口号(22),则需要在scp后加上方括号中的内容。
注意!-P是大写的P,而不是小写p
由于这种上传方式有一些限制,所以server_path尽量别用系统文件,而应该将用户目录作为上传目的地,然后再进服务器用cp命令进行拷贝
上面这个问题我给出下面这个例子说明:
scp -P 1001 D:/pictures/1.jpg zwx@123.567.890:/usr/src/tensorrtx/yolov5/samples
结果发现没有报错,但是并没有在目标目录找到文件
scp -P 1001 D:/pictures/1.jpg zwx@123.567.890:/usr/kevin
结果发现上传成功
然后在cp命令复制该文件到指定目录下即可
(小心!上面scp是在本地,而cp操作是在连接好的远程服务器上执行哦!!!)
sudo cp /usr/kevin/1.jpg /usr/src/tensorrtx/yolov5/samples
下载服务器文件到本地路径
同样,注意是在你自己系统下的cmd或Linux进行scp操作,而不是在连接好的远程服务器中用scp
同样是scp
命令,但是命令中先输入目标文件,再输入本地路径。
scp [-P 1001] username@ip:server_path local_file_path
端口号是同样的道理,放在相同的位置上即可。
注意!-P是大写的P,而不是小写p
有关上传和下载
- 不管是本地还是服务器,尽可能使用绝对路径表示目录和文件
- 当遇到需要输入端口号时,一定注意p的大小写规则标准
- 注意是在你自己的系统下进行scp操作,不是在连接好的远程服务器中用scp
- 如果操作的对象部署文件,而是要给目录,则在scp后加-r