关于服务器数据的备份,之前一直使用的是备份到阿里云OSS的方案,可能是数据数据量比较少,连计费的零头都没到,在账单里没看到流量费、请求费的身影。花钱的地方也只是年付购买了一个存储包,总的来说还是可以的。
但是为什么我现在放弃了这套方案?理由也许很可笑——安全性。这不是怀疑阿里的技术,阿里云OSS有多种冗余方式可选择,数据丢失的可能性微乎其微。安全是多方面的,不是说数据不会损毁就是安全,这里就不展开说了,有时候不是一个大公司或个人的意志能改变的。
关于Backblaze B2,不用过多介绍,如果你检索过关于对象存储的内容,肯定知道它声名在外。
正如题目所说,我把Backblaze B2存储挂载到了本地,从宏观上看,可以把它当成一个本地的磁盘,用来备份网站数据。事实上这是可行的,也不是啥船新的玩法,网络上已经有非常多的文章讲这玩意儿。但是随着Rclone(一个把B2存储挂载到本地的软件)的更新迭代,很大一部分文章已经失去了参考价值,也使得我趟了不少坑,故在此记录,方便以后部署参考。
需要注意的是,这不是一篇教程,而是知识记录,所以不会很详细。相比较于这篇文章,我更建议你参看官方文档。
Backblaze B2篇
Backblaze B2创建存储桶
过程略,公开或者私有的桶都可以。
Backblaze B2创建应用程序密钥
应用程序密钥分为主应用程序密钥和其他应用的密钥。主密钥拥有管理所有存储桶的权限,一般不会轻易使用。其他应用程序密钥类似于一个子账户,可以配置不同的权限,供不同的程序使用,可以任意创建和删除,而主密钥只能同时存在一个。
子密钥创建好后,需要记一下相应的ID和KEY,在后续配置Rclone中会用到。
RCLONE篇
要想把一些云存储服务挂载到本地,rclone当然是不可或缺的软件。如果你不知道rclone是什么,可以看看这里有关它的内容。简而言之,rclone是一个用于管理云存储的程序,支持超过40种来自各厂商的云存储产品。
在Linux上安装Rclone程序
有好几种安装方式,具体官方部署教程里面有,这里选择一种最简单的脚本安装方式。
curl https://rclone.org/install.sh | sudo bash
出现这些提示就算安装成功啦
rclone v1.59.1 has successfully installed.
Now run "rclone config" for setup. Check https://rclone.org/docs/ for more details.
配置Rclone
配置过程参考官方的部署文档,写得很详细,内容是真的多,让人有点抓不住重点。
以下是配置过程:
[root@]# rclone config ###开始配置文件
2022/09/02 16:07:27 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n ###输入“n”创建新的配置文件
Enter name for new remote.
name> BackblazeB2 ###输入新建配置的文件名(很重要,不要忘记了这个名字),这里设定的名字为:BackblazeB2
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
1 / 1Fichier
\ (fichier)
2 / Akamai NetStorage
\ (netstorage)
.......
.......
47 / Zoho
\ (zoho)
48 / premiumize.me
\ (premiumizeme)
49 / seafile
\ (seafile)
Storage> 6 ###输入数字选择云存储服务商
Option account.
Account ID or Application Key ID.
Enter a value.
account> 0045ba**************0009 ###输入上面Backblaze B2密钥的keyID项
Option key.
Application Key.
Enter a value.
key> K004/**************orKuzc ###输入上面Backblaze B2密钥的ApplicationKey项
Option hard_delete.
Permanently delete files on remote removal, otherwise hide files.
Enter a boolean value (true or false). Press Enter for the default (false).
hard_delete> true ###这个地方配置的是,当在服务器删除文件时,是否也把在云存储端的文件一起删了,true表示两边同步删除。基于节省云存储空间的考量,一般选true就行了。
Edit advanced config?
y) Yes
n) No (default)
y/n> n ###这里是说是否要开启高级配置选项。基于能用就行的原则,选n。后续想调整的话,请参阅官方手册进行配置。
Configuration complete.
Options:
- type: b2
- account: 0045ba**************0009
- key: K004/**************orKuzc
- hard_delete: true
Keep this "BackblazeB2" remote?
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y ###输入“y”保存配置文件。
Current remotes:
Name Type
==== ====
BackblazeB2 b2
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q ###输入“q”退出配置编辑模式。
至此,Rclone的配置文件设置完成。
测试Rclone配置是否正常
以下命令中data*****
为存储桶名称,为安全起见而打码。
查看文件
执行远程文件查看命令
rclone ls BackblazeB2:data*****
此处data*****
表示云存储桶的名称,执行此命令可查看桶根目录下的文件。命令结构如下:
rclone ls [配置文件名称]:[存储桶名称]/[目录]
正常情况下会得到这样的结果,会显示存储桶里的所有文件
[root@]# rclone ls BackblazeB2:data*****
0 sitedata/panel/2022-09-02.zip
5 sitedata/panel/2022-09-02/config/abort.json
170 sitedata/panel/2022-09-02/config/api.json
479 sitedata/panel/2022-09-02/config/api_node.json
324 sitedata/panel/2022-09-02/config/config.json
1874 sitedata/panel/2022-09-02/config/dns_api.json
1548 sitedata/panel/2022-09-02/config/dns_api_init.json
54 sitedata/panel/2022-09-02/config/hide_menu.json
111 sitedata/panel/2022-09-02/config/hosts.json
24 sitedata/panel/2022-09-02/config/index.json
错误类型
- 如果出现
Failed to create file system for "remote:data*****": didn't find section in config file
说明你打错了配置文件的名称
-
如果出现
Failed to create file system for "BackblazeB2:data*****": failed to authorize account: failed to authenticate: Unknown 401 (401 bad_auth_token)
说明你的应用程序密钥写错了,请检查是否多了一个空格啥的。
如果发现配置错了,执行rclone config
重新设置配置文件
[root@]# rclone config
Current remotes:
Name Type
==== ====
BackblazeB2 b2
e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> e ###输入“e”重新设置配置文件
Select remote.
Choose a number from below, or type in an existing value.
1 > BackblazeB2
remote> 1 ###输入配置文件的对应代号
###后续配置步骤同上述的“ 配置Rclone”条目,不再赘述。
挂载云存储到本地目录
在上述的测试步骤中能正常浏览到文件后,即可将云存储桶挂载到本地目录中。
挂载
新建一个挂载目录
mkdir /mnt/b2
通过Rclone挂载
rclone mount BackblazeB2:data***** /mnt/b2
命令结构如下:
rclone mount [配置文件名称]:[存储桶名称] [挂载点]
使用过mount
命令的同学应该很熟悉了,注意[存储桶名称]
与[挂载点]
之间的空格。
需要注意的是,这种挂载方式属于前台挂载,执行完命令之后ssh会卡着,输入CTRL
+ c
后会停止挂载,结束ssh会话也会停止挂载。
如果需要后台挂载,在命令的后面加--daemon
即可,即:
rclone mount BackblazeB2:data***** /mnt/b2 --daemon
错误类型
2022/09/02 16:39:42 Fatal error: failed to mount FUSE fs: fusermount: exec: "fusermount": executable file not found in $PATH
原因:缺少fuser程序。在最小化安装centos的时候,是没有fuser这个命令的,有些云服务商提供的系统可能会没有fuser,需要手动安装。以CentOS为例,执行命令yum install fuser -y
即可安装。安装完成后再次执行挂载命令即可成功挂载。
[root@]# df -h
Filesystem Size Used Avail Use% Mounted on
BackblazeB2:data***** 1.0P 0 1.0P 0% /mnt/b2
可以看到直接把容量标成了1PB,太暴力了!
后续篇
成功将云存储桶挂载到本地目录后,即可将文件备份到此目录中,Rclone会将它们上传到云上。此目录可以当成本地磁盘使用,应用程序无缝兼容。
这篇文章只是使用到了Rclone的基本功能,还有很多的高级功能等待去探索。不过基于能用就行为主导思想的我,应该是没啥动力去研究了....
当然了,这玩意儿也是有缺点的——不适合频繁读写的场合,所以也只是建议拿来当备份目录。
Comments 4 条评论
这个挂载重启linux的时候会掉,是不是还要搞个开机自启那种服务
@xplinking 是的哦,得整个开机自启
(=・ω・=)
够详细!只不过这个的云存储我记得好像是在国外,速度好像有点慢
@wlr 当你的服务器在国外,一切都会变得合理