如何使用 scp
将文件夹从远程复制到本地主机?
我使用 ssh
登录到我的服务器。
然后,我想将远程文件夹 foo
复制到本地 /home/user/Desktop
。
我如何实现这一目标?
mc
:TAB
、cd sh://USER@HOST
,使用 mc 快捷方式,完成后 cd
退出。
mc
中,使用菜单上的 Left/Right 更容易 > Shell 链接,您可以在其中键入您在 ~/.ssh/config
中拥有的别名,例如 myhost:
> 好的
scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
通过不包括 foo 末尾的尾随“/”,您将复制目录本身(包括内容),而不仅仅是目录的内容。
从 man scp
(见 online manual)
-r 递归复制整个目录
要使用 scp 的全部功能,您需要执行以下步骤:
公钥授权 创建 SSH 别名
然后,例如,如果你有这个 ~/.ssh/config:
Host test
User testuser
HostName test-site.example
Port 22022
Host prod
User produser
HostName production-site.example
Port 22022
您将避免输入密码并简化 scp 语法,如下所示:
scp -r prod:/path/foo /home/user/Desktop # copy to local
scp -r prod:/path/foo test:/tmp # copy from remote prod to remote test
此外,您将能够使用远程路径完成:
scp test:/var/log/ # press tab twice
Display all 151 possibilities? (y or n)
要启用远程 bash-completion,您需要在 <source>
和 <target>
主机上都有 bash-shell,并且 bash-completion 正常工作。有关更多信息,请参阅相关问题:
How to enable autocompletion for remote paths when using scp?
SCP filename tab completion
将所有内容从本地位置复制到远程位置(上传)
scp -r /path/from/local username@hostname:/path/to/remote
将所有内容从远程位置复制到本地位置(下载)
scp -r username@hostname:/path/from/remote /path/to/local
自定义端口,其中 xxxx
是 自定义端口 编号
scp -r -P xxxx username@hostname:/path/from/remote /path/to/local
将当前目录从远程复制到本地
scp -r username@hostname:/path/from/remote .
帮助:
-r 递归复制所有目录和文件始终使用 / 的完整位置,通过 pwd 获取完整位置/路径 scp 将替换所有现有文件主机名将是主机名或 IP 地址,如果需要自定义端口(除了端口 22)使用 -P PortNumber。 (点) - 它表示当前工作目录,因此从服务器下载/复制并仅粘贴到此处。
注意:有时自定义端口会因为防火墙不允许端口而无法使用,因此请确保防火墙允许自定义端口进行传入和传出连接
pwd
获取位置并使用相同
我经常使用的是:
scp -r username@IP:/path/to/server/source/folder/ .
<强>。 (点):表示current folder
。所以从服务器复制并粘贴在这里。
IP:可以是像 125.55.41.311
这样的 IP 地址,也可以是像 ns1.mysite.example
这样的主机。
.
指的是当前目录!
最好先在远程服务器上压缩目录:
tar czfP backup.tar.gz /path/to/catalog
其次,从远程下载:
scp user@your.server.example.com:/path/to/backup.tar.gz .
最后,解压文件:
tar -xzvf backup.tar.gz
-C
标志向 scp 添加压缩,例如 scp -C a@b:bigfile .
。
典型场景,
scp -r -P port username@ip:/path-to-folder .
用样本解释,
scp -r -P 27000 abc@10.70.12.12:/tmp/hotel_dump .
在哪里,
port = 27000
username = "abc" , remote server username
path-to-folder = tmp/hotel_dump
. = current local directory
而且,如果您要从远程位置下载一个地狱般的文件,并且您不太关心安全性,请尝试将 scp 默认加密(Triple-DES)更改为“blowfish”之类的东西。
这将大大减少文件复制时间。
scp -c blowfish -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
转到统一工具栏上的文件
https://i.stack.imgur.com/ZD6gk.png
按 Ctrl + l 并写 here_goes_your_user_name@192.168.10.123
192.168.1.103 是您要连接的主机。
这里的一个例子
https://i.stack.imgur.com/TFZ4B.png
如果您遇到“身份验证失败太多”,请指定您添加到服务器 ssh 服务器的确切 SSH 密钥:
scp -r -i /path/to/local/key user@remote.tld:/path/to/folder /your/local/target/dir
问题是如何使用 scp
命令将文件夹从远程复制到本地。
$ scp -r userRemote@remoteIp:/path/remoteDir /path/localDir
但这是使用 sftp
的更好方法 - SSH 文件传输协议(也称为安全文件传输协议,或 SFTP)是一种网络协议,可通过任何可靠的数据流提供文件访问、文件传输和文件管理。(维基百科)。
$ sftp user_remote@remote_ip
sftp> cd /path/to/remoteDir
sftp> get -r remoteDir
Fetching /path/to/remoteDir to localDir 100% 398 0.4KB/s 00:00
如需有关 sftp
命令的帮助,只需键入 help
或 ?
。
我不知道为什么,但我不得不在 source server directive 之前使用本地文件夹。让它发挥作用
scp -r . root@888.888.888.888:/usr/share/nginx/www/example.org/
root@
的情况下做一个绝对路径吗
对于 Windows 操作系统,我们使用此命令。
pscp -r -P 22 hostname@IP:/path/to/Downloads ./
不定期副业成功案例分享
-C
标志添加了压缩,-c
标志让您可以传入其他密码类型以获得更好的性能,例如scp -c blowfish a@b:something .
as seen in dimuthu's answerDesktop/foo
还是会得到Desktop/allcontentsofFooGohere
scp 有时对我来说似乎很奇怪scp -r user@your.server.example.com:/path/to/foo /home/user/Desktop/
你应该以Desktop/foo
结束。使用scp -r user@your.server.example.com:/path/to/foo/. /home/user/Desktop/
,您最终会得到Desktop
中foo
的内容,并且foo
的所有子目录散布在Desktop
下