余白

SCP 与 Rsync 命令

SCP 命令

SCP(Secure Copy)用于通过 SSH 协议在本地和远程主机之间安全地复制文件。

基本语法

scp [选项] 源路径 目标路径

常用选项

选项说明
-r递归复制整个目录
-P port指定 SSH 端口(注意是大写 P)
-p保留文件的权限和时间戳
-q静默模式,不显示传输进度
-v详细模式,显示调试信息
-i指定私钥文件
-C启用压缩

使用实例

1. 从本地复制文件到远程服务器

scp /path/local/file.txt user@remote_host:/path/remote/

2. 从远程服务器复制文件到本地

scp user@remote_host:/path/remote/file.txt /path/local/

3. 复制整个目录

scp -r /path/local/folder user@remote_host:/path/remote/

4. 指定端口复制

scp -P 2222 /path/local/file.txt user@remote_host:/path/remote/

5. 使用私钥复制

scp -i ~/.ssh/my_key.pem /path/local/file.txt user@remote_host:/path/remote/

6. 同时复制多个文件

scp file1.txt file2.txt user@remote_host:/path/remote/

Rsync 命令

Rsync(Remote Sync)是一个快速、通用的文件同步工具,支持增量备份,只传输变化的部分。

基本语法

rsync [选项] 源路径 目标路径

常用选项

选项说明
-a归档模式,等同于 -rlptgoD(保留权限、链接、时间等)
-v详细输出
-z传输时压缩数据
-h人类可读的输出格式
-n模拟运行(dry-run)
--delete删除目标目录中多余的文件
--exclude排除指定模式的文件
--progress显示传输进度
-P等同于 –partial –progress
--bwlimit限制传输带宽(单位 KB/s)

使用实例

1. 同步本地目录

rsync -av /path/source/ /path/destination/

2. 同步到远程服务器

rsync -av /path/local/ user@remote_host:/path/remote/

3. 从远程同步到本地

rsync -av user@remote_host:/path/remote/ /path/local/

4. 模拟运行(测试效果)

rsync -avn /path/source/ /path/destination/

5. 排除特定文件/目录

rsync -av --exclude='*.log' --exclude='node_modules/' /path/source/ /path/destination/

6. 删除目标中多余的文件

rsync -av --delete /path/source/ /path/destination/

7. 限速传输(避免占用过多带宽)

rsync -av --bwlimit=1000 /path/source/ /path/destination/

8. 使用 SSH 指定端口

rsync -av -e "ssh -p 2222" /path/source/ user@remote_host:/path/remote/

SCP vs Rsync 对比

特性SCPRsync
传输方式每次全量传输增量传输,只传变化部分
速度较慢快(尤其是大文件少量修改时)
断点续传不支持不支持(但可以用 –partial)
带宽控制不支持支持(–bwlimit)
复杂度简单功能丰富,较复杂
权限保留需要 -p 选项-a 选项自动保留

选择建议

  • 小文件传输:两者皆可,SCP 更简单
  • 大文件/目录同步:推荐 Rsync,省时省带宽
  • 需要增量备份:必须用 Rsync
  • 一次性快速复制:SCP 更方便

常用场景

定时备份脚本示例

#!/bin/bash
# 使用 rsync 同步并删除目标多余文件
rsync -avz --delete -e ssh /data/ user@backup_server:/backup/data/
#!/bin/bash
# 使用 scp 定时推送备份
scp -r /data/backup_$(date +%Y%m%d).tar.gz user@backup_server:/backup/