Update 试验用脚本
This commit is contained in:
213
试验用脚本
213
试验用脚本
@@ -1,173 +1,86 @@
|
|||||||
cat > instant-r2-setup.sh << 'EOF'
|
cat > fix-r2-setup.sh << 'EOF'
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Cloudflare R2 一步到位配置脚本
|
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
echo " Cloudflare R2 一键配置脚本"
|
echo " Cloudflare R2 修复配置脚本"
|
||||||
echo "========================================"
|
echo "========================================"
|
||||||
|
|
||||||
# 颜色定义
|
# 使用你提供的准确信息
|
||||||
RED='\033[0;31m'
|
|
||||||
GREEN='\033[0;32m'
|
|
||||||
YELLOW='\033[1;33m'
|
|
||||||
BLUE='\033[0;34m'
|
|
||||||
NC='\033[0m'
|
|
||||||
|
|
||||||
log() { echo -e "${GREEN}[✓]${NC} $1"; }
|
|
||||||
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
|
|
||||||
error() { echo -e "${RED}[✗]${NC} $1"; }
|
|
||||||
|
|
||||||
# 使用你提供的固定信息
|
|
||||||
REMOTE_NAME="r2-storage"
|
REMOTE_NAME="r2-storage"
|
||||||
ACCOUNT_ID="c5F-lD9CfUvvI5wNsepuS-ghXU_exa0bgiwBgM_h"
|
|
||||||
ACCESS_KEY="1204a46f27d9490d0fa37f928d6680a4"
|
ACCESS_KEY="1204a46f27d9490d0fa37f928d6680a4"
|
||||||
SECRET_KEY="54f24822de0265d98e8c2507d40250ba5254426b4c3b6a6745d5e688c832ac90"
|
SECRET_KEY="54f24822de0265d98e8c2507d40250ba5254426b4c3b6a6745d5e688c832ac90"
|
||||||
ENDPOINT="https://bb6985de87fb012b3c626aa13eda6797.r2.cloudflarestorage.com"
|
ENDPOINT="https://bb6985de87fb012b3c626aa13eda6797.r2.cloudflarestorage.com"
|
||||||
|
|
||||||
# 安装 rclone
|
echo "使用以下配置:"
|
||||||
install_rclone() {
|
echo "Endpoint: $ENDPOINT"
|
||||||
if command -v rclone &> /dev/null; then
|
echo "Access Key: ${ACCESS_KEY:0:8}..."
|
||||||
log "rclone 已安装"
|
echo "Secret Key: ${SECRET_KEY:0:8}..."
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
log "安装 rclone..."
|
|
||||||
curl -s https://rclone.org/install.sh | sudo bash > /dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
# 自动配置 R2
|
# 删除旧配置
|
||||||
configure_r2() {
|
echo "删除旧配置..."
|
||||||
log "配置 Cloudflare R2..."
|
rclone config delete "$REMOTE_NAME" --quiet > /dev/null 2>&1
|
||||||
|
|
||||||
|
# 方法1: 使用 Cloudflare provider (推荐)
|
||||||
|
echo "方法1: 使用 Cloudflare provider..."
|
||||||
|
rclone config create "$REMOTE_NAME" s3 \
|
||||||
|
provider Cloudflare \
|
||||||
|
access_key_id "$ACCESS_KEY" \
|
||||||
|
secret_access_key "$SECRET_KEY" \
|
||||||
|
endpoint "$ENDPOINT" \
|
||||||
|
region auto \
|
||||||
|
acl private \
|
||||||
|
--non-interactive
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "✓ 方法1配置成功"
|
||||||
|
else
|
||||||
|
echo "方法1失败,尝试方法2..."
|
||||||
|
|
||||||
# 删除旧配置
|
# 方法2: 使用 Other provider
|
||||||
rclone config delete "$REMOTE_NAME" --quiet > /dev/null 2>&1
|
|
||||||
|
|
||||||
# 创建新配置
|
|
||||||
rclone config create "$REMOTE_NAME" s3 \
|
rclone config create "$REMOTE_NAME" s3 \
|
||||||
provider Cloudflare \
|
provider Other \
|
||||||
access_key_id "$ACCESS_KEY" \
|
access_key_id "$ACCESS_KEY" \
|
||||||
secret_access_key "$SECRET_KEY" \
|
secret_access_key "$SECRET_KEY" \
|
||||||
endpoint "$ENDPOINT" \
|
endpoint "$ENDPOINT" \
|
||||||
region auto \
|
region "" \
|
||||||
acl private \
|
acl private \
|
||||||
--non-interactive
|
--non-interactive
|
||||||
|
fi
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
log "R2 配置成功"
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
error "R2 配置失败"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# 测试配置
|
# 测试配置
|
||||||
test_configuration() {
|
echo "测试配置..."
|
||||||
log "测试连接..."
|
echo "1. 测试基本连接..."
|
||||||
|
if rclone lsd "$REMOTE_NAME": --config /root/.config/rclone/rclone.conf 2>/dev/null; then
|
||||||
# 先尝试列出存储桶
|
echo "✓ 基本连接成功"
|
||||||
if rclone lsd "$REMOTE_NAME": &>/dev/null; then
|
else
|
||||||
log "连接测试成功"
|
echo "基本连接失败,但配置可能仍然有效"
|
||||||
return 0
|
echo "请手动创建存储桶后测试"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
warn "基础连接测试失败,尝试创建测试存储桶..."
|
|
||||||
|
|
||||||
# 创建测试存储桶
|
|
||||||
TEST_BUCKET="test-bucket-$(date +%s)"
|
|
||||||
if rclone mkdir "$REMOTE_NAME:$TEST_BUCKET" &>/dev/null; then
|
|
||||||
log "测试存储桶创建成功"
|
|
||||||
# 上传测试文件
|
|
||||||
echo "R2 Test File - $(date)" > /tmp/r2-test.txt
|
|
||||||
if rclone copy /tmp/r2-test.txt "$REMOTE_NAME:$TEST_BUCKET/" &>/dev/null; then
|
|
||||||
log "文件上传测试成功"
|
|
||||||
rm -f /tmp/r2-test.txt
|
|
||||||
# 清理测试存储桶
|
|
||||||
rclone purge "$REMOTE_NAME:$TEST_BUCKET" &>/dev/null
|
|
||||||
rclone rmdir "$REMOTE_NAME:$TEST_BUCKET" &>/dev/null
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
error "配置测试失败"
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# 创建使用脚本
|
# 显示使用说明
|
||||||
create_scripts() {
|
echo ""
|
||||||
log "创建管理脚本..."
|
echo "========================================"
|
||||||
|
echo " 配置完成!下一步操作"
|
||||||
# 备份脚本
|
echo "========================================"
|
||||||
cat > r2-backup.sh << 'SCRIPTEOF'
|
echo ""
|
||||||
#!/bin/bash
|
echo "1. 在 Cloudflare 控制台创建存储桶:"
|
||||||
REMOTE="r2-storage"
|
echo " - 登录 https://dash.cloudflare.com"
|
||||||
BUCKET="${1:-default-bucket}"
|
echo " - 进入 R2 → 创建存储桶"
|
||||||
SOURCE="${2:-/opt/1panel}"
|
echo " - 输入存储桶名称(如: my-backups)"
|
||||||
BACKUP_FILE="/tmp/backup-$(date +%Y%m%d_%H%M%S).tar.gz"
|
echo ""
|
||||||
|
echo "2. 测试配置(创建存储桶后):"
|
||||||
echo "备份: $SOURCE → R2:$BUCKET"
|
echo " rclone lsd $REMOTE_NAME:"
|
||||||
tar -czf "$BACKUP_FILE" -C "$SOURCE" . && \
|
echo " rclone mkdir $REMOTE_NAME:你的存储桶名称"
|
||||||
rclone copy "$BACKUP_FILE" "$REMOTE:$BUCKET/backups/" && \
|
echo " rclone ls $REMOTE_NAME:你的存储桶名称"
|
||||||
echo "备份成功: $(basename $BACKUP_FILE)" && \
|
echo ""
|
||||||
rm -f "$BACKUP_FILE"
|
echo "3. 如果仍有问题,检查:"
|
||||||
SCRIPTEOF
|
echo " - API 令牌是否有足够权限"
|
||||||
|
echo " - 存储桶是否已创建"
|
||||||
# 管理脚本
|
echo " - 网络连接是否正常"
|
||||||
cat > r2-manage.sh << 'MANAGEEOF'
|
echo ""
|
||||||
#!/bin/bash
|
echo "配置文件名: $REMOTE_NAME"
|
||||||
REMOTE="r2-storage"
|
echo "Endpoint: $ENDPOINT"
|
||||||
BUCKET="$1"
|
|
||||||
CMD="$2"
|
|
||||||
|
|
||||||
case "$CMD" in
|
|
||||||
"list") rclone lsd "$REMOTE:$BUCKET" ;;
|
|
||||||
"ls") rclone ls "$REMOTE:$BUCKET" ;;
|
|
||||||
"mkdir") rclone mkdir "$REMOTE:$BUCKET/$3" ;;
|
|
||||||
"upload") rclone copy "$3" "$REMOTE:$BUCKET/" ;;
|
|
||||||
"download") rclone copy "$REMOTE:$BUCKET/$3" "./" ;;
|
|
||||||
*) echo "用法: $0 <bucket> <list|ls|mkdir|upload|download>" ;;
|
|
||||||
esac
|
|
||||||
MANAGEEOF
|
|
||||||
|
|
||||||
chmod +x r2-backup.sh r2-manage.sh
|
|
||||||
}
|
|
||||||
|
|
||||||
# 显示完成信息
|
|
||||||
show_complete() {
|
|
||||||
echo
|
|
||||||
echo "========================================"
|
|
||||||
echo " 配置完成!"
|
|
||||||
echo "========================================"
|
|
||||||
echo
|
|
||||||
echo "远程名称: $REMOTE_NAME"
|
|
||||||
echo "Endpoint: $ENDPOINT"
|
|
||||||
echo
|
|
||||||
echo "常用命令:"
|
|
||||||
echo " rclone lsd $REMOTE_NAME: # 列出存储桶"
|
|
||||||
echo " ./r2-backup.sh my-bucket /opt/1panel # 备份目录"
|
|
||||||
echo " ./r2-manage.sh my-bucket list # 管理文件"
|
|
||||||
echo
|
|
||||||
echo "现在你可以:"
|
|
||||||
echo "1. 在 Cloudflare 控制台创建存储桶"
|
|
||||||
echo "2. 使用上面的命令进行备份"
|
|
||||||
echo
|
|
||||||
}
|
|
||||||
|
|
||||||
# 主流程
|
|
||||||
main() {
|
|
||||||
install_rclone
|
|
||||||
if configure_r2 && test_configuration; then
|
|
||||||
create_scripts
|
|
||||||
show_complete
|
|
||||||
else
|
|
||||||
error "自动配置失败"
|
|
||||||
echo "请检查:"
|
|
||||||
echo "1. 网络连接"
|
|
||||||
echo "2. API 密钥权限"
|
|
||||||
echo "3. 存储桶是否已创建"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main
|
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod +x instant-r2-setup.sh && ./instant-r2-setup.sh
|
chmod +x fix-r2-setup.sh
|
||||||
|
./fix-r2-setup.sh
|
||||||
|
|||||||
Reference in New Issue
Block a user