作为前端开发/运维,经常需要手动更新服务器上的静态资源,从备份旧资源到上传新资源、解压替换,每一步都不能出错------尤其是生产环境,一个误操作可能导致服务异常。
本文以 Mac 电脑为例,全程基于 SSH 操作(无需额外安装复杂工具,系统自带终端即可),完整覆盖「登录服务器 → 备份旧前端资源 → 上传新资源压缩包 → 清空旧资源 → 解压新资源」全流程,新手也能跟着一步到位,附常见报错解决方案,彻底避开 SFTP 命令兼容问题。
适用场景:前端静态资源(Vue/React 打包后的 dist 包,本文以 szyd.zip 为例)更新、服务器文件备份,服务器系统为 Linux(CentOS/Ubuntu 通用)。
一、前置准备(必看)
- 服务器信息:需知道服务器 IP 地址、登录用户名(如 root)、登录密码、SSH 端口(默认 22,若修改过需记好) ;
- 本地准备:Mac 电脑(自带终端,无需额外安装工具)、新前端静态资源压缩包(本文为 szyd.zip);
- 提前确认:服务器上前端资源存放路径(本文以
/usr/local/nginx为例,html 文件夹为前端资源根目录,html_backup 为备份目录); - 核心前提:已做好旧资源备份(本文会详细步骤,避免误删无法恢复)。
二、全程实操步骤(按顺序执行,不要跳步)
步骤 1:Mac 终端连接服务器(SSH 方式,全程唯一连接方式)
Mac 自带终端原生支持 SSH 连接,无需装任何额外工具,操作稳定、无命令兼容问题,是服务器操作的首选方式。
- 打开 Mac 终端(聚焦搜索输入「终端」,回车打开);
- 输入 SSH 登录命令,替换为自己的服务器信息:
# 格式:ssh 用户名@服务器IP -P 端口(默认22,可省略) ``ssh root@192.168.1.100 -P 22 - 输入服务器登录密码(输入时无任何回显,直接输完回车即可,不要慌);
- 登录成功后,终端提示符会变成
[root@localhost ~]#(不同服务器可能略有差异),表示已进入服务器 SSH 交互模式,可开始操作服务器文件。
避坑点:若提示「Connection refused」,检查服务器端口是否开放、SSH 服务是否运行(执行 systemctl status sshd 可查看),或确认端口是否修改(非 22 需指定 -P 端口)。
步骤 2:定位到前端资源目录,确认文件
本文前端资源存放在 /usr/local/nginx 目录,先进入该目录并确认文件是否存在,避免后续操作路径错误。
bash
# 进入服务器前端资源根目录(替换为自己的实际路径)
cd /usr/local/nginx
# 查看当前目录下的文件(确认 html、szyd.zip 存在)
ls -l
执行 ls -l 后,应能看到以下文件/文件夹(和自己的实际情况对应):
css
client_body_temp conf fastcgi_temp html
html_backup logs proxy_temp sbin
scgi_temp uwsgi_temp szyd.zip
关键确认:html(旧前端资源)、szyd.zip(新前端压缩包)、html_backup(备份目录)均存在,若未上传新压缩包,先执行步骤 4 上传。
步骤 3:备份旧前端资源(核心,避免误删无法恢复)
备份思路:将 html 文件夹下的所有旧资源,拷贝到 html_backup 目录下的日期文件夹(如 20260227,按备份日期命名,方便后续追溯),SSH 原生支持递归拷贝,无需担心兼容问题。
- 进入备份目录 html_backup,创建日期备份文件夹(以 20260227 为例):
# 进入备份目录 `` cd html_backup ```` # 创建日期文件夹(命名格式:年-月-日 或 年月日,方便区分) `` mkdir 20260227 ```` # 回到 /usr/local/nginx 目录(后续操作需要) ``cd /usr/local/nginx - 递归拷贝 html 下的所有旧资源到备份文件夹(核心备份命令,SSH 稳定支持):
# 递归拷贝 html 所有内容到备份文件夹(-r 表示递归,覆盖所有文件/子文件夹) ``cp -r html/* html_backup/20260227/ - 备份验证:执行以下命令,能看到 html 里的所有旧文件/文件夹,说明备份成功:
ls html_backup/20260227/
重要提醒:备份完成前,绝对不要删除 html 里的旧资源!确认备份成功后,再进行下一步,避免误删后无法恢复。
步骤 4:上传新前端压缩包(若未上传)
若还未将新前端压缩包(szyd.zip)上传到服务器 /usr/local/nginx 目录,在 Mac 终端(保持 SSH 登录状态)执行以下命令,将本地压缩包上传到服务器:
ruby
# 格式:scp -P 端口 本地压缩包路径 用户名@服务器IP:服务器目标路径
# 示例(默认端口22,可省略 -P 22;若端口修改,替换为实际端口)
scp -P 22 /Users/你的Mac用户名/Desktop/szyd.zip root@192.168.1.100:/usr/local/nginx/
说明:
/Users/你的Mac用户名/Desktop/szyd.zip是 Mac 本地压缩包的路径(可在访达中找到文件,右键「显示简介」查看路径);- 上传过程中会显示进度条,上传完成后,执行
ls /usr/local/nginx确认 szyd.zip 存在。
步骤 5:清空 html 文件夹的旧资源(关键步骤)
备份成功后,清空 html 文件夹内的所有旧资源(保留 html 文件夹本身,避免误删文件夹导致 Nginx 报错),SSH 命令执行稳定,无需担心权限或兼容问题。
bash
# 确保当前在 /usr/local/nginx 目录(SSH 模式下)
cd /usr/local/nginx
# 清空 html 内所有旧资源(仅删内部内容,不删文件夹,-rf 表示强制递归删除)
rm -rf html/*
验证清空:执行 ls html,输出为空,说明旧资源已删干净。
禁止执行:rm -rf html/(多了一个 /,会删除整个 html 文件夹,导致 Nginx 无法访问前端资源,后果严重!)。
步骤 6:解压新前端压缩包到 html 文件夹
将上传的 szyd.zip 压缩包,解压到 html 文件夹,完成新资源替换,SSH 模式下执行解压命令,兼容所有 Linux 系统。
- 执行解压命令(确保当前在 /usr/local/nginx 目录):
# 解压 szyd.zip 到 html 文件夹(-d 指定解压目标目录) ``unzip szyd.zip -d html/ - 异常处理:若提示
unzip: command not found(服务器未安装 unzip 工具),执行以下命令安装(根据服务器系统二选一):# CentOS/RHEL 系统 `` yum install unzip -y ```` # Ubuntu/Debian 系统 `` apt update && apt install unzip -y ```` # 安装完成后,重新执行解压命令 ``unzip szyd.zip -d html/ - 解压验证:执行
ls html,能看到新前端资源(如 index.html、css、js、dist 等),说明解压成功。
步骤 7:(可选)修复文件权限(避免 Nginx 访问报错)
解压后的文件可能权限不足,导致 Nginx 无法读取前端资源,出现 403 报错,在 SSH 模式下执行以下命令赋予权限:
bash
# 进入 /usr/local/nginx 目录
cd /usr/local/nginx
# 赋予 html 文件夹及内部文件可读可执行权限(-R 递归应用到所有子文件/文件夹)
chmod -R 755 html/
# 赋予 Nginx 运行用户权限(多数服务器 Nginx 运行用户为 www,可替换为 nginx)
chown -R www:www html/
步骤 8:完成更新,验证效果
所有操作完成后,执行以下命令确认 Nginx 服务正常(避免权限修改导致服务异常):
bash
# 查看 Nginx 服务状态
systemctl status nginx
# 若服务未运行,启动 Nginx
# systemctl start nginx
# 若修改过配置,重启 Nginx
# systemctl restart nginx
最后,打开浏览器,刷新前端网站,若能正常显示新页面,说明静态资源更新成功;若无法访问,检查 Nginx 服务状态和文件权限。
三、常见报错及解决方案(避坑合集)
1. 登录提示「Connection refused」
原因:服务器 SSH 端口未开放、SSH 服务未运行,或端口修改后未指定;
解决方案:检查服务器防火墙是否开放对应端口(如 22),执行 systemctl status sshd 确认 SSH 服务运行,登录时指定正确端口(ssh root@IP -P 端口)。
2. 解压提示「unzip: command not found」
原因:服务器未安装 unzip 工具;
解决方案:根据服务器系统执行安装命令(CentOS:yum install unzip -y;Ubuntu:apt update && apt install unzip -y)。
3. 刷新网站无法访问,提示 403 Forbidden
原因:html 文件夹或内部文件权限不足,Nginx 无法读取;
解决方案:执行步骤 7 的权限修复命令,确保 html 文件夹权限为 755,且归属 Nginx 运行用户(如 www)。
4. 备份/解压后文件缺失
原因:压缩包损坏,或拷贝/解压时路径错误;
解决方案:重新上传压缩包,执行 unzip -l szyd.zip 检查压缩包内部结构,确认路径正确后重新解压;备份时确保命令为 cp -r html/* html_backup/20260227/。
5. 执行 rm 命令提示「Permission denied」
原因:当前用户无 html 文件夹的删除权限;
解决方案:切换到 root 用户(su root),或在命令前加 sudo(sudo rm -rf html/*)。
四、总结
Mac 环境下通过 SSH 操作服务器,完成前端静态资源备份与更新,核心流程可总结为:
SSH 登录 → 定位目录 → 备份旧资源 → 上传新压缩包 → 清空旧资源 → 解压新资源 → 权限修复 → 验证效果
关键注意点:
- 备份优先,避免误删旧资源,备份文件夹按日期命名,方便后续追溯和回滚;
- 删除旧资源时,务必写
html/*,绝对不要误删 html 文件夹本身; - 全程使用 SSH 方式,无命令兼容问题,操作稳定,适合生产环境使用;
- 解压后记得修复文件权限,避免 Nginx 访问报错,更新后验证 Nginx 服务状态。
这套流程适用于大多数前端静态资源更新场景,无论是开发环境还是生产环境,按步骤执行都能避免踩坑。如果你的服务器路径、压缩包名称不同,只需替换对应参数即可直接套用~
最后,觉得有用的话,欢迎点赞收藏,避免后续需要时找不到!