
Linux scp 命令
Linux 中的
scp命令主要用于在不同主机之间进行文件和目录的安全复制操作。
scp是 secure copy 的缩写,它是基于 SSH 登录机制的一种远程文件拷贝工具,相比不加密的
rcp更加安全可靠。
简介
在 Linux 操作系统中,
scp是一个功能强大的命令行工具。它通过 SSH 协议实现数据传输,确保文件在传输过程中的安全性。
命令格式
scp [-1241246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-S program] [[user@]host1:]file1 [...] [[user@]host2:]file2
简化形式如下:
scp [选项] [源文件] [目标路径]
[选项]
:控制scp
的行为方式。[源文件]
:需要复制的文件或目录路径。[目标路径]
:文件或目录将被复制到的位置。
常用参数包括:
-r
:递归复制整个目录。-P
:指定远程服务器使用的端口号(默认为 22)。-P
:保留文件的时间戳及权限信息。-v
:输出详细的调试信息。-C
:启用压缩传输以提升速度。
完整参数说明:
- -1: 使用SSH协议版本1。
- -2: 使用SSH协议版本2。
- -4: 强制使用IPv4地址。
- -6: 强制使用IPv6地址。
- -B: 批处理模式,避免交互式提示。
- -C: 启用压缩传输。
- -p: 保留原始文件属性。
- -q: 不显示进度条。
- -r: 递归复制。
- -v: 显示详细执行过程。
- -c cipher: 使用指定加密算法。
- -F ssh_config: 指定替代的SSH配置文件。
- -i identity_file: 指定密钥文件。
- -l limit: 设置最大带宽限制。
- -o ssh_option: 设置SSH选项。
- -P port: 指定非标准端口。
- -S program: 指定用于加密连接的程序。
文件传输示例
将本地文件上传至远程主机
例如,将本地
example.txt文件复制到远程服务器
/home/user/路径下:
scp example.txt user@remote_host:/home/user/
下载远程文件到本地
从远程服务器获取
example.txt文件并保存在当前目录:
scp user@remote_host:/home/user/example.txt .
复制整个目录
使用
-r参数可以复制整个目录结构:
scp -r my_directory user@remote_host:/home/user/
自定义端口复制
当远程主机监听的是其他端口(如2222),则需添加
-P参数:
scp -P 2222 example.txt user@remote_host:/home/user/
保留文件属性
若希望保留时间戳和权限信息,请使用
-P选项:
scp -p example.txt user@remote_host:/home/user/
开启压缩加快传输
大文件或网络较差时,推荐加上
-C来开启压缩功能:
scp -C large_file.zip user@remote_host:/home/user/
实际应用案例
本地 → 远程
命令模板如下:
scp local_file remote_username@remote_ip:remote_folder 或者 scp local_file remote_username@remote_ip:remote_file 或者 scp local_file remote_ip:remote_folder 或者 scp local_file remote_ip:remote_file
示例:scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3
目录复制语法:
scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folder remote_ip:remote_folder
示例:
scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ scp -r /home/space/music/ www.runoob.com:/home/root/others/
远程 → 本地
只需交换前后参数位置即可完成下载操作:
scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 scp -r www.runoob.com:/home/root/others/ /home/space/music/
特殊情况处理
如果防火墙限制了默认端口,则可使用
-P指定具体端口号:
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator
同时请确认用户拥有读取远程文件的权限,否则操作会失败。
注意事项
- 必须具备对源文件和目标路径的访问权限。
- 若远程主机未启动 SSH 服务或配置错误,会导致
scp
无法正常运行。 - 如遇连接问题,可通过
-v
参数查看详细日志帮助排查。










