我查看了此处的其他问题以及 Internet 上的各种“scp 使用”教程,但我无法弄清楚出了什么问题。
我正在使用 Linux Mint 并试图弄清楚scp是如何工作的。
我在目录/home/name/dir/ 中有一个文件file.ext(在我的电脑上)
我使用ssh连接到远程机器,例如:
ssh -p 2222 username@domain
Run Code Online (Sandbox Code Playgroud)
它问我密码,shell 显示:
username@domain ~ $
Run Code Online (Sandbox Code Playgroud)
现在,如果我发出命令(在我运行 ssh 之前,我在本地目录 /home/name/dir 中):
scp -r -P 2222 file.ext username@domain
Run Code Online (Sandbox Code Playgroud)
输出是:
cp: cannot stat ‘file.ext’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果我写的是完整路径而不是 file.ext,则结果相同
scp -r -P 2222 /home/name/dir/file.ext username@domain
Run Code Online (Sandbox Code Playgroud)
此外,服务器管理员告诉我,我会将文件上传到我的远程主目录(而不是根目录),例如:
scp -r -P 2222 file.ext username@domain:~/
Run Code Online (Sandbox Code Playgroud)
但是当我这样做并按“Enter”时,什么也没有发生,就好像外壳正在等待进一步的输入一样。
我的问题总结:
有什么建议?
ter*_*don 158
您需要scp从本地机器运行命令,而不是在远程机器上运行。你根本不需要ssh:
dragonmnl@local $ scp -P 2222 file.ext username@domain:~/
Run Code Online (Sandbox Code Playgroud)
你也不需要-r:
-r Recursively copy entire directories.
Run Code Online (Sandbox Code Playgroud)
如果您已经登录到远程机器并想从本地复制,您需要确保您的本地机器可通过互联网访问并已ssh设置。我不认为这就是你所追求的,但如果是,只需从远程运行:
username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
Run Code Online (Sandbox Code Playgroud)
小智 39
我提供了两种远程和本地机器之间上传/下载文件的方法(我使用Mac air):
在这种情况下,我想11.jpeg在本地和远程之间上下移动:
将服务上的文件复制到本地目录:您必须在本地 bash 终端中执行此命令,而不是在 ssh 中时!
scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/
Run Code Online (Sandbox Code Playgroud)
将本地目录中的文件复制到远程服务:您也必须在本地 bash 终端中
scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
Run Code Online (Sandbox Code Playgroud)
SSH登录时要达到同样的目的,必须先设置“系统偏好设置>共享>远程登录>所有用户(我不确定是否必须为“所有用户”设置,但在这种情况下它有效)” Mac 会告诉您“要远程登录这台计算机,请键入:
ssh username@xxxxxx, then type in the command below:
scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/**
Run Code Online (Sandbox Code Playgroud)
上面这个命令是当你登录ssh时从远程下载文件到本地,当你想上传文件时,只需更改这两个路径即可。
小智 10
scp命令如果你想一个文件夹刚刚转会,zip首先,我们可以unzip它以后。
在您的计算机上,运行以下命令:
$ scp your_path_to_the_file/the_file root@10.145.198.100:~/
Run Code Online (Sandbox Code Playgroud)
在这里,root是您的帐户,10.145.198.100是远程服务器的 IP 地址。我们将复制the_file到~/遥控器中的文件夹。
$ unzip the_zip_file.zip -d destination_folder
Run Code Online (Sandbox Code Playgroud)
如果您在远程机器上运行此 scp 命令,它会寻找file.ext“本地”文件,即在远程机器上。
要将文件从远程机器复制到本地机器,请使用scp -P 2222 username@domain:dir/file.ext localdir(假设它file.ext在~/dir远程计算机上,如您的示例中所示)。如果您scp在远程机器上运行,请颠倒“本地”和“远程”。