文件与目录 / 命令文档

SCP 命令

$ scp 9 个章节 Linux 命令详解

概述

Linux系统安全文件传输的艺术

SCP 命令定义与含义

SCP (Secure Copy Protocol) 是基于 SSH 协议的安全文件传输命令,用于在本地主机和远程主机之间,或者两个远程主机之间安全地复制文件和目录。

核心特点:

安全加密 基于SSH协议,所有数据传输都经过加密

高效传输 支持压缩传输,减少网络带宽占用

精确控制 保持文件权限、时间戳等属性

基本语法结构

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

# 基本格式

scp [options] source destination

# 远程到本地

scp user@remote_host:/path/to/file /local/path/

# 本地到远程

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

# 远程到远程

scp user1@host1:/path/file user2@host2:/path/

常用选项参数:

-r 递归复制目录 -p 保持文件属性 -v 显示详细过程

-P port 指定端口 -C 启用压缩 -q 静默模式

1⃣ 本地到远程传输

# 传输单个文件

scp /Users/youngsu/Test/test.txt root@81.70.158.162:/root/

# 传输整个目录

scp -r /home/user/projects/ root@server.com:/var/www/

# 保持文件权限和时间戳

scp -p /home/user/script.sh admin@10.0.0.5:/usr/local/bin/

2⃣ 远程到本地传输

# 下载单个文件

scp root@81.70.158.162:/root/newfile.txt /Users/youngsu/Test/

# 下载目录(递归)

scp -r user@192.168.1.50:/etc/nginx/ ./nginx-backup/

# 使用通配符下载多个文件

scp user@server:/var/backup/*.sql ./database-backups/

3⃣ 高级选项使用

# 指定端口传输

scp -P 2222 file.txt user@host:/path/

# 启用压缩(适合大文件)

scp -C large_file.zip user@server:/tmp/

# 静默模式 + 保持属性

scp -pq /etc/hosts root@backup-server:/etc/hosts.backup

# 限制带宽(1000 KB/s)

scp -l 1000 big_file.tar.gz user@server:/uploads/

常见运维使用场景

服务器间数据同步

在生产环境中同步配置文件、应用代码或数据文件

# 同步应用配置

scp -r /etc/nginx/ backup-server:/backup/nginx-$(date +%Y%m%d)/

# 同步数据库备份

scp /var/backup/mysql/*.sql db-backup-server:/mysql-backups/

应用部署

将本地开发的应用部署到生产服务器

# 部署应用包

scp -C app-v2.1.tar.gz deploy@prod-server:/opt/applications/

# 批量部署到多台服务器

for server in web1 web2 web3; do
    scp -r ./dist/ deploy@$server:/var/www/app/
done

日志收集与备份

从多台服务器收集日志文件进行分析

# 收集应用日志

scp web-server:/var/log/app/*.log ./logs/$(date +%Y%m%d)/

# 定时备份重要配置

scp -p prod-server:/etc/{hosts,fstab,crontab} ./config-backup/

快速运维脚本分发

将运维脚本快速分发到目标服务器执行

# 分发监控脚本

scp monitor.sh ops@target-server:/tmp/ && ssh ops@target-server "chmod +x /tmp/monitor.sh && /tmp/monitor.sh"

# 分发批量操作脚本

scp batch-update.sh root@server:/root/ && ssh root@server "bash /root/batch-update.sh"
实用技巧与最佳实践 免密码登录配置 使用SSH密钥认证,避免每次输入密码,提高自动化脚本效率 # 生成SSH密钥对 ssh-keygen -t rsa -b 4096 # 复制公钥到目标服务器 ssh-copy-id user@remote-server 大文件传输优化 对于大文件传输,使用压缩和恢复传输功能 # 启用压缩传输大文件 scp -C large-database.sql user@server:/backups/ # 使用rsync替代scp处理断点续传 rsync -avz --progress file.iso user@server:/downloads/ 批量操作技巧 结合shell脚本实现批量文件传输 # 批量传输到多台服务器 servers="web1 web2 web3" for server in $servers; do echo "Uploading to $server..." scp -r ./app/ deploy@$server:/opt/ done 安全注意事项 定期更新SSH密钥 使用非标准端口提高安全性 限制用户权限,遵循最小权限原则 监控文件传输日志

同分类 · 其他命令文档