Mac挂载阿里云Oss

软件安装

需要安装三个软件

安装macfuse

github地址:https://github.com/s3fs-fuse/s3fs-fuse

使用brew安装

brew install --cask macfuse
#brew install gromgit/fuse/s3fs-mac

安装macfuse需要修改mac系统的安全策略,根据提示操作就OK

ossfs安装

本安装参考该博主的文档:https://www.itpony.com/show/58.html
阿里云官方文档:https://help.aliyun.com/zh/oss/developer-reference/use-ossfs-to-mount-an-oss-bucket-to-the-local-directories-of-an-ecs-instance/?spm=5176.8466032.help.dexternal.78ce1450dPXGIL

目前阿里云没有提供Mac直接安装的方法,需要自己手动编译

github地址:https://github.com/aliyun/ossfs

  1. 先clone下仓库
git clone https://github.com/aliyun/ossfs.git
  1. 安装编译需要的依赖
brew install autoconf automake libtool libxml2 pkg-config
  1. 编译安装
./autogen.sh
./configure
sudo make
sudo make install

PS: 我在这里make的时候报了个错

mix_direct_read_test.cc:74:31: error: no matching function for call to 'min' size_t buf_size = std::min(MB, sub_total_size - offset); ^~~~~~~~ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/min.h:40:1: note: candidate template ignored: deduced conflicting types for parameter '_Tp' ('size_t' (aka 'unsigned long') vs. 'unsigned long long') min(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b) ^ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/min.h:51:1: note: candidate template ignored: could not match 'initializer_list<_Tp>' against 'size_t' (aka 'unsigned long') min(initializer_list<_Tp> __t, _Compare __comp) ^ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/min.h:60:1: note: candidate function template not viable: requires single argument '__t', but 2 arguments were provided min(initializer_list<_Tp> __t) ^ /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/c++/v1/__algorithm/min.h:31:1: note: candidate function template not viable: requires 3 arguments, but 2 were provided min(_LIBCPP_LIFETIMEBOUND const _Tp& __a, _LIBCPP_LIFETIMEBOUND const _Tp& __b, _Compare __comp) ^ 1 error generated. make[2]: *** [mix_direct_read_test.o] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2

根据网上找到的解决方法是:

看起来,编译 ossfs 时出现了一些错误,这可能是由于你的开发环境(特别是 macOS 版本和开发工具集(Xcode 和 Command Line Tools))与 ossfs 源代码中的某些部分不兼容导致的。

具体来说,你在编译 mix_direct_read_test.cc 文件时遇到了一个错误,这个错误是由于 std::min 函数调用的类型推导问题造成的。std::min 函数被用来确定两个值中的较小值,但是在这个调用中,传递给它的两个参数的类型(size_t 和 unsigned long long)是不兼容的,导致 std::min 无法正确地决定应该使用哪种类型。

修复这个问题,你需要对 mix_direct_read_test.cc 文件进行一些微小的修改,以确保给 std::min 函数提供的参数类型是一致的。找到第 74 行:

size_t buf_size = std::min(MB, sub_total_size - offset);

然后更改赋值语句以显式地转换第二个参数的类型,使其与第一个参数(即 MB)的类型 size_t 一致:

size_t buf_size = std::min(MB, static_cast<size_t>(sub_total_size - offset));

然后,你应该能够成功地编译 ossfs。

请注意,手动修改源代码可能会导致其他的、预期之外的问题,特别是在未来如果你需要更新 ossfs 或是你的开发环境时。证实所有 ossfs 的功能在修改后仍然正常是非常重要的,特别是那些涉及到文件读/写操作或网络通信的部分,因为它们可能会受到这种类型的修改的影响。

挂载

可以使用非root挂载,否则每次都要sudo比较麻烦,而且在Finder还看不到。

先查询当前用户的uid和gid,可以使用id命令来查看:

  1. 显示当前用户的 uid
id -u $(whoami)
  1. 获得当前用户的 gid
id -g $(whoami)

创建passwd-ossfs,可以在当前用户目录下创建一个.passwd-ossfs,后续通过指定密钥文件进行挂载,文件创建成功后需要设置为600的权限,否则会被程序会拒绝

sudo sh -c 'echo bucket-test:LTAIbZcdVCmQ****:MOk8x0y9hxQ31coh7A5e2MZEUz**** > ~/.passwd-ossfs'
sudo chmod 600 /etc/passwd-ossfs

上面都做好之后就可以挂载了,可以参考使用下面命令

ossfs your-bucket /Users/mac/oss -o url=http://oss-cn-hangzhou.aliyuncs.com -o passwd_file=/Users/mac/.passwd-ossfs -o uid=501 -o gid=20

命令详细说明:

这个命令用于使用ossfs工具将阿里云的OSS(对象存储服务)挂载到你的本地文件系统。
下面是每个部分的详细解释:

  • ossfs:这是你正在运行的程序,也就是阿里云 OSS 的 FUSE (File System in User Space) 工具名称。
  • your-bucket:这是你的 OSS bucket 的名称。用实际要挂载的 OSS bucket 名词替换 your-bucket。
  • /Users/mac/oss:这是本地要挂载 OSS bucket 的路径。在这个例子中,OSS bucket 将挂载到 /Users/mac/oss。
  • -o url=http://oss-cn-hangzhou.aliyuncs.com:这个选项指定您的 OSS bucket 所在的 OSS 区域节点或者 Endpoint。oss-cn-hangzhou.aliyuncs.com 是阿里云 OSS 杭州地区的访问地址。
  • -o passwd_file=/Users/mac/.passwd-ossfs:这个选项指向一个包含你的 OSS 访问密钥ID和访问密钥的文件,passwd_file 参数后面的值就是这个文件的路径。
  • -o uid=501 -o gid=20:这两个参数用于设置挂载OSS bucket在本地的所有者用户ID(uid)和组ID(gid),这样可以控制哪些用户和组可以访问这个挂载点。在这个例子中,501 是用户ID,20 是组ID。

总的来说,这个命令将 your-bucket OSS 桶挂载到 /Users/mac/oss 目录下,其访问 OSS 的 URL 是 http://oss-cn-hangzhou.aliyuncs.com。访问密钥存储在 /Users/mac/.passwd-ossfs 文件中,挂载的所有者用户ID和组ID分别是501和20.

  • 27
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值