# Move a Discourse site to another VPS with rsync

**URL:** https://meta.discourse.org/t/move-a-discourse-site-to-another-vps-with-rsync/43812
**Category:** Sysadmins
**Tags:** migrations, how-to
**Created:** [06.Май.2016 20:21:38 UTC](https://meta.discourse.org/t/move-a-discourse-site-to-another-vps-with-rsync/43812 "2016-05-06T20:21:38Z")
**Posts on this page:** 1
**Showing post:** 31

<div class="post-metadata">

### Author: ![Richie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/richie/32/115110_2.png) [@Richie](https://meta.discourse.org/u/Richie)
#### Post date: [30.Январь.2024 15:02:53 UTC](https://meta.discourse.org/t/move-a-discourse-site-to-another-vps-with-rsync/43812/31 "2024-01-30T15:02:53Z")

</div>

Сегодня я переехал на новый VPS и решил поделиться своим опытом, так как, похоже, многие сталкиваются с блокировкой обновлений из-за устаревшей версии операционной системы 😊

Я использую Digital Ocean, поэтому создал новый droplet.

Старый VPS = Ubuntu Server 18.04.6 LTS

Новый VPS = Ubuntu Server 23.10

Я выполнил стандартные процедуры обслуживания на новом VPS — пожалуйста, адаптируйте их под себя:

```plaintext
Apt-get update

Apt-get upgrade

Apt-get install fail2ban

ufw default deny incoming

ufw default allow outgoing

ufw allow ssh

ufw allow http

ufw allow https

ufw enable
```

Затем я создал новую пустую директорию для Discourse:

```plaintext
sudo mkdir -p /var/discourse
```

После этого установил Docker:

```plaintext
wget -qO- https://get.docker.com/ | sh
```

Затем я изменил TTL в DNS с 30 минут до 10 минут (минимум, разрешённый GoDaddy).

На старом сервере я загрузил локальную копию резервной копии базы данных Discourse за прошлую ночь (локальных резервных копий никогда не бывает слишком много). Также я скачал копию `app.yml` на свой локальный ПК.

Как рекомендовали несколько человек выше, я выполнил rsync «root-to-root». Я использовал IP-адрес вместо имени хоста, чтобы избежать путаницы с DNS. Также, как было предложено выше, я использовал флаги `-avz`:

`rsync -avz root@old.ip.address.here:/var/discourse /var`

Для справки: размер моей папки discourse составляет 25 ГБ.

Синхронизация через rsync со старого сервера на новый заняла около 25 минут. Это было выполнено между двумя droplets Digital Ocean в одном регионе LON1. Ваш опыт может отличаться.

После rsync и попытки пересборки я столкнулся с [той же ошибкой](https://meta.discourse.org/t/move-a-discourse-site-to-another-vps-with-rsync/43812/21?u=richie), что и @piratdavid, связанной с postgres: `database system is shut down`.

Поэтому я остановил приложение на старом VPS:

`./launcher stop app`

И выполнил ещё одну синхронизацию через rsync, но только для изменений:

`rsync -avz --delete root@old.ip.address.here:/var/discourse /var`

Затем я снова запустил старое приложение Discourse и очень быстро перевёл его в режим обслуживания — это позволит пользователям получить к нему доступ и увидеть стандартное предупреждение о техническом обслуживании.

Это также даёт мне немного времени для работы на новом VPS 😊

Я обновил файл HOSTS на своём локальном ПК, чтобы получить доступ к Discourse на новом VPS без предупреждений или проблем в браузере.

На новом VPS я затем выполнил:

`./discourse-setup`

Это необходимо, чтобы автоматически обновить настройки оперативной памяти и процессора в файле `app.yml`.

Затем я выполнил пересборку приложения на новом VPS:

`./launcher rebuild app`

Провёл несколько тестов, всё в порядке.

DNS обновлён — работа завершена.

Спасибо всем за подробную тему 😃

---

_[View the full topic](https://meta.discourse.org/t/move-a-discourse-site-to-another-vps-with-rsync/43812)._
