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}

:::