# «Восстановление» не удаётся: можно игнорировать расхождения

**URL:** https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057
**Category:** Self-hosting
**Tags:** uploads, s3
**Created:** [17.Август.2024 07:17:56 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057 "2024-08-17T07:17:56Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [17.Август.2024 07:17:56 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/1 "2024-08-17T07:17:56Z")

</div>

#### Эта тема с 4-го поста переросла в «Восстановление с ошибками», что сейчас является основной проблемой. Вы можете проигнорировать первые 4 поста.

Я настраивал загрузку в AWS S3 несколько лет назад, в самом начале.  
Даже когда я (насколько мне известно) никогда не включал опцию включения загрузок S3 в резервные копии, вчера, когда я выбрал включение «Загрузок» в резервные копии, в моём логе появилось следующее:  
[![](https://global.discourse-cdn.com/meta/original/4X/c/f/5/cf54f9bad8c80aaa47e3edf229c16a1e251d1bbe.png) ](https://global.discourse-cdn.com/meta/original/4X/c/f/5/cf54f9bad8c80aaa47e3edf229c16a1e251d1bbe.png)

Это вызывает несколько любопытных несоответствий, которые меня сбивают с толку:

1. Вчера вечером я включил опцию в настройках администратора для включения «Загрузок» в резервные копии. Затем, когда я просмотрел мою локальную папку «Общие загрузки» через WinSCP, там оказалось менее 100 файлов только в одной папке (других папок 2x, 3x там не существует; при необходимости могу предоставить скриншот). Так почему же в логе резервного копирования указано, что было загружено около 3 тысяч файлов? («Не удалось загрузить» — это ещё одна проблема в этих логах, но это отдельный вопрос). Если файлы загружаются из локального хранилища, то где находятся все эти файлы? А если они загружаются из S3, то почему? Ведь я никогда не менял эту опцию в консоли Rails для включения данных S3 в резервные копии, и также не создавал подобных опций в секции Env моего yml-файла.
2. Сегодня я изменил эту опцию в консоли Rails на «True». Теперь, при запуске задачи резервного копирования, было показано, что загружено около 3,2 тысяч файлов, и около 100 «Не удалось загрузить». Однако при проверке моего бакета AWS S3 оказалось, что там почти в 10 раз больше файлов — около 32 тысяч файлов общим объёмом около 3 ГБ. Так почему же не загружаются все эти файлы?
3. Неужели нет способа сверить/синхронизировать все эти данные и, возможно, узнать, какие несоответствия возникают и где?
4. Сейчас я очень растерян и не знаю, что делать. Моя конечная цель — перенести моё (слишком дорогое) хранилище AWS на более дешёвый вариант (сам Hetzner, где работает мой VPS, очень и очень недорогой, поэтому я могу увеличить объём хранилища и на основном сервере).

Спасибо. Пожалуйста, подскажите, в каком направлении двигаться.

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [17.Август.2024 08:50:49 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/2 "2024-08-17T08:50:49Z")

</div>

Даже когда моя папка ‘Uploads’ (в бакете AWS S3) превышает 3 ГБ (3,2 тыс. файлов), почему резервные копии составляют чуть меньше 1 ГБ (с загруженными в резервную копию всего 2,9 тыс. файлов), даже после включения опции ‘include\_s3\_uploads\_in\_backup’ через rails console?

 ![image](https://global.discourse-cdn.com/meta/original/4X/3/2/a/32acf62b4cd05913c018fce222e8205cb97dbaa8.png)

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [17.Август.2024 10:26:56 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/3 "2024-08-17T10:26:56Z")

</div>

> [@Bathinda Helper](#):
>
> Я просмотрел свою локальную папку «Общие загрузки» через WinSCP, в ней было чуть меньше 100 файлов.

Эта настройка загружает файлы во временный каталог и включает их в резервную копию. Она не помещает их в каталог загрузок. Чтобы они оказались в каталоге загрузок, необходимо восстановить резервную копию. Я бы сделал это на новом сервере, чтобы в случае возникновения проблем ваш исходный сервер остался нетронутым.

Похоже, что некоторые файлы могут отсутствовать. Есть ли у вас сообщения с отсутствующими изображениями? Другой возможной причиной является то, что таблица загрузок содержит записи о файлах, на которые больше нет ссылок в сообщениях, поэтому отсутствие этих изображений не имеет значения.

Если их всего около 100, то, скорее всего, это не такая уж большая проблема.

Или же, возможно, какая-то ошибка в прошлом очистила (удалила) файлы, которые следовало сохранить.

Чтобы увидеть загруженные файлы, вам нужно скачать файл резервной копии и проверить, что в него включено. Восстановите резервную копию на новом сервере, чтобы посмотреть, как это работает.

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [17.Август.2024 11:24:54 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/4 "2024-08-17T11:24:54Z")

</div>

Но главный вопрос в том, почему резервная копия весит чуть меньше 1 ГБ (содержит всего 3100 файлов), даже если папка S3 ‘Uploads’ занимает 3,2 ГБ и содержит 32 тысячи файлов. (В логах резервного копирования чётко указано, что было загружено лишь около 10%, то есть 3 тысячи файлов).

[Мне довольно неудобно создавать новую установку Discourse на другом домене для проверки этого, хотя я считаю, что создать снимок и, при необходимости, откатить свой, не слишком загруженный, сайт обратно за 5 минут без лишних хлопот — это очень просто].

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [18.Август.2024 14:58:27 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/5 "2024-08-18T14:58:27Z")

</div>

Что ж, я подумал, что даже после изменения опции в Rails C, не помешает добавить эту строку и в yml: `DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true`, думая, что, возможно, это заставит систему подтянуть все мои загрузки из AWS S3.

Однако, после изменения этой опции в yml, пересборки контейнера и запуска резервного копирования, я обнаружил те же строки в логах резервного копирования (3000 загрузок медиафайлов и около 100 сбоев).

А когда я попытался восстановить (я ещё не менял настройки загрузок/S3 в своих административных настройках), возникла ошибка.

````plaintext
Полный лог:
![image|690x389](upload://fN6fSsRv2l37aN7O2Mxie7kwx8V.png)```
````

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [18.Август.2024 16:02:03 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/6 "2024-08-18T16:02:03Z")

</div>

> [@Bathinda Helper](#):
>
> (Я ещё не менял настройки загрузки/S3 в своих настройках администратора

Таким образом, система попытается загрузить изображения в ваш бакет S3.

Если вы откроете tar-архив, то увидите, что в нём содержатся все ваши изображения, кроме ста, для которых появляется сообщение об ошибке.

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [19.Август.2024 04:15:09 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/7 "2024-08-19T04:15:09Z")

</div>

![image](https://global.discourse-cdn.com/meta/original/4X/7/3/c/73c38eecca7abf8a2138cb3a6307344df3aecb43.png)  
Итак, я отключил загрузку в S3, а затем попытался восстановить мою резервную копию размером 1 ГБ (сама резервная копия всё ещё находится в AWS S3), но снова произошла ошибка. Что может пойти не так в этой ситуации?

Кроме того, после неудачной попытки восстановления я был разлогинен, а при повторном входе увидел баннер с сообщением о том, что все адреса электронной почты, не принадлежащие сотрудникам, отключены. Когда я попытался получить доступ к логу по ссылке, полученной на почту, файл не был найден/недоступен (отобразилась моя настроенная страница ошибок).

Во время попытки восстановления, непосредственно перед разлогиниванием, я видел следующие сообщения в логе:

```plaintext
[2024-08-19 04:12:58] 'Bathinda_Helper' начал восстановление!
[2024-08-19 04:12:58] Пометка восстановления как запущенного...
[2024-08-19 04:12:58] Проверка существования /var/www/discourse/tmp/restores/default/2024-08-19-041258...
[2024-08-19 04:12:59] Загрузка архива во временный каталог...

```

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [19.Август.2024 04:23:31 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/8 "2024-08-19T04:23:31Z")

</div>

При следующей попытке «FAILED-restore» мне удалось нажать на ссылку к логу непосредственно перед выходом из системы. Вот она:  
[log- failed restore.txt](https://meta.discourse.org/uploads/short-url/bsTk8Nqw2p2IvBKJHPyScQhd4NO.txt) (98.9 KB)

Я провёл некоторые эксперименты и подтвердил, что новые загрузки действительно создаются на моём локальном сервере Ubuntu. Однако восстановление их из S3 на локальный сервер не удаётся. Но дело в том, что в нескольких проверенных мной постах изображения из S3 всё ещё отображаются (они не пропали).

Пожалуйста, дайте рекомендации.

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [01.Сентябрь.2024 13:30:15 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/9 "2024-09-01T13:30:15Z")

</div>

Помогите, пожалуйста. Восстановление снова и снова не удаётся.

Кроме того, после «Неудачного восстановления», даже при входе в систему с тем же администратором, я не могу получить доступ к вложению «Log.txt». Вместо этого отображается страница «Страница недоступна» или страница ошибки моей настройки.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [01.Сентябрь.2024 15:14:58 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/10 "2024-09-01T15:14:58Z")

</div>

Попробуйте запустить din через командную строку и использовать tmux или screen, чтобы можно было прокручивать лог назад.

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [02.Сентябрь.2024 04:13:51 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/11 "2024-09-02T04:13:51Z")

</div>

Из вашего [этого поста](https://meta.discourse.org/t/command-line-restore-for-web-only-container-cant-load-thor/68570/8?u=bathinda) я попробовал выполнить нижеприведённые действия через Tmux, как вы и указали, но это не сработало:

 ![image](https://global.discourse-cdn.com/meta/original/4X/b/a/f/bafba4eb6c39d3650cbb906d1b749103b9009b01.png)

Также, поскольку у меня есть контейнеры ‘data’ и ‘Web\_only’, к какому из них нужно выполнять восстановление?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [02.Сентябрь.2024 10:38:03 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/12 "2024-09-02T10:38:03Z")

</div>

Вы восстанавливаете данные из контейнера web\_only так, как вы это делаете.

Вы успешно включили восстановление в первой команде (непонятно, зачем вы пытаетесь сделать это другим способом). Теперь выполните:

```
 discourse restore

```

---

<div class="post-metadata">

### Author: ![Bathinda](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bathinda/32/135888_2.png) [@Bathinda](https://meta.discourse.org/u/Bathinda)
#### Post date: [02.Сентябрь.2024 10:40:26 UTC](https://meta.discourse.org/t/restore-failing-can-ignore-discrepancies/322057/13 "2024-09-02T10:40:26Z")

</div>

> [@pfaffman](#):
>
> Не понимаю, зачем пытаться сделать это другим способом.

На самом деле я пытался сделать ровно то же самое, что показано на ваших скриншотах в посте, на который вы ссылаетесь выше. В любом случае, сейчас я ограничусь только «восстановлением Discourse».

Как я понял (и надеюсь, что так и есть), мне не нужно указывать путь к файлу резервной копии (.tz), где бы он ни лежал; система автоматически найдет его в папке резервных копий на моем локальном сервере.
