seatitanium / oss

Aliyun OSS tools & automatic backup solution

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

oss

本项目提供了用于访问阿里云 OSS 的一些工具和自动备份的简单解决方案,基于阿里云官方的 ossutil有关 Minecraft 在阿里云抢占式实例上的开服实践的相关介绍,可以阅读这篇文档

快速开始

Note

在开始之前,你需要准备

  • ossutil 本体

可通过下列指令安装

sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash

后执行 ossutil config 根据提示输入相应的参数可以快速生成配置文件,或者按照配置文件解读部分所述手动编写配置文件。

  • 一组具有所需权限(例如 AliyunOSSFullAccess)的 AccessKeyId 和 AccessKeySecret
  • 一个已经创建好的与你的实例在相同地域的阿里云 OSS Bucket
  1. 下载本项目
git clone https://github.com/seatitanium/oss.git
cd oss
  1. 给予权限
chmod +x ./oss
chmod +x backup/* utils/*
  1. 编辑配置文件。只有正确配置才能正常使用功能。为了避免意外,请阅读配置文件解读部分。
vim oss.ini

即可开始使用。

  • oss cp x y 将 x 传输到 y
  • oss ls x remote-only 列出远程目录下的文件。默认是递归(recursive)列出。添加参数 -d 可只列出指定目录下的文件和子目录,注意此时的 x 必须是以 / 结尾的。
  • oss get-backup-count argumentless 获取现存备份数量
    • 别名 gbc
  • oss rmrf x remote-only 删除远程目录下的文件或者目录
  • oss clear-backup(s) argumentless DANGER 删除所有的备份文件
    • 别名 cb

Tip

在使用过程中,操作的对象既可以是本地路径也可以是远程路径。

  • 本地路径:本地的相对路径或者绝对路径
  • 远程路径:oss://bucket名/目录

例如在 oss cp x y 中,可以用 oss cp ~/file oss://bucket/remotedir 上传文件,也可以用 oss cp oss://bucket/remotedir/remotefile.xyz ~ 下载文件。recursive 参数已经带上。

备份

backup 目录中,purge-outdated-backup.sh 用于在备份数量达到 max_keep_count 的时候删去较旧的备份,会被 backup.sh 自动调用。正常情况下,调用 backup.sh 会将指定的文件夹(config 中的 backup_local_dir)复制到指定的位置(config 中的 backup_remote_dir)下的一个命名为复制的时间(格式:年-月-日_时:分:秒)的文件夹,并删除旧的备份。ossutil 的配置中 endpoint 设定为内网可以大大加快这个过程。

可以考虑将 backup.sh 添加到 crontab 中实现自动备份。

crontab -e
# crontab 的内容
*/10 * * * * /path/to/backup.sh

Caution

  1. 正式启用前,请自行测试一遍脚本和 crontab 任务是否可用,避免不必要的损失。如果一切准备就绪,脚本则开始运行。
  2. 若要让 purge-outdated-backup 正常工作,OSS 上的备份地址内不应有任何人工创建的文件夹,否则会导致删除顺序错误

配置文件解读

  1. config
# 最大备份数
max_keep_count=5
# 备份所在 OSS 地址,末尾不要带斜杠
backup_remote_dir=
# 备份所在本地地址,末尾不要带斜杠
backup_local_dir=
  • 最大备份数 — 正整数,允许在 OSS 上存在的最大备份数
  • 备份所在 OSS 地址 — 设置在 OSS 上的备份地址。格式为 oss://bucket名/具体路径
    • 例如如果要备份到 example 这个 bucket 里的 /backups 目录,那么就填 oss://example/backups
  • 备份所在本地地址 — 设置要备份的本地地址。必须是绝对路径
  1. ossutil 配置

ossutil 所用的配置文件默认路径为 ~/.ossutilconfig,其内容为

[Credentials]
lang=CH
accessKeyID=
accessKeySecret=
endpoint=
  • accessKeyID — 填写生成的 AccessKeyId
  • accessKeySecret — 填写生成的 AccessKeySecret
  • endpoint — 填写要备份到的 Bucket 的 endpoint
    • endpoint 的值可以在 Bucket 的「概览」面板看到: 请确保使用地址中含有 internal 字样,否则传输将耗费大量时间。

协议

MIT

注:ossutil 本身也是 MIT 协议开源的。

About

Aliyun OSS tools & automatic backup solution

License:MIT License


Languages

Language:Shell 100.0%