#!/bin/bash # === 配置项 === SERVER="dxc@172.16.0.198" LOCAL_DIR="Odoo_Archive" REMOTE_TARGET_DIR="/opt/inventory-app/uploads_prod" ARCHIVE_NAME="odoo_images_upload.tar.gz" echo "🚀 开始将本地图像及附件同步至线上存储目录..." # 1. 检查本地文件夹 if [ ! -d "$LOCAL_DIR" ]; then echo "❌ 找不到本地文件夹 $LOCAL_DIR,请确保脚本与该文件夹在同一层级!" exit 1 fi # 2. 本地打包 (使用 -C 保证解压后没有多余的外层文件夹) echo "[1/4] 正在本地打包所有图片和文件..." tar -czf $ARCHIVE_NAME -C $LOCAL_DIR . # 3. 传输到生产环境的 /tmp 目录 echo "[2/4] 正在传输到服务器临时目录 /tmp (可能需要输入服务器密码)..." scp $ARCHIVE_NAME $SERVER:/tmp/$ARCHIVE_NAME # 4. 服务器解压并设置权限 (核心:纯文件覆盖/追加,不碰数据库) echo "[3/4] 正在远端部署图像到目标文件夹 (可能需要输入 sudo 密码)..." ssh -t $SERVER "sudo mkdir -p $REMOTE_TARGET_DIR && \ echo '>> 正在将图像释放到 $REMOTE_TARGET_DIR ...' && \ sudo tar -xzf /tmp/$ARCHIVE_NAME -C $REMOTE_TARGET_DIR && \ echo '>> 正在重置文件读写权限,确保线上服务可以正常显示图片...' && \ sudo chmod -R 755 $REMOTE_TARGET_DIR && \ sudo rm /tmp/$ARCHIVE_NAME" # 5. 清理本地压缩包 echo "[4/4] 正在清理本地临时文件..." rm $ARCHIVE_NAME echo "✅ 图像及附件物理转移全部完成!线上存储内容已更新。"