Centos7使用rclone和七牛对象存储数据同步(手动安装/复杂)

注意事项:上传时可能也会有一些请求,要注意费用飙升!

1. 安装 rclone

下载并安装rclone

curl https://rclone.org/install.sh | bash
rclone version #查看版本

2. 配置七牛云存储桶

2.1 创建 rclone 配置文件

mkdir -p /root/.config/rclone
vi /root/.config/rclone/rclone.conf
粘贴以下配置(替换 access_key_id 和 secret_access_key):
[qiniu]
type = s3
provider = Qiniu
access_key_id = PJvF5xiXF6JTtvIZsuIRojd***
secret_access_key = fuH_NRndnhJYRdHb*******
region = cn-east-1
endpoint = s3-cn-east-1.qiniucs.com
storage_class = STANDARD

2.2 测试连接

rclone lsd qiniu:hx99-blog  # 查看存储桶内容
rclone ls qiniu:hx99-blog   #查看文件, 如果成功列出目录或文件,说明配置正确。


3. 挂载存储桶到本地目录

3.1 安装 FUSE(文件系统依赖)

sudo yum install fuse fuse3 -y

3.2 创建挂载目录

sudo mkdir -p /opt/1panel/apps/wordpress/MyBlog-wordpress/data/public_static
sudo chown -R $(whoami):$(whoami) /opt/1panel/apps/wordpress/MyBlog-wordpress/data/public_static

3.3 挂载存储桶到非空目录

rclone mount qiniu:hx99-blog /opt/1panel/apps/wordpress/MyBlog-wordpress/data/public_static \
  --allow-other \
  --allow-non-empty \
  --vfs-cache-mode full \
  --daemon

3.4 验证挂载

df -h | grep public_static  # 检查挂载
ls /opt/1panel/apps/wordpress/MyBlog-wordpress/data/public_static  # 查看合并后的文件

 

4. 实时双向同步方案

4.1 使用 rclone sync 手动同步

# 本地 → 七牛云
rclone sync /opt/1panel/apps/wordpress/MyBlog-wordpress/data/public_static qiniu:hx99-blog -v

# 七牛云 → 本地
rclone sync qiniu:hx99-blog /opt/1panel/apps/wordpress/MyBlog-wordpress/data/public_static -v

4.2 自动同步(脚本)

# 安装 inotify-tools
yum install -y epel-release
yum clean all && yum makecache
yum install -y git inotify-tools

# 创建同步脚本
cat > /root/sync_qiniu.sh <<'EOF'
#!/bin/bash

LOCAL_DIR="/opt/1panel/apps/wordpress/MyBlog-wordpress/data/public_static"
REMOTE="qiniu:hx99-blog"
LAST_SYNC=0

while true; do
    # 监控本地变化 → 同步到远程
    echo "$(date) - 等待本地文件变更..."
    inotifywait -r -e modify,create,delete,move "$LOCAL_DIR"
    echo "$(date) - 检测到本地变更,同步到云端..."
    rclone sync "$LOCAL_DIR" "$REMOTE" -v
    
    # 每60秒强制检查一次远程变更(即使本地无变化)
    NOW=$(date +%s)
    if [ $(($NOW - $LAST_SYNC)) -ge 60 ]; then
        echo "$(date) - 定期检查云端变更..."
        rclone sync "$REMOTE" "$LOCAL_DIR" -v
        LAST_SYNC=$NOW
    fi
    
    sleep 1
done
EOF

# 执行脚本
chmod +x /root/sync_qiniu.sh

4.3 自动同步(Systemd 服务)

sudo tee /etc/systemd/system/rclone-sync.service > /dev/null <<'EOF'
[Unit]
Description=RClone Sync Service (Local → Qiniu)
After=network.target

[Service]
Type=simple
User=root
ExecStart=/bin/bash /root/sync_qiniu.sh
Restart=always
RestartSec=10
StandardOutput=append:/var/log/rclone-sync.log
StandardError=append:/var/log/rclone-sync-error.log

[Install]
WantedBy=multi-user.target
EOF

4.4 启动并启用服务

sudo systemctl daemon-reload
sudo systemctl restart rclone-sync
sudo systemctl enable rclone-sync

4.5 开机自动挂载(Systemd 服务)

sudo tee /etc/systemd/system/rclone-mount.service <<EOF
[Unit]
Description=rclone mount for Qiniu Cloud
After=network.target

[Service]
User=root
ExecStart=/usr/bin/rclone mount qiniu:hx99-blog /opt/1panel/apps/wordpress/MyBlog-wordpress/data/public_static \
  --allow-other \
  --allow-non-empty \
  --vfs-cache-mode full \
  --s3-acl=private
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# 启动服务
sudo systemctl daemon-reload
sudo systemctl start rclone-mount
sudo systemctl enable rclone-mount

4.6 日志查看

tail -f /var/log/rclone-sync.log
journalctl -u rclone-sync -f