Ubuntu下使用SCP实现文件夹同步,需通过scp命令结合关键参数完成,核心参数包括-r(递归传输整个目录)、-p(保留文件权限与时间戳)、--exclude(排除特定文件,如--exclude "*.log"),基本语法为scp -r /本地路径/文件夹 用户名@远程主机IP:/远程路径/,首次传输需输入SSH密码,建议配置SSH免密登录提升效率,注意SCP基于SSH,需确保网络互通,大文件传输时可结合-l限制带宽,适用于远程服务器文件备份、本地与远程目录同步等场景,操作简单且安全性高。
在Linux系统管理中,文件夹同步是常见需求,比如备份本地数据到远程服务器、将远程项目文件拉取到本地开发环境等,SCP(Secure Copy Protocol)作为一种基于SSH的安全文件传输协议,因其简单易用、加密传输的特性,成为Ubuntu系统中实现文件夹同步的首选工具之一,本文将详细介绍如何在Ubuntu下使用SCP命令同步本地与远程文件夹,包括基础操作、参数解析及常见问题处理。
SCP与文件夹同步概述
SCP(Secure Copy Protocol)工作在SSH协议之上,通过加密通道在本地和远程主机之间传输文件或目录,与传统的FTP等协议相比,SCP无需额外配置服务端(远程服务器需开启SSH服务即可),且数据传输过程全程加密,安全性更高,在Ubuntu中,SCP通常作为OpenSSH客户端的一部分默认安装,无需额外安装即可使用。
文件夹同步的核心需求是“递归复制目录内容”,而SCP通过-r参数即可实现目录及其子目录、文件的完整复制,非常适合小规模、一次性的文件夹同步场景。

使用SCP同步文件夹的前提条件
-
Ubuntu系统已安装SSH客户端
Ubuntu默认已安装OpenSSH客户端,可通过终端输入ssh -V检查版本(若未安装,执行sudo apt update && sudo apt install openssh-client安装)。 -
远程服务器SSH服务已开启
远程服务器需运行SSH服务(通常默认开启),可通过ssh 用户名@远程IP测试连接,若未开启,在远程服务器上执行sudo systemctl start ssh并设置为开机自启(sudo systemctl enable ssh)。 -
已知远程服务器信息
包括远程IP地址(或域名)、用户名、目标文件夹路径,以及非默认SSH端口(若服务器修改了默认22端口)。
SCP同步文件夹的基础操作
从本地同步文件夹到远程服务器
命令格式:
scp -r /本地/文件夹路径/ 用户名@远程IP:/远程/目标路径/
-r:递归复制目录(必须参数,否则无法复制文件夹);/本地/文件夹路径/:本地待同步的文件夹路径(末尾表示复制文件夹内容,不加则复制文件夹本身);用户名@远程IP:远程服务器的登录凭证(如root@192.168.1.100);/远程/目标路径/:远程服务器上保存文件夹的路径(需确保用户有写权限)。
示例:
将本地/home/user/docs文件夹同步到远程服务器168.1.100的/backup/docs目录下(远程用户为backup):
scp -r /home/user/docs backup@192.168.1.100:/backup/
执行后会提示输入远程用户backup的密码,输入后开始传输文件。
从远程服务器同步文件夹到本地
命令格式:
scp -r 用户名@远程IP:/远程/文件夹路径/ /本地/目标路径/
与“本地到远程”相比,仅需交换本地和远程路径的位置。
示例:
将远程服务器168.1.100的/var/log/nginx文件夹同步到本地/home/user/nginx_logs:
scp -r root@192.168.1.100:/var/log/nginx /home/user/
指定SSH端口同步
若远程服务器修改了SSH默认端口(如改为2222),需通过-P参数(注意大写)指定端口:
scp -r -P 2222 /本地/文件夹路径/ 用户名@远程IP:/远程/目标路径/
示例:
通过端口2222同步本地/home/user/project到远程服务器:
scp -r -P 2222 /home/user/project deploy@192.168.1.100:/opt/project/
压缩传输(减少网络占用)
对于大文件夹,可通过-C参数启用压缩传输,减少网络带宽占用:
scp -r -C /本地/文件夹路径/ 用户名@远程IP:/远程/目标路径/
示例:
压缩同步本地/home/user/large_data到远程:
scp -r -C /home/user/large_data user@192.168.1.100:/backup/
SCP同步的注意事项与常见问题
权限问题
- 本地权限:确保执行SCP命令的用户对本地待同步文件夹有读权限(
r); - 远程权限:确保远程用户对目标路径有写权限(
w),否则会提示“Permission denied”,可通过chmod修改远程目录权限(如sudo chmod 755 /backup/)。
SSH密钥认证(免密码同步)
频繁输入密码效率较低,可通过SSH密钥认证实现免密码登录:
- 生成密钥对(本地执行,若已有则跳过):
ssh-keygen -t rsa -b 4096 # 按回车使用默认路径,可设置密码或直接回车免密
- **复制公钥到

