scp 命令是一个可以将文件复制到 Linux 服务器中的一个命令,可以在 Windows 的 cmd 或 powershell 中使用。基本的使用方法如下:
scp [option] /filename user@server-ip:/path
其中:filename 是文件名称,/path 是目标目录,user@server-ip 是登录服务器所用的用户名以及服务器ip;而至于 [option],则是如下定义
- -C - 这会在复制过程中压缩文件或目录。
- -P - 如果默认 SSH 端口不是 22,则使用此选项指定 SSH 端口。
- -r - 此选项递归复制目录及其内容。
- -p - 保留文件的访问和修改时间。
在输入此命令后,将会要求输入登录服务器的密码,在输入密码时不会有任何字符显示,这是正常的现象,目的是为了保护密码不被他人看见,输入完成后按回车即可登录。
然而实际上如果只上传文件而不是文件夹的话,则可以不添加任何参数,例如我想上传一个名为 test.txt 的文件到我的/www/website/files 里,我可以使用如下命令:
scp test.txt user@sever-ip:/www/website/files
此时可能有人注意到了,我并没有标明 test.txt 的绝对位置,假如计算机里有多个 test.txt 文件的话,那么计算机是如何知道我上传的是哪个 test.txt 呢?
这就是我写这篇文章最想说的,也是我在给服务器上传插件时踩了不止一次的雷。
网上有很多教程在/filename 处使用的是绝对路径,然而经过我的测试,直接在 powershell 中使用这个方法时,会提示找不到文件,所以我们换一种思路,直接在文件夹中打开 powershell 或 cmd,并且直接输入文件名,问题就迎刃而解了,同时也省去了输入繁琐的绝对路径。
使用方法为:进入目标文件/文件夹所在上级路径,右键文件夹空白处并点击在终端中打开(可能有不同的名称)即可。
注意:文件或者文件夹名称前不必添加 / 符号