Loading... ## 准备工作 最近把服务器后端面板由aapanel换到了1panel,面板对于网站数据的备份功能深深吸引了我,恰好手上有Oracle免费账户,恰好免费帐户又有20GB的免费存储桶,好上加好的是兼容s3协议,美中不足是1panel面板自带的s3备份设置不支持Oracle存储桶,本篇文章就围绕以“曲线救国”的方式挂载Oracle存储桶,使1panel备份的内容能够自动备份到Oracle存储桶【生命在于折腾、免费的就是香、20GB永久免费空间不比AWS的5GB空间好吗】 ### 必要的软件 首先本次是以Ubuntu-server 20.04系统为基础做的 安装rclone:`curl https://rclone.org/install.sh | sudo bash` 安装fuse、fuse3 ``` apt install fuse apt install fuse3 ``` ### 必要的资料 * 打开Oracle后台面板,点击左上角菜单,选择**存储**--**存储桶**,进入存储桶管理面板新建一个存储桶,**名称**改不改都行,默认存储层选择**标准**,加密选择**使用 Oracle 管理的密钥进行加密**,其余默认即可 * 点击进入刚创建的存储桶,打开你的记事本记录以下内容:**存储桶名称**,**名称空间**,**OCID**,查看你的网址末尾一段,会看到类似【objects?region=ap-sydney-1】这样的字段,把=号后面的值例如**ap-sydney-1**复制下来记录好,这是**区域ID**,将会用到它 * 点击右上角你的头像,进入**我的概要信息**,然后左下角点击**客户密钥**,点击生成密钥,名称任意取,把生成的密钥值【一般称作Secret Key】复制下来记录好,此时关闭密钥页面会看到多了一个你刚才生成的密钥,鼠标移动到**访问密钥上**,把弹出来的访问密钥值【一般称作Access Key ID】复制下来记录好 * 继续点击左下角的**API密钥**,点击**添加API密钥**,**下载私钥**文件后点击添加,你将会看到类似下面这样的提示信息,不要犹豫,复制下来记录好【不复制也可以,这段信息可以重新查看】把最末尾一行修改成:`key_file=/root/.oci/oracle.pem` ``` [DEFAULT] user=ocid1.user.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa fingerprint=4e:b2:b4:ee:26:f1:3d:1a:5e:d6:10:18:0c:0d:57:71 tenancy=ocid1.tenancy.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa region=ap-sydney-1 key_file=这里按照上文要求修改 ``` * 接下来回到服务器段操作,把刚才下载的私钥文件修改名称为`oracle.pem`并且上传到服务器的`/root/.oci/`文件夹下,文件夹不存在自己创建即可`mkdir /root/.oci`在此文件夹下新建一个名为`config`的文件`nano config`,如果出错请安装nano`apt install nano -y`,把上方修改好的文本内容直接粘贴到config文件中,按下`ctrl+x`,按y再按回车保存文件修改 ## rclone挂载Oracle存储桶 以下教程根据rclone官网对于Oracle存储桶挂载文档的说明进行配置[https://rclone.org/oracleobjectstorage/](https://rclone.org/oracleobjectstorage/) * 回到root用户根目录,执行`rclone config`,输入n新建一个连接,提示Enter name for new remote.直接输入自定义名称即可,例如oracle * 第二步选择存储,找到Oracle Cloud Infrastructure Object Storage这个存储的编号,当前教程中编号为37,如果有发生编号改变应该也在37号附近,输入37按下回车 * 第三步选择认证方式,这里选择2即可 ``` Option provider. Choose your Auth Provider Choose a number from below, or type in your own string value. Press Enter for the default (env_auth). 1 / automatically pickup the credentials from runtime(env), first one to provide auth wins \ (env_auth) / use an OCI user and an API key for authentication. 2 | you’ll need to put in a config file your tenancy OCID, user OCID, region, the path, fingerprint to an API key. | https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm \ (user_principal_auth) / use instance principals to authorize an instance to make API calls. 3 | each instance has its own identity, and authenticates using the certificates that are read from instance metadata. | https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/callingservicesfrominstances.htm \ (instance_principal_auth) 4 / use resource principals to make API calls \ (resource_principal_auth) 5 / no credentials needed, this is typically for reading public buckets \ (no_auth) ``` * 第四步输入你的名称空间 * 第五步输入你的OCID * 第六步输入你的区域ID * 第七步留空直接回车,这是要求输入连接所需的api地址,rclone会根据区域ID自动匹配 * 第八步输入你的config文件路径,按照教程走,文件路径应该是`/root/.oci/config` * 第九步直接回车即可 * 第十步直接回车 * 第十一步确认你的连接信息,一般输入y按下回车即可,最后这步会列出我们以上输入的内容,看到类似下图这样的输出就是配置成功了 ![请输入图片描述](https://apoptoxin4869.com/usr/uploads/2024/05/3615748227.webp) 最后,可以在Oracle后台面板随意上传一个文件到存储桶中,回到Linux执行`rclone ls oracle:这里填写你的存储桶名称`【这里的oracle是刚才创建rclone连接的时候设置的名称,下一步挂载到本地磁盘也会再次看到这段代码】,如果看到有刚才上传的文件名输出返回就证明连接成功;最后可以用以下代码把存储桶挂载到Linux本地, ``` rclone mount oracle:你的存储桶名称 /mnt/oracle/ --allow-other --allow-non-empty --vfs-cache-mode writes --daemon --umask 000 ``` ``` 参数解释: /mnt/oracle/ 挂载到本地的此路径 --allow-other 允许其他用户访问复制的文件 --allow-non-empty 允许复制非空目录 --vfs-cache-mode writes 设置 VFS 缓存模式为写入 --daemon 将 Rclone 运行为守护进程 --umask 000 设置文件的权限掩码为 000 ``` 最后打开1panel面板,进入面板设置--备份账号,编辑备份目录,例如修改成/mnt/oracle,然后创建一个计划任务,选择备份到服务器磁盘并且执行任务,稍等一会【一般几秒钟时间】即可看到备份成功,打开Oracle存储桶刷新一下,也能在Oracle后台面板看到备份的文件 ## 进阶操作 这多一步的操作目的是为了文件多地备份,如果你设置了其他的备份方式那么可以不需要继续往下看,如果你拥有一台synology nas设备同时也跟我想法一样希望备份到Oracle存储桶的文件自动同步到nas上那就接着往下看 ### 基础思路 通过本地部署alist且alist挂载Oracle存储桶,synology上安装cloud sync程序通过webdav方式同步alist挂载的Oracle存储桶【是的,cloud sync配置Oracle存储桶似乎不太行】 基础的设备架构 ![请输入图片描述](https://apoptoxin4869.com/usr/uploads/2024/05/4265702414.webp) 当然可以选择在synology内安装docker app通过docker部署alist效果也是一样的,具体的部署不做额外说明,说说alist如何挂载Oracle存储桶 ### alist挂载Oracle存储桶 ![请输入图片描述](https://apoptoxin4869.com/usr/uploads/2024/05/1353993714.webp) * 驱动:**对象存储** * 访问密钥:填写**Access Key ID** * 安全访问密钥:填写**Secret Key** * 存储桶:填写**名称空间** * 地区:填写**区域ID** * Endpoint:填写Oracle对应区域的API链接,参考下方不同区域链接查找,也可以打开Oracle官方文档查看【若是未来更新区域或者API失效的情况】[https://docs.oracle.com/en-us/iaas/api/#/en/s3objectstorage/20160918/](https://docs.oracle.com/en-us/iaas/api/#/en/s3objectstorage/20160918/) * 你所需要的区域API就是上方教程要你复制的**区域ID**,例如我的是ap-sydney-1,就是对应下方第11条API,具体区域可以查看API链接末尾类似`ap-sydney-1.oraclecloud.com`这样的信息 * alist中区域API填写不需要加https,例如我的API应该填写`compat.objectstorage.ap-sydney-1.oraclecloud.com`这样的格式即可,从compat开始复制到末尾就是你所需要填写的 * 在API末尾需要加上你的存储桶名称,例如我的存储桶是默认名称bucket-20220804-1007,那么完整的Endpoint应该是如下`compat.objectstorage.ap-sydney-1.oraclecloud.com/bucket-20220804-1007`,注意API与存储桶名称之间加上`/`符号 ``` API Endpoints: https://<object_storage_namespace>.compat.objectstorage.af-johannesburg-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-chuncheon-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-hyderabad-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-melbourne-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-mumbai-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-osaka-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-seoul-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-singapore-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-sydney-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ap-tokyo-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ca-montreal-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.ca-toronto-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.eu-amsterdam-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.eu-frankfurt-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.eu-jovanovac-1.oraclecloud20.com https://<object_storage_namespace>.compat.objectstorage.eu-madrid-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.eu-marseille-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.eu-milan-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.eu-paris-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.eu-stockholm-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.eu-zurich-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.il-jerusalem-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.me-abudhabi-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.me-dubai- https://<object_storage_namespace>.compat.objectstorage.me-jeddah-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.mx-monterrey-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.mx-queretaro-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.sa-bogota-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.sa-santiago-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.sa-saopaulo-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.sa-valparaiso-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.sa-vinhedo-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.uk-cardiff-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.uk-london-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.us-ashburn-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.us-chicago-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.us-phoenix-1.oraclecloud.com https://<object_storage_namespace>.compat.objectstorage.us-sanjose-1.oraclecloud.com ``` ### 同步操作 打开synology设备的cloud sync程序,选择webdav进行添加,服务器地址即是你的alist地址,末尾加上/dav即是alist定义的webdav链接,进阶一点可以多加上路径参数,例如我只想同步Oracle存储桶的内容,那么我增加一些路径用作限制,账户和密码即是alist管理后台的账号 ![请输入图片描述](https://apoptoxin4869.com/usr/uploads/2024/05/3643953419.webp) 最后是同步的效果,可以检查到完整的备份数据已经自动同步到本地文件夹 ![请输入图片描述](https://apoptoxin4869.com/usr/uploads/2024/05/3790153957.webp) ## 写在最后 Q:为什么要搞这么麻烦? A:Oracle最近几年开放申请免费使用的账户后也在大规模进行封号,万一备份数据还在存储桶账号给封禁了那就很麻烦了 Q:为什么不用其他的备份方式? A:Oracle存储桶免费空间足够大、其他的1panel支持的备份大多需要额外花钱,sftp或者webdav方式直接备份到synology也可以,但因为服务器和synology设备在不同国家,跨国际传输速度太慢 Q:还有什么问题请在页面评论区留言,有空会一一答复 最后修改:2024 年 05 月 02 日 © 允许规范转载 打赏 赞赏作者 赞 如果觉得我的文章对你有用,请随意赞赏