Loading... <p style="text-indent: 2em;">昨天开始把博客从阿里云迁移到腾讯云上来了,附件啥的也相应的从OSS转移到COS里来了。当初在阿里用的cloudfs挂载工具很方便,现在到腾讯云用cosfs昨天走了不少弯路,不过现在总算是明白了,还是和cloudfs有些不一样的。</p> <h2><span style="color: #ff0000;">功能说明</span></h2> COSFS 工具支持将 COS 存储桶挂载到本地,像使用本地文件系统一样直接操作腾讯云对象存储。 <h2><span style="color: #ff0000;">使用限制</span></h2> 本工具可以支持对COS V4、V5 版本存储的访问,但是域名均需使用 COS V5 域名。(至于啥是V4V5我也不太明白。就一个云存储,为啥要分那么多版本呢?) <h2><span style="color: #ff0000;">环境安装</span></h2> <h4 id="centos-.E7.B3.BB.E7.BB.9F.E4.B8.8B.E5.AE.89.E8.A3.85.E7.8E.AF.E5.A2.83.E4.BE.9D.E8.B5.96.E5.8C.85.E6.96.B9.E6.B3.95.EF.BC.9A">CentOS 系统下安装环境依赖包方法:</h4> <pre class="line-numbers"><code class="language-nginx">sudo yum install automake gcc-c++ git libcurl-devel libxml2-devel fuse-devel make openssl-devel</code></pre> 注意在centos6.5及较低版本,(实测centos6.8也会提示)可能会提示fuse版本太低,在安装过程的configure操作时返回 <pre class="line-numbers"><code class="language-nginx">checking for common_lib_checking... configure: error: Package requirements (fuse >= 2.8.4 libcurl >= 7.0 libxml-2.0 >= 2.6) were not met: Requested 'fuse >= 2.8.4' but version of fuse is 2.8.3</code></pre> 此时,你需要来手动安装fuse版本,具体步骤: <pre class="line-numbers"><code class="language-nginx"> # yum remove -y fuse-devel # wget https://github.com/libfuse/libfuse/releases/download/fuse_2_9_4/fuse-2.8.4.tar.gz # tar -zxvf fuse-2.8.4.tar.gz # cd fuse-2.8.4 # ./configure # make # make install # export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/lib64/pkgconfig/:/usr/local/lib/pkgconfig # modprobe fuse # echo "/usr/local/lib" >> /etc/ld.so.conf # ldconfig # pkg-config --modversion fuse 2.8.4 //看到版本表示安装成功</code></pre> <h2><span style="color: #ff0000;">使用方法</span></h2> <h3><span style="color: #0000ff;">安装工具</span></h3> <pre class="line-numbers"><code class="language-nginx">git clone https://github.com/tencentyun/cosfs-v4.2.1 /usr/cosfs</code></pre> 进入到该目录,编译安装: <pre class="line-numbers"><code class="language-nginx">cd /usr/cosfs ./autogen.sh ./configure make sudo make install</code></pre> <h3><span style="color: #0000ff;">配置文件</span></h3> 在 /etc/passwd-cosfs文件中(这个文件本身不存在,自己新建一个写好传上去可以,或者按下面方法做一个也行),配置您的存储桶的名称,以及该存储桶对应的 SecretId 和 SecretKey。使用冒号隔开,注意冒号为半角符号。 并为 /etc/passwd-cosfs 设置可读权限。命令格式如下: <pre class="line-numbers"><code class="language-nginx">echo <bucketname>:<SecretId>:<SecretKey> > /etc/passwd-cosfs chmod 640 /etc/passwd-cosfs</code></pre> 其中: bucketname/ SecretId/ SecretKey 需要替换为用户的真实信息。 <h3><span style="color: #0000ff;">运行工具</span></h3> 将配置好的存储桶挂载到指定目录,命令行如下: <pre class="line-numbers"><code class="language-nginx">cosfs your-APPID:your-bucketname your mount-point -ourl=cos-domain-name -odbglevel=info</code></pre> 其中: <ul> <li>your-APPID/ your-bucketname 需要替换为用户真实的信息;</li> <li>your-mount-point 替换为本地需要挂载的目录(如 /mnt);(注意:这个要挂载的目录必须存在,新建一个空文件夹就可以)</li> <li>cos-domain-name 为存储桶所属地域对应域名,形式为 http://cos.<Region>.myqcloud.com ,其中 Region 为 可用地域 中适用于 XML API 的地域简称,如:http://cos.ap-guangzhou.myqcloud.com 、http://cos.eu-frankfurt.myqcloud.com 等。</li> <li>-odbglevel 参数表示信息级别,照写即可。</li> </ul> <h3><span style="color: #0000ff;">卸载存储桶</span></h3> <pre class="line-numbers"><code class="language-nginx">fusermount -u /mnt</code></pre> 或者 <pre class="line-numbers"><code class="language-nginx">umount -l /mnt</code></pre> <h2><span style="color: #ff0000;">常用挂载选项</span></h2> 1、-omultipart_size=[size] multipart_size用来指定分块上传时,每个分块的大小,默认是 10 MB。 由于分块上传对块的数目有最大限制(10000 块),所以对于大文件,例如超出10 MB * 10000 (100 GB) 大小的文件,需要根据具体情况调整该参数。该参数单位是 MB。 2、-oallow_other 如果要允许其他用户访问挂载文件夹,可以在运行 COSFS 的时候指定allow_other参数。 [tip type="worning"]注意:尤其要注意这个,我就是因为忽略了这一条,网站前台一直403,找了半天原因才发现是这里权限没有给。。。[/tip] 3、-odel_cache 默认情况下,cosfs 为了优化性能,在 umount 后,不会清除本地的缓存数据。 如果需要在 COSFS 退出时,自动清除缓存,可以在挂载时加入该选项。 可能初入腾讯云的原因,对腾讯云不是太熟练,这个cosfs比那个cloudfs可能稍微麻烦了些,不过一旦配置好了倒也还算方便,毕竟熟能生巧了哈。 最后修改:2021 年 12 月 16 日 © 允许规范转载 打赏 赞赏作者 赞 0 如果觉得我的文章对你有用,请随意赞赏