diff --git a/install-bitiful-oss.sh b/install-bitiful-oss.sh new file mode 100644 index 0000000..e3ed0a2 --- /dev/null +++ b/install-bitiful-oss.sh @@ -0,0 +1,138 @@ +#!/bin/bash +# ================================================ +# 缤纷云对象存储一键挂载脚本(多平台兼容版) +# 功能:自动安装 bitifs 客户端,配置凭证并挂载对象存储 +# 支持系统:Debian 12 / Ubuntu 22.04 / CentOS 7 +# 版本: 2.1 +# 作者: https://blog.hx99.net | https://gitee.com/cncsrf/bitiful-oss +# ================================================ + +# 颜色定义 +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# 彩色输出函数 +info() { echo -e "${GREEN}[信息]${NC} $1"; } +warn() { echo -e "${YELLOW}[警告]${NC} $1"; } +error() { echo -e "${RED}[错误]${NC} $1"; exit 1; } +title() { echo -e "${BLUE}$1${NC}"; } + +# 检查root权限 +[ "$(id -u)" != "0" ] && error "此脚本需要root权限执行!" + +# 欢迎信息 +title "================================================" +title " 缤纷云(bitiful.com)对象存储一键挂载脚本" +title "================================================" +info " 功能说明:" +info " 1. 自动下载并安装 bitifs 客户端" +info " 2. 配置访问凭证(AK/SK)" +info " 3. 将指定的存储桶挂载到本地目录" +info " 4. 配置开机自动挂载服务" +info "" +info " 支持系统: Debian12 / Ubuntu22.04 / CentOS7" +warn " 注意: 其它系统未经测试,可能不兼容" +info "" +info " AK/SK获取地址: https://console.bitiful.com/accessKey" +info " 项目仓库地址: https://gitee.com/cncsrf/bitiful-oss" +warn "" +warn " 操作前请确保:" +warn " 1. 网络连接正常" +warn " 2. 存储桶可访问" +warn " 3. AK/SK信息正确" +title "================================================" + +# 日志记录 +log() { info "[$(date '+%Y-%m-%d %H:%M:%S')] $1"; } + +# 交互式输入配置 +read -p "$(info '请输入 Access Key ID: ')" AWS_ACCESS_KEY_ID +read -p "$(info '请输入 Secret Access Key: ')" AWS_SECRET_ACCESS_KEY +read -p "$(info '请输入存储桶名称: ')" BUCKET_NAME +read -p "$(info '请输入挂载路径(默认:/mnt/bitiful-oss): ')" MOUNT_PATH +MOUNT_PATH=${MOUNT_PATH:-"/mnt/bitiful-oss"} + +# 验证挂载路径 +[[ "$MOUNT_PATH" != /* ]] && error "挂载路径必须是绝对路径(以/开头)" +mkdir -p "$MOUNT_PATH" || error "创建挂载目录失败!" + +# 安装依赖 +log "正在安装系统依赖..." +if grep -qiE "debian|ubuntu" /etc/os-release; then + apt-get update && apt-get install -y wget fuse +elif grep -qi "centos" /etc/os-release; then + yum install -y wget fuse +else + error "不支持的操作系统!" +fi + +# 下载 bitifs +log "正在安装 bitifs 客户端..." +wget -O /usr/local/bin/bitifs https://tools.bitiful.com/bitifs/bitifs_linux_amd64 || error "下载 bitifs 失败!" +chmod +x /usr/local/bin/bitifs + +# 配置凭证 +log "正在配置访问凭证..." +mkdir -p /etc/bitifs +cat > /etc/bitifs/credentials.env < /etc/systemd/system/bitifs-mount.service </dev/null | grep -oP 'ExecStart.*\s\K\/\S+' | head -1) +MOUNT_PATH=${MOUNT_PATH:-"/mnt/bitiful-oss"} +BUCKET_NAME=$(systemctl cat bitifs-mount.service 2>/dev/null | grep -oP 'bitifs\s+\K\S+' | head -1) + +# 停止并禁用服务 +info "停止并禁用bitifs挂载服务..." +systemctl stop bitifs-mount.service 2>/dev/null +systemctl disable bitifs-mount.service 2>/dev/null +rm -f /etc/systemd/system/bitifs-mount.service +systemctl daemon-reload +systemctl reset-failed 2>/dev/null + +# 卸载挂载点 +info "卸载挂载点..." +if mount | grep -q "$MOUNT_PATH"; then + umount -l "$MOUNT_PATH" 2>/dev/null || \ + warn "卸载挂载点失败,可能是已被卸载或挂载点不存在" +else + info "挂载点 $MOUNT_PATH 未挂载" +fi + +# 清理文件和目录 +info "清理bitifs相关文件和配置..." +rm -f /usr/local/bin/bitifs 2>/dev/null +rm -rf /etc/bitifs 2>/dev/null + +# 删除挂载目录(可选) +if [ -d "$MOUNT_PATH" ]; then + read -p "$(info "是否删除挂载目录 $MOUNT_PATH?(y/n): ")" delete_dir + if [ "$delete_dir" = "y" ]; then + rm -rf "$MOUNT_PATH" && info "已删除挂载目录 $MOUNT_PATH" || \ + warn "删除挂载目录失败,可能是权限不足" + fi +fi + +# 清理残留进程 +info "清理残留进程..." +pkill -f "bitifs $BUCKET_NAME" 2>/dev/null && warn "已终止残留的bitifs进程" + +# 完成信息 +title "================================================" +info "卸载完成!" +info "" +info "已清理以下内容:" +info "1. bitifs-mount.service 服务" +info "2. /usr/local/bin/bitifs 客户端" +info "3. /etc/bitifs/ 配置目录" +[ "$delete_dir" = "y" ] && info "4. 挂载目录 $MOUNT_PATH" +info "" +info "如需重新安装,请运行安装脚本: install-bitiful-oss.sh" +title "================================================" \ No newline at end of file