# Авто-отгрузка бекапов

В данной статье мы будем работать с услугой «‎Внешнее FTP-хранилище».&#x20;

## Активация FTP-хранилища

Эта услуга доступна в соответствующем разделе [Биллинг](https://billing.spacecore.pro/)[а](https://billing.spacecore.pro/). Выберем «Динамический тариф».

<figure><img src="/files/BhI1468lpyDEzs1FOw3d" alt=""><figcaption></figcaption></figure>

Указываем необходимое количество памяти хранилища (до **3,5Тб**), например, **50Гб**, после чего добавляем тариф в корзину и оплачиваем.

<figure><img src="/files/thhkj2GawKxwE9O4dFp9" alt=""><figcaption></figcaption></figure>

Через несколько секунд после оплаты услуга будет активирована и видна в специальном разделе.

<figure><img src="/files/wqYiXhQA9FUH2TWT0BXQ" alt=""><figcaption></figcaption></figure>

Получить данные для работы с ней мы можем, выбрав услугу и нажав на кнопку «Инструкция».

В отдельном окне откроется вкладка со всеми необходимыми для работы данными.

![](/files/MaBfBuWZz8I806ILaAmP)

## Тестовая отгрузка lftp

Теперь перейдем к нашему основному серверу, с которого будет происходить загрузка файлов в **FTP-хранилище**. Нам пригодится статья «[Работа с FTP-хранилищем](/wiki/administration-and-backups/how-to-use-backup-storage.md)».&#x20;

Нам понадобится **lftp**. Установка утилиты на **Debian/Ubuntu** производится командой

```
sudo apt-get -y install lftp
```

![](/files/nH8BsB4WQLR8yQp6R2r1)

Отлично! Попробуем отгрузить тестовый файл, но преждевременно создадим его при помощи команды **touch**.

![](/files/tngcRuwznMHK8SYWtLiV)

Есть. Введем команду для отгрузки файла:

```
lftp ftp://login:pass@backup.s1.fsn.spacecore.pro:21 -e "set ftp:ssl-allow no; put -O / file; quit"
```

{% hint style="info" %}
**login** — имя пользователя хранилища.

**pass** — пароль от хранилища.

**backup.s1.fsn.spacecore.pro** — сервер отгрузки (не нужно изменять).

**/** — директория, куда будет загружен файл в хранилище.

**file** — имя файла, который необходимо отгрузить.
{% endhint %}

Для нашей услуги будет актуальна данная команда, вводим.

```
lftp ftp://spacecore35176:KDAcfR4p1tyz@backup.s1.fsn.spacecore.pro:21 -e "set ftp:ssl-allow no; put -O / spacecore; quit"
```

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

![](/files/xTwnS88O4JbFh0p1A5fG)

Но все еще остается актуальным вопрос: «**Как можно автоматизировать этот процесс?**».

Для начала создадим скрипт, который при запуске будет выполнять все необходимые для нас действия. Создадим файл и откроем редактор при помощи команды

```
nano backup.sh
```

{% hint style="info" %}
Где **backup.sh** — название файла
{% endhint %}

Создадим короткий скрипт с нашей командой для отгрузки.

```
#!/bin/bash
lftp ftp://spacecore35176:KDAcfR4p1tyz@backup.s1.fsn.spacecore.pro:21 -e "set ftp:ssl-allow no; put -O /backups backup.tar.gz; quit"
```

{% hint style="info" %}
Где **#!/bin/bash** — необходимая строка, указывающая, что перед нами именно shell-скрипт.

**/backups** — новая директория для хранения отгруженного файла в хранилище (которую необходимо создать на самом **FTP-сервере**).

**backup.tar.gz** — преждевременно новое имя файла для отгрузки.

По желанию перед отгрузкой файла можно добавить команды архивации тех важных данных, которые необходимо сохранить на удаленном сервере.
{% endhint %}

Сохраняем файл наш скрипт при помощи сочетания **Ctrl + X** **->** **y.** &#x20;

Теперь пробуем отгрузить файл при помощи **Shell-скрипта** (в нашем случае для отгрузки указан архив backup.tar.gz, поэтому сначала создадим его). Затем используем наш скрипт.

```
sh backup.sh
```

Отгрузка началась. Ожидаем завершения процесса.

![](/files/xt0WcsBab9e3SlVxSncQ)

Скрипт работает! Наш архив с данными успешно отгружен на удаленный FTP-сервер.

![](/files/Q8mtfnmulFOp4G5VNbJI)

![](/files/JIFjdp6MK8JmZZwBY1em)

## Автоматизация через CRONTAB

Более подробную информацию о работе с **CRON** Вы сможете найти в виде публичных статей на различных веб-сайтах.

Воспользуемся командой для открытия конфига **CRON**.

```
crontab -e
```

Готово. В данный момент он пуст. В виде комментариев предоставлена информация от разработчиков по настройке автоматизации.

![](/files/C8Si5JVdM123EcuRAZlI)

{% hint style="info" %}
**Минута Час День Месяц День\_недели /путь/к/файлу**
{% endhint %}

Добавим данную строку, чтобы установить регулярный запуск нашего скрипта отгрузки каждый день в 00:00 по времени сервера.

```
0 0 * * * /root/backup.sh
```

{% hint style="info" %}
Где **/root/backup.sh** — путь до исполняемого файла.
{% endhint %}

Отличная работа! Мы создали собственный скрипт для отгрузки бекап-файла, а также научились автоматизировать данную задачу через **CRON**.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://spacecore.gitbook.io/wiki/administration-and-backups/the-backups-auto-upload.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
