腾讯云对象存储使用S3fs在Linux实例上挂载Bucket

使用S3fs在Linux腾讯云上挂载Bucket

S3fs是基于FUSE的文件系统,允许Linux挂载Bucket在本地文件系统,S3fs能够保持对象原来的格式。使用S3fs可以把Bucket当成一个文件夹挂载到Linux系统内部,当成一个系统文件夹使用。

腾讯云对象存储地址 https://cloud.tencent.com/product/cos
腾讯云对象存储官方最新文档说明 https://cloud.tencent.com/product/cos/document

1.安装依赖包

OnCentOS7:

sudoyuminstallautomakefusefuse-develgcc-c++gitlibcurl-devellibxml2-develmakeopenssl-devel

OnUbuntu16.04:

sudoapt-getinstallautomakeautotools-devfuseg++gitlibcurl4-openssl-devlibfuse-devlibssl-devlibxml2-devmakepkg-config

2.安装

gitclonehttps://github.com/s3fs-fuse/s3fs-fuse.gitcds3fs-fuse./autogen.sh./configuremakesudomakeinstall

3.创建密码文件

echoAccess_Key_ID:Access_Key_Secret~/.passwd-s3fschmod600~/.passwd-s3fs

说明

Access_Key_ID:Access_Key_Secret获取方式:https://uc.jdcloud.com/account/accessKey

chmod600:设置密钥文件只能被当前用户访问。

4.挂载对象存储到本地目录/new

mkdir/news3fsbucketname/new-opasswd_file=~/.passwd-s3fs-ourl="https://s3.cn-north-1.jdcloud-oss.com"说明

mkdir:创建new文件夹作为本地挂载目录

s3fs:手动挂载命令,其中bucketname为bucket名称、/new是本地挂载路径、passwd_file为密码文件位置、url为腾讯云对象存储兼容S3域名(请输入bucket所在区域的服务域名)

5.查看挂载结果

df-h

 

6.进入目录可以查看到object文件

Tips:

1.如果你使用的CentOS6,请参考以下步骤安装fuse依赖:

yuminstallautomakegcc-c++gitlibcurl-devellibxml2-develmakeopenssl-develwgethttps://github.com/libfuse/libfuse/releases/download/fuse_2_9_4/fuse-2.9.2.tar.gztar-zxvffuse-2.9.2.tar.gzcdfuse-2.9.2./configure--prefix=/usrmakemakeinstallexportPKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/ldconfig

2.使用MacOS安装S3fs,请参考以下步骤:

gitclonehttps://github.com/s3fs-fuse/s3fs-fuse.gitcds3fs-fuse./autogen.sh./configure--prefix=/usr/localPKG_CONFIG_PATH="/usr/local/opt/openssl/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig"makesudomakeinstall

注:--prefix=/usr/local非必须;PKG_CONFIG_PATH必须,/usr/local/要替换成用户本地路径。

3.如果你在挂载Bucket时使用的非root账号,请在指定挂载命令是指定当前账户的uid及gid。如下示例:

sudos3fsbucketname/new-opasswd_file=~/.passwd-s3fs-ourl="https://s3.cn-north-1.jdcloud-oss.com"-ouid=11111-ogid=11111

4.使用s3fs-fuse工具挂载腾讯云对象存储,通过cp命令拷贝文件时,若遇到文件无content-type的问题,可通过如下方式解决:

  • 使用cp命令拷贝文件,s3fs-fuse工具底层进行的操作依赖于/etc/mime.types文件,这个文件决定了cp命令目的文件的mime-type属性。请查看你目录下是否有该文件。

  • 默认情况下,腾讯云的centos7版本并不包含/etc/mime.types文件,所以需要通过拷贝,或者安装httpd获得,安装命令为yuminstallhttpd

  • 对于已经通过s3fs命令挂载的目录,需要先umount,然后再次执行s3fs命令才能生效。

5.如果你在使用S3fs挂载Bucket之前开启了静态网站托管,会导致挂载失败;如果你使用S3fs挂载Bucket之后开启了静态网站托管,会导致文件操作失效。

6.如需使用Debug模式,请挂载时指定参数-odbglevel=dbg-f-ocurldbg