文章系Gemini自动生成 仅供参考

💡 前言:为什么我们需要命令行传输?

很多刚接触 VPS(虚拟专用服务器)的朋友,习惯使用 FileZilla 或 Xftp 这样的图形化工具。它们确实直观,但你是否遇到过这些尴尬时刻?

  • 速度慢:上传成千上万个小文件(比如 WordPress 网站源码)时,速度慢到让人怀疑人生。

  • 易中断:传大文件传了一半断网了,还得从头再来。

  • 没界面:有时候你手里只有 SSH 终端,根本没法用鼠标拖拽。

今天我们要学习 Linux 系统自带的两个“神器”:SCPRsync。它们不需要安装额外软件,一行命令就能搞定文件传输,既快又稳,是每一位服务器玩家的必备技能。


第一部分:SCP —— 简单粗暴的“搬运工”

1. 什么是 SCP?

SCP (Secure Copy) 是基于 SSH 协议的文件传输工具。

通俗理解:它就像是电脑上的 Ctrl+C (复制) 和 Ctrl+V (粘贴),只不过这次是跨越了两台电脑。它的特点是简单、通用,几乎所有 Linux 系统都默认安装了它。

2. 基本语法公式

SCP 的命令逻辑非常符合直觉:

Bash

scp [选项] 源文件 目标位置

记忆口诀scp 谁 去哪里

3. 实战场景(手把手演示)

场景 A:把本地文件“扔”到服务器(上传)

假设你电脑里有一个文件叫 demo.zip,你想把它上传到服务器的 /root 目录下。

  • 服务器 IP:192.168.1.100

  • 用户名:root

命令:

Bash

scp demo.zip root@192.168.1.100:/root/

解释:把本地的 demo.zip 复制到 root用户192.168.1.100 这台机器上的 /root/ 文件夹里。

场景 B:把服务器文件“拉”回本地(下载)

假设你想把服务器上的数据库备份 /home/backup.sql 下载到你现在的电脑桌面上(假设当前就在桌面目录下)。

命令:

Bash

scp root@192.168.1.100:/home/backup.sql .

注意:命令最后那个小点 . 代表“当前目录”,千万别漏了!

场景 C:传输整个文件夹

默认情况下 SCP 只能传单个文件。如果要传文件夹,需要加一个参数 -r (Recursive,递归)。

命令:

Bash

scp -r my_website_folder root@192.168.1.100:/var/www/html/

4. 常见问题:如果服务器端口不是 22 怎么办?

很多为了安全的 VPS 会修改默认 SSH 端口(比如改为 2222)。这时候需要用 -P (大写) 参数。

Bash

scp -P 2222 demo.zip root@192.168.1.100:/root/

第二部分:Rsync —— 智能高效的“同步大师”

1. 为什么有了 SCP 还要学 Rsync?

SCP 很傻,它每次不管文件有没有变动,都会重新覆盖拷贝一遍。

Rsync (Remote Sync) 则聪明得多。它在传输前会先对比两边的文件:

  • 增量传输:只传修改过的部分。

  • 断点续传:传一半断了,下次运行命令接着传,不用重头开始。

  • 保持属性:可以完美保留文件的创建时间、权限等信息。

通俗理解:SCP 是搬家公司,不管你家东西乱不乱,全部打包拉走;Rsync 是强迫症整理师,只处理那些位置变了或新买的东西。

2. 黄金组合参数:-avzP

Rsync 的参数很多,但对于 99% 的小白用户,记住这个“万能钥匙”就够了:

rsync -avzP

  • -a (Archive):归档模式,保留所有文件属性(权限、时间、软链接等),且默认递归(包含文件夹)。

  • -v (Verbose):啰嗦模式,让你看到传输过程。

  • -z (Compress):压缩传输,省流量,传文本文件时速度飞快。

  • -P (Progress):显示进度条,并支持断点续传。

3. 实战场景

场景 A:同步网站代码到服务器

假设你在本地更新了网站代码 my_blog/,现在要同步到服务器。

命令:

Bash

rsync -avzP my_blog/ root@192.168.1.100:/var/www/html/my_blog/

第一次运行会全量上传,第二次运行如果只改了一个 index.html,它就只会瞬间传输这一个文件!

场景 B:非标准端口的同步

Rsync 指定端口稍微复杂一点点,需要用 -e 参数包裹 ssh 命令。假设端口是 8888:

命令:

Bash

rsync -avzP -e "ssh -p 8888" my_blog/ root@192.168.1.100:/var/www/html/

4. 一个必须要懂的“斜杠 /” 陷阱 ⚠️

这是 Rsync 最容易踩坑的地方,请务必注意!

  • 写法 1(不带斜杠)rsync -av my_folder destination/

    • 结果:会在目标目录下创建一个名为 my_folder 的文件夹。
  • 写法 2(带斜杠)rsync -av my_folder/ destination/

    • 结果:会将 my_folder 里面的内容 直接撒在目标目录下,而不会创建 my_folder 这个目录本身。

口诀:有斜杠是“只传内容”,没斜杠是“连皮带肉”。

给新手的建议:

  1. 如果你只是临时想把一个配置文件传到服务器,或者从服务器拿个日志看一眼,用 SCP,因为它命令短,敲得快。

  2. 如果你是在维护网站、备份几十个 G 的数据,或者网络环境不稳定,一定要用 Rsync。它是专业的选择。