亚马逊s3fs

开源地址

挂载步骤

# 安装
yum install -y epel-release
yum install -y s3fs-fuse

mkdir -p /root/.aws/

echo <yourAccessKeyId>:<yourAccessKeySecret> > /root/.aws/credentials 
# 挂载
s3fs <BucketName> /data/s3/backup -o url=https://s3.<Endpoint>.amazonaws.com -o endpoint=<Endpoint> -o use_path_request_style -o sigv4 -o passwd_file=/root/.aws/credentials

自动挂载脚本

#!/bin/bash

BucketName=
Endpoint=
AccessKeyId=
AccessKeySecret=
mount_dir=/data/s3/${BucketName}
workdir=/data/s3-config

mkdir -p ${mount_dir} ${workdir} && cd ${workdir}

install_s3fs() {
    if command -v s3fs > /dev/null 2>&1; then
        echo "s3fs 已经安装"
    else
        yum install -y epel-release
        yum install -y s3fs-fuse
    fi
}

add_cron() {
    # 添加开机启动
    start_script=/etc/rc.d/rc.local
    touch ${start_script}
    echo "检测是否添加开机启动"
    if [ $(cat ${start_script} | grep "s3 ${BucketName} start" | wc -l ) -eq 0 ];then
        echo "# s3 ${BucketName} start" >> ${start_script}
        echo "/bin/sh /data/s3-config/${BucketName}.sh" >> ${start_script}
    else
        echo "已经添加开机启动"
    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}