Linux scp 文件夹传输详解
在日常的Linux系统管理中,文件和文件夹的远程传输是一项常见操作。scp(Secure Copy)命令基于SSH协议,提供了安全、高效的文件传输方式,尤其适合在服务器之间或本地与远程主机之间复制文件夹,本文将详细介绍scp命令传输文件夹的使用方法、常见参数及注意事项。

基本语法与传输原理
scp命令的基本语法为:
scp [选项] 源路径 目标路径
源路径和目标路径可以是本地路径或远程路径(格式为用户名@主机:路径),传输文件夹时,需加上-r选项(递归复制),以确保目录及其子目录和文件被完整传输,将本地文件夹local_folder传输到远程主机168.1.100的/home/user/目录下:
scp -r local_folder user@192.168.1.100:/home/user/
系统会提示输入远程主机的用户密码,验证通过后开始传输。
常用参数解析
-
-r(递归复制)
必须使用此参数传输文件夹,否则scp会报错,提示目标不是普通文件。 -
-P(指定端口)
若远程SSH服务端口非默认的22,需通过-P参数指定。
scp -r -P 2222 local_folder user@192.168.1.100:/home/user/
-
-p(保留文件属性)
使用-p可保留文件的修改时间、访问时间和权限信息:scp -rp local_folder user@192.168.1.100:/home/user/
-
-C(压缩传输)
对于大文件夹,启用压缩可减少传输时间:scp -rC local_folder user@192.168.1.100:/home/user/
-
-l(限制带宽)
若需控制传输速率,可通过-l参数指定最大带宽(单位:Kbps):scp -r -l 1024 local_folder user@192.168.1.100:/home/user/ # 限制为1Mbps
高级场景应用
-
从远程主机下载文件夹
将远程主机上的remote_folder复制到本地当前目录:scp -r user@192.168.1.100:/home/user/remote_folder ./
-
通过代理服务器传输
若需通过跳板机传输,可结合ProxyCommand或-J参数(需OpenSSH 7.3+):
scp -r -J user@proxy_host user@target_host:/path/to/folder ./
-
使用SSH密钥认证
为避免频繁输入密码,可配置SSH免密登录,生成密钥对后,将公钥复制到远程主机的~/.ssh/authorized_keys文件中,即可实现无密码传输:scp -r local_folder user@192.168.1.100:/home/user/
注意事项
- 权限问题:确保本地用户对源文件夹有读取权限,远程用户对目标路径有写入权限。
- 磁盘空间:传输前检查远程主机的磁盘空间是否充足,避免因空间不足导致传输中断。
- 网络稳定性:对于大文件或弱网络环境,可考虑使用
rsync替代scp,其支持断点续传和增量同步。 - 防火墙配置:确保远程主机的SSH端口(默认22)已开放,否则传输会失败。
scp命令凭借其简洁的语法和安全性,成为Linux环境下文件夹传输的首选工具,通过合理使用-r、-P、-p等参数,可以灵活应对各种传输需求,对于需要频繁同步或大文件传输的场景,建议结合rsync或sftp等工具,以提升效率和可靠性,掌握scp的使用,不仅能提高工作效率,也能为系统管理提供更多便利。















