logo
tt's Note
  • 运维
    • 数据库
    • linux
    • vpn
    • 日志
    • 中间件
    • 服务
    • 监控
    • shell
    • windows
    • 语言
    • 云服务
    • 其他
  • 开发
    • 工具
  • 软件
    • 浏览器
    • 多端
    • win
    • mac
    • 网站
  • 项目
    • 效率工具
    • 兴趣
  • 脚本
    • jenkins
    云服务概览
    阿里云oss授权单目录
    ossfs&s3fs
    阿里云ossutil
    aws-s3
    亚马逊s3fs
    七牛oss
    上一页阿里云oss授权单目录下一页阿里云ossutil

    #ossfs&s3fs

    ossfs官网地址

    s3fs开源地址

    #oss挂载步骤

    # 下载安装包
    wget http://gosspublic.alicdn.com/ossfs/ossfs_1.80.6_centos7.0_x86_64.rpm
    # 安装ossfs
    yum install ossfs_1.80.6_centos7.0_x86_64.rpm -y
    # 如果您希望上传文件的Content-Type和文件扩展名匹配,您需要添加mime.types文件
    # 如果您不添加mime.types文件,ossfs默认将上传文件的Content-Type设置为application/octet-stream
    # 添加mime.types文件
    yum install mailcap -y
    # 设置账号权限
    echo <BucketName>:<yourAccessKeyId>:<yourAccessKeySecret> > /etc/passwd-ossfs
    chmod 640 /etc/passwd-ossfs
    # 将Bucket挂载到指定目录
    ossfs BucketName mountfolder -o url=<Endpoint>
    # 例如
    mkdir /tmp/ossfs
    ossfs bucket-test /tmp/ossfs -o url=http://oss-cn-hangzhou.aliyuncs.com
    # 卸载
    fusermount -u /tmp/ossfs

    #自动挂载脚本

    Tip

    oss的Endpoint填域名,如: oss-cn-shanghai-internal.aliyuncs.com

    s3的Endpoint填区域码,如: us-east-2

    minio填带协议的域名,如: http://s3.test.com
    oss
    s3
    minio
    #!/bin/bash
    
    BucketName=
    Endpoint=
    AccessKeyId=
    AccessKeySecret=
    mount_dir=/data/oss/${BucketName}
    workdir=/data/oss-config
    
    if [ -f /etc/os-release ]; then
        if grep -q "ID=debian" /etc/os-release; then
            is_debian=1
        else
            is_debian=0
        fi
    else
        echo "判断不了系统"
        exit 1
    fi
    
    mkdir -p ${mount_dir} ${workdir} && cd ${workdir}
    
    install_ossfs() {
        if [ "${is_debian}"x == "1"x ]; then
                if [ ! -f ossfs_1.91.5_ubuntu22.04_amd64.deb ];then
                    wget https://gosspublic.alicdn.com/ossfs/ossfs_1.91.5_ubuntu22.04_amd64.deb
                fi
                apt-get install -y fuse libssl-dev
                apt-get install -y gdebi-core
                gdebi -n ossfs_1.91.5_ubuntu22.04_amd64.deb
                apt-get install -y mime-support
            else
                if [ ! -f ossfs_1.91.5_centos7.0_x86_64.rpm ];then
                    yum install wget -y > /dev/null 2>&1
                    wget http://gosspublic.alicdn.com/ossfs/ossfs_1.91.5_centos7.0_x86_64.rpm
                fi
                yum install ossfs_1.91.5_centos7.0_x86_64.rpm -y
                yum install --downloadonly --downloaddir=./ fuse -y
                # 如果您不添加mime.types文件,ossfs默认将上传文件的Content-Type设置为application/octet-stream。
                yum install mailcap -y
            fi
    }
    
    add_cron() {
        # 添加开机启动
        start_script=/etc/rc.d/rc.local
        if [ ! -f ${start_script} ]; then
            mkdir /etc/rc.d/
            touch ${start_script}
            ln -s ${start_script} /etc/rc.local
            echo "#!/bin/bash" > ${start_script}
        fi
        echo "检测是否添加开机启动"
        if [ $(cat ${start_script} | grep "oss ${BucketName} start" | wc -l ) -eq 0 ];then
                echo "# oss ${BucketName} start" >> ${start_script}
                echo "/bin/sh /data/oss-config/${BucketName}.sh" >> ${start_script}
        else
            echo "已经添加开机启动"
        fi
        if [ "${is_debian}"x == "1"x ]; then
            sed -i '/exit 0/d' ${start_script}
            echo "exit 0" >> ${start_script}
        fi
        chmod 755 ${start_script}
    }
    
    check_ossfs() {
        # 判断是否已经挂载
        already_mount_buckets=$(df -h|grep ossfs| awk '{print $6}'|awk -F '/' '{print $4}')
        for already_mount_bucket in ${already_mount_buckets};do
            if [ "${BucketName}"x == "${already_mount_bucket}"x ];then return 1;fi
        done
    
    }
    
    main() {
        check_ossfs || (echo "已经挂载${BucketName}, 退出" && df -h && exit 0)
        # 安装ossfs
        rpm -q ossfs || install_ossfs
        # 添加开机任务
        add_cron
        # 配置账号访问信息。
        echo ${BucketName}:${AccessKeyId}:${AccessKeySecret} > ${workdir}/passwd-ossfs-$BucketName
        chmod 600 passwd-ossfs-$BucketName
        # 将Bucket挂载到指定目录。
        /usr/local/bin/ossfs -o passwd_file=${workdir}/passwd-ossfs-$BucketName ${BucketName} ${mount_dir} -o url=${Endpoint} -o dbglevel=info -o allow_other -o multipart_size=100 -o parallel_count=10
        # 查看挂载结果
        df -h
    }
    
    main
    
    # 卸载
    # fusermount -u ${mount_dir}
    
    #!/bin/bash
    
    BucketName=
    Endpoint=
    AccessKeyId=
    AccessKeySecret=
    mount_dir=/data/s3/${BucketName}
    workdir=/data/s3-config
    
    if [ -f /etc/os-release ]; then
        if grep -q "ID=debian" /etc/os-release; then
            is_debian=1
        else
            is_debian=0
        fi
    else
        echo "判断不了系统"
        exit 1
    fi
    
    mkdir -p ${mount_dir} ${workdir} && cd ${workdir}
    
    install_s3fs() {
        if command -v s3fs > /dev/null 2>&1; then
            echo "s3fs 已经安装"
        else
            if [ "${is_debian}"x == "1"x ]; then
                apt update
                apt install -y s3fs
            else
                yum install -y epel-release
                yum install -y s3fs-fuse
            fi
        fi
    }
    
    add_cron() {
        # 添加开机启动
        start_script=/etc/rc.d/rc.local
        if [ ! -f ${start_script} ]; then
            mkdir /etc/rc.d/
            touch ${start_script}
            ln -s ${start_script} /etc/rc.local
            echo "#!/bin/bash" > ${start_script}
        fi
        echo "检测是否添加开机启动"
        if [ $(cat ${start_script} | grep "moon s3 ${BucketName} start" | wc -l ) -eq 0 ];then
            echo "# moon s3 ${BucketName} start" >> ${start_script}
            echo "/bin/sh /data/s3-config/${BucketName}.sh" >> ${start_script}
        else
            echo "已经添加开机启动"
        fi
        if [ "${is_debian}"x == "1"x ]; then
            sed -i '/exit 0/d' ${start_script}
            echo "exit 0" >> ${start_script}
        fi
        chmod 755 ${start_script}
    }
    
    check_s3fs() {
        # 判断是否已经挂载
        already_mount_buckets=$(df -h|grep s3fs| awk '{print $6}'|awk -F '/' '{print $4}')
        for already_mount_bucket in ${already_mount_buckets};do
            if [ "${BucketName}"x == "${already_mount_bucket}"x ];then return 1;fi
        done
    
    }
    
    main() {
        check_s3fs || (echo "已经挂载${BucketName}, 退出" && df -h && exit 0)
        # 安装s3fs
        install_s3fs
        # 添加开机任务
        add_cron
        # 配置账号访问信息。
        echo ${AccessKeyId}:${AccessKeySecret} > ${workdir}/passwd-s3fs-$BucketName
        chmod 600 passwd-s3fs-$BucketName
        # 将Bucket挂载到指定目录。
        /usr/bin/s3fs ${BucketName} ${mount_dir} -o passwd_file=${workdir}/passwd-s3fs-$BucketName -o url=https://s3.${Endpoint}.amazonaws.com -o endpoint=${Endpoint} -o use_path_request_style -o sigv4
        # 查看挂载结果
        df -h
    }
    
    main
    
    # 卸载
    # fusermount -u ${mount_dir}
    
    #!/bin/bash
    
    BucketName=
    Endpoint=
    AccessKeyId=
    AccessKeySecret=
    mount_dir=/data/minio/${BucketName}
    workdir=/data/minio-config
    
    if [ -f /etc/os-release ]; then
        if grep -q "ID=debian" /etc/os-release; then
            is_debian=1
        else
            is_debian=0
        fi
    else
        echo "判断不了系统"
        exit 1
    fi
    
    mkdir -p ${mount_dir} ${workdir} && cd ${workdir}
    
    install_miniofs() {
        if command -v s3fs > /dev/null 2>&1; then
            echo "s3fs 已经安装"
        else
            if [ "${is_debian}"x == "1"x ]; then
                apt update
                apt install -y s3fs
            else
                yum install -y epel-release
                yum install -y s3fs-fuse
            fi
        fi
    }
    
    add_cron() {
        # 添加开机启动
        start_script=/etc/rc.d/rc.local
        if [ ! -f ${start_script} ]; then
            mkdir /etc/rc.d/
            touch ${start_script}
            ln -s ${start_script} /etc/rc.local
            echo "#!/bin/bash" > ${start_script}
        fi
        echo "检测是否添加开机启动"
        if [ $(cat ${start_script} | grep "moon minio ${BucketName} start" | wc -l ) -eq 0 ];then
            echo "# moon minio ${BucketName} start" >> ${start_script}
            echo "/bin/sh /data/minio-config/${BucketName}.sh" >> ${start_script}
        else
            echo "已经添加开机启动"
        fi
        if [ "${is_debian}"x == "1"x ]; then
            sed -i '/exit 0/d' ${start_script}
            echo "exit 0" >> ${start_script}
        fi
        chmod 755 ${start_script}
    }
    
    check_miniofs() {
        # 判断是否已经挂载
        already_mount_buckets=$(df -h|grep s3fs| awk '{print $6}'|awk -F '/' '{print $4}')
        for already_mount_bucket in ${already_mount_buckets};do
            if [ "${BucketName}"x == "${already_mount_bucket}"x ];then return 1;fi
        done
    
    }
    
    main() {
        check_miniofs || (echo "已经挂载${BucketName}, 退出" && df -h && exit 0)
        # 安装miniofs
        install_miniofs
        # 添加开机任务
        add_cron
        # 配置账号访问信息。
        echo ${AccessKeyId}:${AccessKeySecret} > ${workdir}/passwd-miniofs-$BucketName
        chmod 600 passwd-miniofs-$BucketName
        # 将Bucket挂载到指定目录。
        /usr/bin/s3fs ${BucketName} ${mount_dir} -o passwd_file=${workdir}/passwd-miniofs-$BucketName -o url=${Endpoint} -o use_cache=${cache} -o max_stat_cache_size=10 -o use_path_request_style
        # 查看挂载结果
        df -h
    }
    
    main
    
    # 卸载
    # fusermount -u ${mount_dir}