服务器文件传输还在用截图?scp, rsync, sftp三大神器安全高效传文件 (2025教程)

更多服务器知识,尽在hostol.com

嘿,各位服务器的“管理员”兼“勤杂工”们!咱们在服务器上折腾,免不了要跟文件打交道:把本地写好的网站代码传到服务器上啦,从服务器下载重要的日志文件到本地分析啦,或者在两台服务器之间同步一些配置文件啦……说到这,你是不是脑海里闪过一些“不堪回首”的经历?比如,为了给同事看个服务器上的小配置文件,吭哧吭哧截了好几张图?或者用一些不安全的FTP工具,心惊胆战怕密码泄露?

朋友,都2025年了,咱可不能再这么“原始”和“裸奔”啦!今天,Hostol就来给你隆重介绍三位服务器文件传输界的“大神级搬运工”——scp, rsync, 和 sftp!它们都是基于安全的SSH协议工作,不仅能保证你数据传输的“金钟罩铁布衫”,还能大大提高你的工作效率。学会了这三招“独门秘籍”,以后服务器和本地之间倒腾文件,那还不是小菜一碟,想怎么传就怎么传,安全又潇洒!


安全基石:SSH协议的“隐形守护”

在介绍这三位“大神”之前,咱们得先提一下它们共同的“靠山”——SSH(Secure Shell)协议。没错,就是你平时用来远程登录Linux服务器的那个SSH!这三款工具之所以备受推崇,很大程度上就是因为它们的数据传输过程都是通过SSH加密通道进行的。这意味着:

  • 数据加密: 你传输的文件内容、甚至你的登录凭据(如果是密码的话,但我们更推荐密钥!),在网络上都是加密的,别人想偷窥也看不懂。
  • 身份认证: 利用SSH的认证机制,确保你连接的是正确的服务器,服务器也确认了你的身份。

所以,只要你的SSH服务本身是安全的(比如用了强密码或SSH密钥,及时打补丁等),那么使用这三位“大神”进行文件传输,基本上就可以高枕无忧了。这可比那些还在用明文FTP的“老古董”安全到不知道哪里去了!


神器一:scp (Secure Copy) —— 简单粗暴的“闪送快递员”

scp,全称Secure Copy,顾名思义,就是安全复制。它就像是一位雷厉风行、使命必达的“闪送快递员”,最擅长在两台电脑(通常是你的本地电脑和远程Linux服务器)之间快速、直接地复制单个文件或整个目录。

啥时候请这位“快递员”出马?

当你需要:

  • 快速把本地的一个小配置文件、一个小脚本传到服务器上。
  • 从服务器上快速下载一个日志文件、一个小备份包到本地。
  • 在两台远程服务器之间直接复制文件(需要在一台上有权限访问另一台)。

总之,对于那些一次性、小批量、不需要太复杂逻辑的文件复制任务,scp简单直接的语法是你的不二之选。

“快递员”怎么使唤?—— 核心语法与实例

scp的语法非常直观,有点像我们本地的cp命令,只是加上了远程主机的表示方法:username@remote_host:/path/to/file

  1. 从本地复制到远程服务器: scp /本地路径/源文件.txt 用户名@远程服务器IP或域名:/远程路径/目标文件名.txt # 示例:把本地的 website.zip 传到服务器 myuser 的家目录下的 backups 文件夹 scp website.zip myuser@192.168.1.100:~/backups/
  2. 从远程服务器复制到本地: scp 用户名@远程服务器IP或域名:/远程路径/源文件.txt /本地路径/目标文件名.txt # 示例:把服务器上 myuser 家目录的 error.log 下载到本地当前目录 scp myuser@192.168.1.100:~/error.log . (别忘了,那个孤独的.代表当前目录哦!)
  3. 复制整个目录(需要加-r参数,recursive递归): # 从本地复制整个目录到远程 scp -r /本地路径/整个目录/ 用户名@远程服务器IP或域名:/远程路径/ # 从远程复制整个目录到本地 scp -r 用户名@远程服务器IP或域名:/远程路径/整个目录/ /本地路径/
  4. 如果SSH端口不是默认的22(比如是2222): 注意,scp的端口参数是大写-P,跟ssh命令的小写-p不一样哦!别搞混了! scp -P 2222 /本地文件.txt myuser@192.168.1.100:~/

优点: 语法简单明了,上手快,安全。 缺点: 对于大文件或大量文件的传输,它是一股脑儿全传,如果中途断了就得重头再来,没有增量传输和断点续传的概念。这时,就该我们的下一位“大神”登场了!


神器二:rsync (Remote Sync) —— 智能高效的“数据同步大师”

rsync,全称Remote Sync,远程同步。这位可不是简单的“搬运工”,它是一位精通“差量计算”和“智能调度”的“数据同步大师”!它最牛的地方在于,它会比较源和目标两边的文件差异,然后只传输那些有变化的部分(或者目标不存在的部分),大大节省了带宽和时间。

啥时候请这位“大师”出山?

当你需要:

  • 同步大型网站目录或大量零散文件。
  • 进行定期的数据备份(比如每天把网站数据同步到备份服务器)。
  • 在网络不稳定的情况下传输大文件(它支持断点续传)。
  • 保持两个目录的精确镜像(包括删除目标处多余的文件)。

可以说,除了最简单的单文件复制,其他稍微复杂点的同步需求,rsync都是首选!

“大师”的“咒语”有点长,但威力无穷!—— 核心语法与常用选项

rsync的选项非常多,但我们日常用好几个核心的就足够了。最常用的组合拳是-avzP

  • -a (archive):归档模式,相当于-rlptgoD(递归、保持符号链接、权限、时间戳、所有者、组、设备文件和特殊文件)。基本上就是尽可能保持源文件的一切属性。
  • -v (verbose):显示详细的传输过程。
  • -z (compress):在传输过程中对数据进行压缩,节省带宽。
  • -P:相当于--partial --progress,显示传输进度,并且支持断点续传(如果传输中断,下次可以接着传)。
  • -h (human-readable):让文件大小等信息以更友好的K、M、G单位显示(通常和-v--progress配合)。

1. 从本地同步到远程服务器:

rsync -avzPh /本地路径/源目录/ 用户名@远程服务器IP或域名:/远程路径/目标目录/
# 示例:把本地的 /var/www/my_website整个目录(包括子目录和文件)同步到远程服务器的 /backup/website/ 目录下
rsync -avzPh /var/www/my_website/ myuser@192.168.1.100:/backup/website/

重要小贴士:源目录路径末尾的斜杠/非常关键!

<ul>
    <li>如果源路径是/path/source/(带斜杠),rsync会把source目录下的<strong>内容</strong>同步到目标目录。</li>
    <li>如果源路径是/path/source(不带斜杠),rsync会把source目录<strong>本身</strong>(连同其下的内容)在目标目录下创建一个同名目录再同步。</li>
</ul>

这个小细节经常让新手“掉坑”,一定要注意!

2. 从远程服务器同步到本地:

rsync -avzPh 用户名@远程服务器IP或域名:/远程路径/源目录/ /本地路径/目标目录/

3. 实现“镜像”同步(让目标目录和源目录完全一样,目标多余的会被删除):

加上--delete参数。但使用--delete前务必小心, 先用-n (或--dry-run) 参数模拟运行一下,看看它打算删除哪些文件,确认无误后再去掉-n正式执行!

# 模拟运行,看看会发生什么
rsync -avzPhn --delete /本地路径/源目录/ 用户名@远程服务器IP或域名:/远程路径/目标目录/
# 确认无误后,去掉 -n
rsync -avzPh --delete /本地路径/源目录/ 用户名@远程服务器IP或域名:/远程路径/目标目录/

4. 排除某些文件或目录:

--exclude参数。比如,不想同步日志文件和缓存目录:

rsync -avzPh --exclude='*.log' --exclude='cache/' /本地路径/源目录/ 用户名@远程服务器IP或域名:/远程路径/目标目录/

优点: 智能高效(只传差异),功能强大(保持属性、压缩、排除、删除),支持断点续传,非常适合备份和大规模同步。 缺点: 选项参数较多,初上手可能觉得比scp复杂一点点。但一旦掌握,你会爱不释手!


神器三:sftp (SSH File Transfer Protocol) —— 交互式的“安全FTP探险家”

sftp,安全文件传输协议。你可以把它看作是传统FTP的“安全升级版”,并且还带点命令行探险的乐趣。它提供了一个交互式的界面,让你可以在远程服务器上像操作本地文件系统一样浏览目录、上传下载文件。

啥时候请这位“探险家”带路?

当你需要:

  • 在远程服务器上“逛逛”,看看目录结构,找找特定文件。
  • 不确定具体要传哪些文件,想先浏览一下再决定。
  • 需要有选择地上传或下载多个文件或目录,但又不想写复杂的scprsync命令。
  • 想用一种类似FTP的、交互式的方式安全地管理远程文件。

“探险家”的命令行“罗盘”与“工具包”—— 交互式操作

1. 连接到SFTP服务器:

sftp 用户名@远程服务器IP或域名
# 如果SSH端口不是默认的22,比如是2222:
sftp -P 2222 用户名@远程服务器IP或域名

连接成功后,你会看到一个sftp>这样的提示符,表示你已经进入了SFTP的交互环境,默认的远程当前目录是用户的家目录。

2. 常用的交互命令 (很多和本地shell命令或FTP命令相似):

  • 导航与查看 (远程):
    • pwd:显示远程服务器上的当前工作目录。
    • ls, ls -l:列出远程当前目录的内容。
    • cd 目录名:切换远程服务器上的目录。
  • 导航与查看 (本地):
    • lpwd:显示本地电脑上的当前工作目录。
    • lls, lls -l:列出本地当前目录的内容。
    • lcd 目录名:切换本地电脑上的目录。
  • 文件传输:
    • get 远程文件名 [本地文件名]:从服务器下载文件到本地。如果省略本地文件名,则使用原文件名。
    • put 本地文件名 [远程文件名]:从本地上传文件到服务器。
    • mget 远程模式*:下载多个文件(支持通配符,如mget *.txt)。
    • mput 本地模式*:上传多个文件。
    • reget / reput:尝试断点续传下载/上传(并非所有SFTP服务器都完美支持)。
  • 目录与文件操作 (远程):
    • mkdir 目录名:在远程服务器创建目录。
    • rmdir 目录名:删除远程空目录。
    • rm 文件名:删除远程文件。
    • rename 旧文件名 新文件名:重命名远程文件。
  • 其他:
    • help?:显示帮助信息。
    • exitquitbye:断开连接并退出SFTP。

优点: 安全,交互性强,操作方式类似FTP比较容易上手,适合需要浏览和选择性操作文件的场景。 缺点: 对于大规模、自动化的文件同步任务,不如rsync高效和方便。脚本化能力也较弱。


三“神器”大PK:什么时候用哪个?一张表看明白!

特性/场景scp (闪送快递员)rsync (数据同步大师)sftp (安全FTP探险家)
核心功能简单、快速的单向文件/目录复制高效、智能的文件/目录同步与备份交互式的文件浏览、上传下载与管理
安全性高 (基于SSH)高 (基于SSH)高 (基于SSH)
效率小文件快,大文件或多文件一般非常高,尤其适合大文件、多文件、增量同步交互操作方便,但批量传输效率不如rsync
增量传输是 (核心优势!)部分客户端/服务器可能支持reget/reput,但非核心
断点续传是 (通过-P参数)部分客户端/服务器可能支持reget/reput
保持文件属性有限 (如-p可保持时间戳和模式)非常好 (通过-a参数,可保持权限、时间、所有者等)取决于客户端和服务器实现
交互性无 (命令执行完就结束)无 (除非你用--progress看进度)非常强 (核心优势!)
复杂度非常简单选项较多,初学稍复杂,但常用组合固定命令类似FTP和shell,相对易学
适用场景举例上传一个配置文件、下载一个日志文件、脚本快速拷贝网站整体备份、代码部署与同步、大型数据集迁移、保持开发/生产环境文件一致登录服务器后想先看看有哪些文件再决定下载哪个、需要选择性地上传一组图片、安全地替代传统FTP操作


安全第一,永不松懈!

最后,Hostol还是要再啰嗦一句:这三位“大神”虽然身怀绝技,但它们的“神力”都源于SSH的安全保障。所以,确保你的SSH服务本身是安全的(比如禁用root密码登录、强制使用SSH密钥、修改默认端口、部署Fail2Ban等),才是让这些文件传输工具真正发挥“神效”的前提哦!


怎么样,了解了scprsyncsftp这三位“服务器搬运工”的看家本领和适用场景后,是不是感觉以后在服务器和本地之间“乾坤大挪移”文件,都变得胸有成竹了?告别那些又慢又不安全的“土方法”吧!从今天起,把这三件“神器”收入你的命令行工具箱,让它们为你的服务器管理工作插上效率和安全的翅膀!如果你在使用过程中还有什么心得或者疑问,欢迎随时来Hostol的评论区和我们一起交流探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值