用Linux 命令从 Gitee 下载源码解压到指定文件夹通过 SSH 上传到云服务器的指定目
·
以下是完整的 Linux 命令流程,用于:
- 从 Gitee 下载源码为 zip 格式
- 解压到指定文件夹
- 通过 SSH 上传到云服务器的指定目录
✅ 前提条件
- 本地机器运行 Linux 或 macOS(或 WSL)
- 已安装
wget、unzip、scp或rsync(通常默认已安装) - 可访问 Gitee
- 有云服务器的 SSH 访问权限(用户名、IP、端口、目标路径)
🔧 完整命令流程(附详细解释)
# 1. 定义变量(便于修改)
REPO_URL="https://gitee.com/用户名/仓库名/repository/archive/master.zip"
ZIP_FILE="repo-master.zip"
LOCAL_DIR="/tmp/myproject"
TARGET_DIR="/home/user/myproject"
SERVER_USER="user"
SERVER_IP="123.456.789.123"
SERVER_PORT="22"
# 2. 创建本地目标文件夹
mkdir -p $LOCAL_DIR
# 3. 下载 Gitee 仓库的 zip 包
wget -O $ZIP_FILE $REPO_URL
# 4. 解压 zip 文件到指定本地目录
unzip -o $ZIP_FILE -d $LOCAL_DIR
# 5. 使用 scp 将文件上传到云服务器
scp -r -P $SERVER_PORT $LOCAL_DIR/* $SERVER_USER@$SERVER_IP:$TARGET_DIR
# 6. (可选)清理本地临时文件
rm -f $ZIP_FILE
rm -rf $LOCAL_DIR
📌 详细解释
🔹 第一步:定义变量
REPO_URL="https://gitee.com/用户名/仓库名/repository/archive/master.zip"
- Gitee 提供了直接下载某个分支(如
master或main)为 zip 的链接。 - 示例:若仓库是
https://gitee.com/dogedoge/test-project,则下载链接为:https://gitee.com/dogedoge/test-project/repository/archive/master.zip
💡 你可以在 Gitee 页面点击 “克隆/下载” → “下载 ZIP” 获取实际链接。
🔹 第二步:创建本地目录
mkdir -p $LOCAL_DIR
-p表示如果父目录不存在则自动创建。- 这个目录将用来存放解压后的代码。
🔹 第三步:下载 ZIP 包
wget -O $ZIP_FILE $REPO_URL
wget是下载工具。-O指定保存的文件名(覆盖默认命名)。- 如果提示
wget: command not found,请先安装:sudo apt install wget -y # Ubuntu/Debian sudo yum install wget -y # CentOS/RHEL
🔹 第四步:解压 ZIP 文件
unzip -o $ZIP_FILE -d $LOCAL_DIR
unzip解压 zip 文件。-o表示覆盖已有文件,不提示。-d $LOCAL_DIR指定解压目标目录。- 如果没有
unzip,安装:sudo apt install unzip -y
⚠️ 注意:Gitee 下载的 zip 文件通常会把所有内容放在一个子目录中,例如
repository-master-xxxxx/。如果你希望只传源码内容,可能需要进入该子目录再复制。
🔹 第五步:上传到云服务器
scp -r -P $SERVER_PORT $LOCAL_DIR/* $SERVER_USER@$SERVER_IP:$TARGET_DIR
scp是安全拷贝命令,基于 SSH。-r表示递归复制整个目录。-P指定 SSH 端口(注意大写 P),例如 22、2222 等。$LOCAL_DIR/*表示目录下的所有文件(避免传外层目录本身)- 目标格式:
用户@IP:路径
🔐 执行时会提示输入密码。如需免密,请配置 SSH 公钥认证。
✅ 配置免密登录(推荐)
# 生成密钥(如未生成)
ssh-keygen -t rsa -b 2048
# 上传公钥到服务器(实现免密)
ssh-copy-id -p $SERVER_PORT $SERVER_USER@$SERVER_IP
之后 scp 和 ssh 就不需要每次输入密码了。
🔹 第六步:清理临时文件(可选)
rm -f $ZIP_FILE
rm -rf $LOCAL_DIR
- 删除本地下载和解压的文件,节省空间。
-f强制删除,不报错。-rf递归强制删除目录。
🔄 替代方案:使用 rsync(更高效同步)
如果你要频繁上传,建议使用 rsync:
rsync -avz -e "ssh -p $SERVER_PORT" $LOCAL_DIR/ $SERVER_USER@$SERVER_IP:$TARGET_DIR
-a归档模式(保留权限、时间等)-v显示过程-z压缩传输-e "ssh -p"指定 SSH 端口
🛠️ 实际例子(替换为你自己的信息)
# 示例:下载 Gitee 上的 test-demo 项目主分支
REPO_URL="https://gitee.com/dogedoge/test-demo/repository/archive/main.zip"
ZIP_FILE="test-demo.zip"
LOCAL_DIR="/tmp/test-demo"
TARGET_DIR="/var/www/html/test-demo"
SERVER_USER="ubuntu"
SERVER_IP="49.123.456.78"
SERVER_PORT="22"
mkdir -p $LOCAL_DIR
wget -O $ZIP_FILE $REPO_URL
unzip -o $ZIP_FILE -d $LOCAL_DIR
scp -r -P $SERVER_PORT $LOCAL_DIR/* $SERVER_USER@$SERVER_IP:$TARGET_DIR
rm -f $ZIP_FILE
rm -rf $LOCAL_DIR
❗常见问题与解决
| 问题 | 解决方法 |
|---|---|
wget: command not found | sudo apt install wget |
unzip: command not found | sudo apt install unzip |
Permission denied | 检查服务器目录权限,或使用 sudo |
Connection refused | 检查服务器 IP、端口、防火墙、SSH 是否开启 |
| Gitee 下载限速 | 登录后使用私人令牌生成授权下载链接(进阶) |
✅ 总结
这套脚本适用于自动化部署简单项目。你可以将其保存为 .sh 脚本文件运行:
chmod +x deploy.sh
./deploy.sh
如需进一步自动化(比如定时拉取、构建),可结合 cron 或 CI/CD 工具。
需要我帮你生成一个 可直接运行的脚本模板 吗?只需提供:
- Gitee 仓库地址
- 分支名(如 main/master)
- 服务器 IP、用户名、端口、目标路径
更多推荐


所有评论(0)