scp
(Secure Copy Protocol)是基于 SSH 的安全文件传输工具,可用于在本地和远程计算机之间复制文件或目录。
1. scp
(基于 SSH 复制文件)
a. 复制文件到远程
-
从本地复制到远程
scp localfile.txt user@remote_host:/remote/path/
📌 解释:将本地文件 localfile.txt 复制到远程主机 remote_host 的 /remote/path/ 目录下。
-
从远程复制到本地
scp user@remote_host:/remote/path/file.txt /local/path/
📌 解释:将远程主机上的 file.txt 下载到本地 /local/path/ 目录下。
-
复制整个目录(-r 递归)
scp -r localdir user@remote_host:/remote/path/
📌 解释:将本地目录 localdir 及其内容递归复制到远程 remote_host 的 /remote/path/ 目录。
b. 下载远程文件到本地
scp user@remote_host:/remote/path/file.zip /local/path/
📌 示例:从远程服务器 192.168.1.100
下载 file.zip
到本地 /home/user/
目录:
scp user@192.168.1.100:/home/user/file.zip /home/user/
c. 下载远程目录
scp -r user@remote_host:/remote/path/ /local/path/
📌 示例:下载整个 backup
目录:
scp -r user@192.168.1.100:/home/user/backup/ /home/user/
d. 指定 SSH 端口
如果 SSH 端口不是默认的 22
,可以使用 -P
选项:
scp -P 2222 user@remote_host:/remote/path/file.zip /local/path/
2. rsync
(更高效的文件同步,支持断点续传)
a. 下载远程文件到本地
rsync -avP user@remote_host:/remote/path/file.zip /local/path/
📌 示例:从 192.168.1.100
下载 file.zip
:
rsync -avP user@192.168.1.100:/home/user/file.zip /home/user/
b. 下载远程目录
rsync -avP user@remote_host:/remote/path/ /local/path/
📌 示例:下载整个 backup
目录:
rsync -avP user@192.168.1.100:/home/user/backup/ /home/user/
c. 指定 SSH 端口
rsync -avP -e "ssh -p 2222" user@remote_host:/remote/path/ /local/path/
3. 使用 sftp
(交互式下载)
如果你需要交互式浏览远程文件再下载,可以使用 sftp
:
sftp user@remote_host
然后在 sftp>
提示符下执行:
get /remote/path/file.zip
下载整个目录:
get -r /remote/path/
4. 使用密钥文件进行认证
scp -i ~/.ssh/id_rsa localfile.txt user@remote_host:/remote/path/
📌 解释:使用 ~/.ssh/id_rsa
作为身份认证密钥。
5. 多文件复制
scp file1.txt file2.txt user@remote_host:/remote/path/
📌 解释:同时复制多个文件到远程服务器。
总结
方式 | 适用场景 | 命令示例 |
---|---|---|
scp | 直接复制文件 | scp user@remote:/file.zip /local/ |
scp -r | 复制整个目录 | scp -r user@remote:/dir/ /local/ |
rsync | 高效同步(支持断点续传) | rsync -avP user@remote:/file.zip /local/ |
rsync -r | 同步整个目录 | rsync -avP user@remote:/dir/ /local/ |
sftp | 交互式文件下载 | sftp user@remote |
你是要下载单个文件,还是整个目录?是否需要断点续传?
注意事项
- 远程路径必须有写入权限,否则会报错
Permission denied
。 scp
需要 SSH 访问权限,请确保可以ssh user@remote_host
登录远程服务器。- 如果连接失败,请检查 SSH 端口和防火墙设置。
- 如果传输大文件或不稳定的网络环境,建议使用
rsync
替代scp
,支持断点续传:rsync -avP localfile.txt user@remote_host:/remote/path/