Files
orico-official-website/scripts/QUICK_START.md
jsasg 60177fe0b4
Some checks failed
Gitea Actions Official-website / deploy-dev (push) Failing after 3s
feat: 图片迁移脚本
2025-12-20 17:35:18 +08:00

187 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 图片迁移脚本快速开始指南
## 概述
这是一个通过SSH将本地图片迁移到远程服务器的Python脚本。支持保持相对路径结构自动创建目录批量处理图片文件。
## 环境要求
- Python 3.6+
- paramiko库 (SSH客户端库)
## 快速开始
### 1. 安装依赖
```bash
cd /var/www/html/orico-official-website/scripts
pip install -r requirements.txt
```
### 2. 创建配置文件
```bash
# 创建示例配置文件
python image_migrate.py --create-config config.json
```
编辑生成的 `config.json` 文件,填写目标服务器信息:
- 修改 `target.ssh` 部分的目标服务器地址、用户名、密码/密钥
- 设置 `source.base_dir` 为本地图片目录路径
### 3. 准备图片路径列表
创建 `images.txt` 文件,每行一个相对路径:
```txt
uploads/products/2024/01/product1.jpg
uploads/products/2024/01/product2.jpg
assets/images/logo.png
uploads/banners/main-banner.jpg
```
### 4. 执行迁移
```bash
python image_migrate.py --config config.json --input images.txt --verbose
```
## 配置文件示例(本地源)
```json
{
"source": {
"type": "local",
"base_dir": "/var/www/html/orico-official-website/public/uploads"
},
"target": {
"type": "ssh",
"base_dir": "/var/www/html/images",
"ssh": {
"host": "your-server.com",
"port": 22,
"username": "deploy",
"password": "your_password",
"key_file": "/path/to/private/key"
}
}
}
```
## 常用命令
### 基本迁移
```bash
python image_migrate.py --config config.json --input images.txt
```
### 详细输出模式
```bash
python image_migrate.py --config config.json --input images.txt --verbose
```
### 覆盖已存在的文件
```bash
python image_migrate.py --config config.json --input images.txt --overwrite
```
### 直接从命令行指定文件
```bash
python image_migrate.py --config config.json \
"uploads/test1.jpg" \
"uploads/test2.jpg" \
"assets/logo.png"
```
### 不使用配置文件,直接指定参数
```bash
python image_migrate.py \
--source-type local \
--source-dir /path/to/local/images \
--target-host server.example.com \
--target-user username \
--target-dir /remote/path/images \
--input images.txt \
--verbose
```
## 常见场景
### 场景1迁移网站上传目录
```bash
# 配置文件中的源目录设置为:
"source": {
"type": "local",
"base_dir": "/var/www/html/orico-official-website/public/uploads"
}
# 执行迁移
python image_migrate.py --config config.json --input uploads_list.txt
```
### 场景2从数据库导出路径并迁移
```bash
# 从数据库导出图片路径
mysql -u username -p database -e "SELECT image_path FROM products" --skip-column-names > products.txt
# 清理路径(如果需要)
sed -i 's/^\.\///' products.txt
# 迁移图片
python image_migrate.py --config config.json --input products.txt --verbose
```
### 场景3迁移整个目录结构
```bash
# 使用find命令生成所有图片文件列表
find /path/to/local/images -type f \( -name "*.jpg" -o -name "*.png" -o -name "*.gif" -o -name "*.webp" \) | sed 's|^/path/to/local/images/||' > all_images.txt
# 迁移所有图片
python image_migrate.py --config config.json --input all_images.txt
```
## 路径说明
- **相对路径**:相对于配置文件中指定的 `base_dir`
- **示例**:如果 `base_dir``/var/www/html/images`,相对路径 `uploads/test.jpg` 对应完整路径 `/var/www/html/images/uploads/test.jpg`
- **目标路径**:在目标服务器上保持相同的相对路径结构
## 故障排查
### 1. 连接失败
```bash
# 测试SSH连接
ssh -p 22 username@server.example.com
# 检查配置文件中的主机、端口、用户名是否正确
```
### 2. 文件不存在
```bash
# 检查本地文件是否存在
ls -la /var/www/html/orico-official-website/public/uploads/uploads/test.jpg
# 使用详细模式查看完整路径
python image_migrate.py --config config.json --input images.txt --verbose
```
### 3. 权限不足
```bash
# 检查本地文件读取权限
ls -la /path/to/local/images
# 检查目标目录写入权限通过SSH
ssh username@server.example.com "ls -la /remote/path/images"
```
## 注意事项
1. 建议使用SSH密钥认证而非密码更安全
2. 首次使用前,建议用少量文件测试
3. 大文件传输可能需要较长时间,建议分批处理
4. 使用 `--verbose` 参数可查看详细传输信息
5. 脚本会自动创建目标服务器上的目录结构
## 获取帮助
```bash
# 查看完整帮助
python image_migrate.py --help
# 查看详细使用说明
cat README.md
```
---
*快速开始指南更新日期2024年*
*脚本位置:/var/www/html/orico-official-website/scripts/*