---
title: 备份你的服务器
description: 设置日常备份（可选，但并非如此）
menu:
  docs:
    weight: 80
    parent: admin
---

对于任何真实世界用途来说，你都应该保证日常备份Mastodon服务器。

## 概览 {#overview}

你所需要备份的东西，按重要程度排序：

1. PostgreSQL 数据库
2. `.env.production` 文件或等效文件中的应用密钥
3. 用户上传的文件
4. Redis 数据库

## 故障模式 {#failure}

人们通常要应对两种类型故障：硬件故障，诸如磁盘上数据损坏；以及人为软件故障，诸如误删特定文件。本文档中，仅考虑前一种类型。

丢失PostgreSQL数据库，那一切都完了。Mastodon将所有重要数据存储于PostgreSQL数据库中。如果数据库消失，那你服务器上所有的帐户、所有的嘟文、所有关注者都将随之消失。

如果你丢失了应用密钥，对你的用户而言，Mastodon的某些功能将停止工作。你服务器上的用户将被登出，双因子认证（2FA）将不可用，Web Push API订阅将停止工作。

如果你丢失了用户上传的文件，你将丢失头像、横幅、媒体附件，但Mastodon*仍会*继续工作。

丢失Redis数据库几乎是无害的：唯一不可逆的数据是Sidekiq队列及之前失败任务的重试计划。主页与列表时间流虽然存储于Redis，但它们可以使用tootctl再生成。

最好的备份是所谓的异地备份，即与Mastodon自身不在同一台计算机上存储的备份。如果你托管的服务器起火了，硬盘爆炸了，存储于同一硬件备份将不可用。

## 备份应用密钥 {#env}

应用密钥是最容易备份的，因为它们是不变的。你只需要将 `.env.production` 存储在安全的地方就可以了。

## 备份 PostgreSQL {#postgresql}

突然断电、硬盘故障、错误迁移数库库schema都会致使数据损坏。由于以上原因，推荐偶尔使用 `pg_dump` 或 `pg_dumpall` 备份数据库。

如果要求高可用性，可以使用热流拷贝（hot streaming replication）使第二台PostgreSQL服务器始终具有最新数据，并做好另一台服务器出现故障切换至此的准备。

## 备份用户上传的文件 {#media}

如果你使用外部对象存储，诸如Amazon S3、Google Cloud 或 Wasabi，你无需为怎么备份它们而担心。各自的公司将负责处理硬件故障。

如果你使用本地文件存储，复制体积巨大的 `public/system` 目录（默认存储上传文件的地方）。

## 备份 Redis {#redis}

备份Redis是很容易的。Redis会定期将数据写入`/var/lib/redis/dump.rdb`文件，你只需要复制这个文件就可以了。

{{< translation-status-zh-cn raw_title="Backing up your server" raw_link="/admin/backups/" last_tranlation_time="2020-05-06" raw_commit="ad1ef20f171c9f61439f32168987b0b4f9abd74b">}}
