上传备份到亚马逊S3

注意:如果您是 Frappe Cloud 用户,系统会自动为您创建站点内和站点外备份:https://frappecloud.com/docs/sites/backups

前提条件

  • 电子邮件账户

要接收备份成功或失败的通知邮件,请先创建一个电子邮件账户

创建 S3 存储桶并设置访问权限

  1. 创建一个新的 S3 存储桶。

在存储桶设置中,启用“阻止所有公共访问”以保持数据私密。您可以根据需要启用加密、版本控制或对象锁定(请参考 Amazon 的文档)。
2. 打开身份与访问管理(IAM)。
3. 为服务“S3”创建一个新策略,允许“ListBucket”和“PutObject”操作。

或者,使用 JSON 编辑器:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::*/*",
                "arn:aws:s3:::YOUR TARGET BUCKET"
            ],
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": "YOUR SERVER IP"
                }
            }
        }
    ]
}
  1. 创建一个用于编程访问的新用户。

  1. 将您创建的策略附加到新用户。
  2. 复制用户的访问密钥和秘密密钥。

要自动删除旧备份或将它们移至更便宜的存储类别,请查看生命周期管理。

使用 Minio 创建 Hetzner 存储桶

大写字母是您可以自由选择的变量。在此示例中,我们使用区域 nbg1(纽伦堡)。

  1. 在 Hetzner 控制台 https://console.hetzner.com/projects/YOUR_PROJECT/security/s3-credentials 中,创建一些 S3 访问凭证:密钥和秘密密钥。
  2. 安装 Minio
  3. 配置 Minio 以访问您的 Hetzner 存储桶:mc alias set MY_ALIAS https://nbg1.your-objectstorage.com YOUR_S3_KEY YOUR_S3_SECRET
  4. 创建一个启用了对象锁定的存储桶:mc mb MY_ALIAS/BUCKET_NAME --with-lock --region nbg1。这可以确保您不会意外删除备份。
  5. 将对象锁定期限设置为 90 天:mc retention set GOVERNANCE 90d --default MY_ALIAS/BUCKET_NAME
  6. 检查所有配置是否正确:mc retention info --json --default MY_ALIAS/BUCKET_NAME
  7. S3 备份设置中输入配置:
  8. 端点 URL:https://nbg1.your-objectstorage.com/
  9. 存储桶名称:BUCKET_NAME
  10. 访问密钥 IDYOUR_S3_KEY
  11. 访问秘密密钥YOUR_S3_SECRET

设置 ERPNext

  • 打开S3 备份设置
  • 勾选“启用自动备份”。
  • 粘贴来自 AWS 的访问密钥和秘密密钥。
  • 设置一个电子邮件地址,以便在备份失败时接收通知。如果您也希望收到成功备份的邮件,请启用“发送成功备份邮件”。
  • 指定您在步骤 1 中创建的存储桶名称。
  • 选择您希望进行备份和上传备份的频率。范围可以从每月到每天。如果您只想手动备份,请将频率设置为“无”。

从已启用版本控制的存储桶中恢复已删除文件

  • 列出所有文件版本:mc ls -r --versions MY_ALIAS/BUCKET_NAME/
  • 下载特定版本:mc get --vid TARGET_VERSION_ID MY_ALIAS/BUCKET_NAME/20260415_162402/20260415_162402-company_frappe_cloud-database.sql.gz ~/Downloads