# Какие директории с файлами нужно резервировать в ProtonDrive (кроме R2 Media)?

**URL:** <https://meta.discourse.org/t/target-file-directories-to-backup-to-protondrive-besides-r2-media/375687>\
**Category:** Product Support\
**Created:** [24.Июль.2025 19:13:19 UTC](https://meta.discourse.org/t/target-file-directories-to-backup-to-protondrive-besides-r2-media/375687 "2025-07-24T19:13:19Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Ethsim2](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ethsim2/32/522255_2.png) [@Ethsim2](https://meta.discourse.org/u/Ethsim2)\
**Post date:** [26.Июль.2025 08:37:35 UTC](https://meta.discourse.org/t/target-file-directories-to-backup-to-protondrive-besides-r2-media/375687/2 "2025-07-26T08:37:35Z")

</div>

Вы можете найти тему ниже полезной

> **[Rsync error only inside docker image](https://forums.docker.com/t/rsync-error-only-inside-docker-image/147925/2)**
>
> You cannot run anything in an image as an image is a read-only template. You are working with containers. I just leave it here so we can use the right terms. Otherwise it could be confusing. It took me some seconds to realize what you werw writing...

* * *

## Файлы и директории Discourse для резервного копирования в ProtonDrive (помимо медиафайлов R2/S3)

* * *

### Шаг 1 — Что означает `upload://`

upload://\<длинный-хеш\>

> **Комментарий**
>
> Discourse хранит в содержимом постов (raw/cooked) только _ссылку_ `upload://<хеш>`. Во время сборки или при отображении Discourse обращается к своим таблицам базы данных (таким как `uploads`, `post_uploads` и т. д.), чтобы преобразовать эти хеши в реальные URL или пути в зависимости от того, где хранятся загруженные файлы (локально, CDN, S3/R2 и т. д.).

* * *

### Шаг 2 — Где это находится внутри контейнера

/shared/uploads/default

> **Комментарий**
>
> В стандартной установке Docker (с использованием `launcher` и `app.yml`) директория `/shared` внутри контейнера монтируется с хост-системы из `/var/discourse/shared/standalone`. Всё постоянное содержимое, записываемое Discourse, включая загруженные файлы, логи, резервные копии и т. д., находится в `/shared`.

* * *

### Шаг 3 — Путь в файловой системе хоста

/var/discourse/shared/standalone/uploads/default

> **Комментарий**
>
> Если вы **не** используете внешние хранилища для загрузки файлов (S3/R2), это основной путь, который необходимо синхронизировать с ProtonDrive для сохранения медиафайлов постов. Если вы **используете** S3/R2, большинство файлов не будут находиться здесь, но некоторые файлы (например, оптимизированные версии, заглушки) могут остаться. Решите, нужно ли вам делать резервную копию и этого.

* * *

### Шаг 4 — Отображение тома Docker (`app.yml`)

volumes:

- volume:  
host: /var/discourse/shared/standalone  
guest: /shared

> **Комментарий**
>
> Всё содержимое `/shared` внутри контейнера становится `/var/discourse/shared/standalone` на хосте. Если вы сделаете резервную копию этой структуры, вы получите загруженные файлы, архивы резервных копий, логи и (опционально) данные PostgreSQL, если они хранятся на диске (хотя для восстановления обычно достаточно архивов резервных копий).

* * *

### Конкретные цели для резервного копирования (локальное хранилище)

**Минимальный набор (если вы доверяете резервным копиям в виде архивов от Discourse):**

/var/discourse/shared/standalone/backups/ # Полные резервные копии, созданные Discourse (архивы .tar.gz)  
/var/discourse/shared/standalone/uploads/ # Только если вы храните загруженные файлы локально

> **Комментарий**
>
> - Резервная копия в виде архива — это файл .tar.gz, созданный функцией резервного копирования Discourse. Он содержит дамп всей базы данных, конфигурацию сайта, темы и (опционально, если выбрано) все локальные загруженные файлы. Он не содержит медиафайлы, хранящиеся во внешних хранилищах S3/R2; только записи в базе данных, ссылающиеся на них.
> - Если ваши загруженные файлы находятся в S3/R2, вам может потребоваться только `/backups/` локально и отдельный процесс для резервного копирования вашего бакета объектного хранилища.

* * *

**Набор “Всё, что мне когда-либо может понадобиться” (копия на уровне файловой системы):**

/var/discourse/shared/standalone/backups/ # Полные резервные копии Discourse (архивы)  
/var/discourse/shared/standalone/uploads/ # Локальные загруженные файлы/медиа (если не S3/R2)  
/var/discourse/shared/standalone/log/rails/ # (Опционально) Логи Rails — полезны для криминалистики  
/var/discourse/shared/standalone/tmp/backups/ # (Опционально) Временная подготовка резервных копий (обычно пуста)  
/var/discourse/shared/standalone/postgres\_data/ # (Опционально) Сырая директория данных PostgreSQL — обычно не требуется  
/var/discourse/containers/ # Ваш app.yml и любые YML-файлы контейнеров (конфигурация)  
/etc/letsencrypt/ # (Опционально) TLS-сертификаты, если SSL завершается на хосте

> **Комментарий**
>
> - **Сырые данные PostgreSQL** обычно не требуются, так как резервная копия в виде архива содержит логический дамп базы данных, который безопаснее для восстановления.
> - **/containers** — небольшой, но критически важный для аварийного восстановления: здесь хранятся ваши настройки и сопоставления томов.
> - **TLS-сертификаты** важны только если вы используете SSL вне контейнера.

* * *

### Быстрая схема в одну строку

upload://\<хеш\>  
↓  
/shared/uploads/default (внутри Docker)  
/var/discourse/shared/standalone/uploads/default (на хосте)

> **Комментарий**
>
> **Если вы используете S3/R2:**
> 
> - Отдельно сделайте резервную копию вашего бакета S3/R2 (например, с помощью Rclone).
> - Также рассмотрите возможность резервного копирования `/backups/` (архивы, содержащие базу данных, конфигурацию, загруженные файлы сайта, но не внешние медиафайлы) и `/containers/`.

* * *

### ✅ Краткое резюме для темы ProtonDrive

- **Локальные загруженные файлы?** Сделайте резервную копию:
  - /var/discourse/shared/standalone/uploads/
  - /var/discourse/shared/standalone/backups/ # (содержит архивные резервные копии .tar.gz)

- **Загруженные файлы в S3/R2?** Сделайте резервную копию:
  - /var/discourse/shared/standalone/backups/ # (архивные резервные копии: база данных/конфиг/таблица загруженных файлов)
  - Ваш бакет S3/R2 с помощью другого инструмента
  - Опционально: /containers/, /log/rails/ и postgres\_data для полного покрытия аварийного восстановления

> **Комментарий**
>
> Резервная копия в виде архива: Файл .tar.gz, созданный системой резервного копирования Discourse, содержащий логический дамп базы данных, темы, конфигурации и (опционально) локальные загруженные файлы, но никогда не включающий внешние медиафайлы S3/R2.

---

_[View the full topic](https://meta.discourse.org/t/target-file-directories-to-backup-to-protondrive-besides-r2-media/375687)._
