在日常工作中,经常需要把本地电脑上的文件快速传到服务器,或者从远程主机拉取数据做备份。打开图形界面工具虽然方便,但有时候连接慢、占用资源多,反而不如直接在终端窗口scp文件传输来得干脆利落。
什么是scp?
scp 是 secure copy 的缩写,基于 SSH 协议实现加密传输,安全性高,不需要额外配置服务。只要能通过 SSH 登录目标机器,就能用 scp 传文件。它支持本地与远程之间的双向传输,语法清晰,一条命令就能完成任务。
基本用法示例
比如你想把本地的 backup.sql 文件上传到远程服务器的 /home/user/ 目录下,可以这样写:
scp backup.sql user@server_ip:/home/user/
回车后输入密码,传输就开始了。等进度条跑完,文件就已经存到服务器上了。反过来,如果想从服务器下载日志文件到本地:
scp user@server_ip:/var/log/app.log ./logs/
这条命令会把远程的 app.log 下载到本地当前目录下的 logs 子目录中。
传输整个文件夹怎么办?
加上 -r 参数就行,表示递归复制整个目录。例如备份本地项目代码到远程备份机:
scp -r project-folder user@backup-server:/backups/
这个操作常用于定期归档开发版本,避免本地硬盘出问题导致代码丢失。
提高传输效率的小技巧
默认情况下,scp 使用的是 AES-128-CBC 加密,比较耗 CPU。如果内网环境安全,可以换用更轻量的加密方式加速传输:
scp -c aes128-ctr -r large_data/ user@server_ip:/data/
实测在局域网内,这种调整能让大文件夹传输快上一截。
另外,配合 ssh config 配置别名后,命令还能更简洁。比如在 ~/.ssh/config 中设置:
Host myserver
HostName 192.168.1.100
User admin
Port 2222
之后传文件就不用每次都输 IP 和端口了:
scp myfile.txt myserver:/tmp/
省事又不容易敲错。
实际应用场景
上周同事误删了测试库的数据,好在前一天我用 cron 定时任务结合 scp 把数据库导出并推到了备用主机。恢复时只用了两分钟就把备份拉回来导入,没耽误上线进度。这种时候才觉得,熟练掌握终端窗口scp文件传输真能救急。
对于“数据备份”栏目下的读者来说,与其依赖复杂的同步工具,不如先把 scp 这种基础技能用熟。它不占内存、无需安装、跨平台通用,在 macOS、Linux 甚至 Windows 的 WSL 环境里都能跑。
下次要做远程文件搬运,不妨先打开终端试试 scp,可能比你点开第三个图形工具还快。