Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Практические руководства
  • Веб-сервис
    • Все руководства
    • Статический сайт в Object Storage
    • Сайт на LAMP- или LEMP-стеке
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Network Load Balancer
    • Отказоустойчивый сайт с балансировкой нагрузки с помощью Application Load Balancer
    • Сайт на базе Joomla с БД PostgreSQL
    • Создание сайта на WordPress
    • Сайт на WordPress с БД MySQL
    • Перенос WordPress сайта с хостинга в Yandex Cloud
    • Сайт на базе 1С-Битрикс
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Публикация обновлений для игр с помощью Cloud CDN
    • Интеграция L7-балансировщика с Cloud CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
  • Интернет-магазины
    • Все руководства
    • Интернет-магазин на 1С-Битрикс
    • Интернет-магазин на OpenCart
  • Архив данных
    • Все руководства
    • Однонодовый файловый сервер
    • Настройка SFTP-сервера на Centos 7
    • Резервное копирование в Object Storage через Acronis
    • Резервное копирование в Object Storage с помощью CloudBerry Desktop Backup
    • Резервное копирование в Object Storage через Duplicati
    • Резервное копирование в Object Storage с помощью Bacula
    • Резервное копирование в Object Storage с помощью Veritas Backup Exec
    • Распознавание архива изображений в Vision
  • Тестовая среда
    • Все руководства
    • Тестирование приложений с помощью GitLab
    • Создание тестовых ВМ через GitLab CI
    • Высокопроизводительные вычисления на прерываемых ВМ
    • Эмуляция множества IoT-устройств
    • Нагрузочное тестирование gRPC-сервиса
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • HTTPS-тест с постоянной нагрузкой с помощью Phantom
    • HTTPS-тест со ступенчатой нагрузкой с помощью Pandora
    • Нагрузочное тестирование с нескольких агентов
  • Управление инфраструктурой
    • Все руководства
    • Начало работы с Terraform
    • Загрузка состояний Terraform в Object Storage
    • Начало работы с Packer
    • Сборка образа ВМ с набором инфраструктурных инструментов с помощью Packer
    • Автоматизация сборки образов с помощью Jenkins и Packer
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Миграция в Yandex Cloud с помощью Hystax Acura
    • Защита от сбоев с помощью Hystax Acura
    • Настройка синхронизации часов с помощью NTP
    • Работа с группой ВМ с автомасштабированием
    • Масштабирование группы ВМ по расписанию
    • Автомасштабирование группы ВМ для обработки сообщений из очереди Message Queue
    • Обновление группы ВМ под нагрузкой
    • Передача логов с ВМ в Cloud Logging
    • Резервное копирование ВМ с помощью Hystax Acura Backup
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Создание SAP-программы в Yandex Cloud
    • Настройка локального кеширующего DNS-резолвера
    • Миграция DNS-зон из Яндекс 360 в Cloud DNS
    • Интеграция Cloud DNS и корпоративного сервиса DNS
    • Создание веб-хука резолвера ACME для ответов на DNS01-проверки
    • Запись логов балансировщика в PostgreSQL
    • Создание триггера для бюджетов, который вызывает функцию для остановки ВМ
  • Построение Data Platform
    • Все руководства
    • Миграция БД из стороннего кластера Apache Kafka® в Managed Service for Apache Kafka®
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Перенос данных между кластерами Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for YDB с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Настройка Kafka Connect для работы с кластером Managed Service for Apache Kafka®
    • Управление схемами данных в Managed Service for Apache Kafka®
    • Использование Managed Schema Registry с Managed Service for Apache Kafka®
    • Использование Confluent Schema Registry с Managed Service for Apache Kafka®
    • Миграция базы данных из MySQL в ClickHouse с помощью Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Настройка Managed Service for ClickHouse для Graphite
    • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse
    • Поставка данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse с помощью Data Transfer
    • Получение данных из RabbitMQ в Managed Service for ClickHouse
    • Сохранение потока данных Data Streams в Managed Service for ClickHouse
    • Использование гибридного хранилища в Managed Service for ClickHouse
    • Шардирование таблиц Managed Service for ClickHouse
    • Настройка Cloud DNS для доступа к кластерам управляемых баз данных из других облачных сетей
    • Настройка Cloud DNS для доступа к кластеру Managed Service for ClickHouse из других облачных сетей
    • Обмен данными между Managed Service for ClickHouse и Data Proc
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Использование скриптов инициализации для настройки GeeseFS в Data Proc
    • Миграция данных из стороннего кластера Elasticsearch в Managed Service for Elasticsearch с помощью Reindex API
    • Миграция коллекций из стороннего кластера MongoDB в Managed Service for MongoDB
    • Миграция данных в Managed Service for MongoDB
    • Шардирование коллекций MongoDB
    • Анализ производительности и оптимизация MongoDB
    • Миграция БД из стороннего кластера MySQL в кластер Managed Service for MySQL
    • Анализ производительности и оптимизация Managed Service for MySQL
    • Синхронизация данных из стороннего кластера MySQL в Managed Service for MySQL с помощью Data Transfer
    • Миграция БД из Managed Service for MySQL в сторонний кластер MySQL
    • Миграция БД из Managed Service for MySQL в Object Storage с помощью Data Transfer
    • Импорт данных из Managed Service for MySQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for MySQL в Managed Service for Apache Kafka® с помощью Debezium
    • Миграция БД из Managed Service for MySQL в Managed Service for YDB с помощью Data Transfer
    • Создание кластера PostgreSQL для «1С:Предприятия»
    • Анализ производительности и оптимизация Managed Service for PostgreSQL
    • Миграция БД из Managed Service for PostgreSQL
    • Миграция БД из стороннего кластера PostgreSQL в Managed Service for PostgreSQL
    • Асинхронная репликация данных из PostgreSQL в ClickHouse
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Data Transfer
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for Apache Kafka® с помощью Debezium
    • Импорт данных из Managed Service for PostgreSQL в Data Proc с помощью Sqoop
    • Поставка данных из Managed Service for PostgreSQL в Managed Service for YDB с помощью Data Transfer
    • Миграция БД из Managed Service for PostgreSQL в Object Storage
    • Миграция БД из Greenplum® в ClickHouse
    • Миграция БД из Greenplum® в PostgreSQL
    • Миграция БД из стороннего кластера Redis в Managed Service for Redis
    • Использование кластера Managed Service for Redis в качестве хранилища сессий PHP
  • Продукты Microsoft в Yandex Cloud
    • Все руководства
    • Развертывание Active Directory
    • Развертывание Microsoft Exchange
    • Развертывание Remote Desktop Services
    • Развертывание группы доступности Always On с внутренним сетевым балансировщиком
    • Развертывание Remote Desktop Gateway
  • Сетевая инфраструктура
    • Все руководства
    • Архитектура и защита базового интернет-сервиса
    • Настройки DHCP для работы с корпоративным DNS-сервером
    • Маршрутизация с помощью NAT-инстанса
    • Создание туннеля IPSec VPN
    • Установка виртуального роутера Cisco CSR 1000v
    • Установка виртуального роутера Mikrotik CHR
    • Соединение с облачной сетью при помощи OpenVPN
    • Создание и настройка шлюза UserGate в режиме прокси-сервера
    • Создание и настройка шлюза UserGate в режиме межсетевого экрана
    • Настройка сети для Data Proc
  • Визуализация и анализ данных
    • Все руководства
    • Визуализация данных из файла
    • Создание и публикация диаграммы с картой Москвы из CSV-файла
    • Анализ продаж сети магазинов из БД ClickHouse
    • Анализ открытых данных ДТП на дорогах России
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse и Cloud Marketplace
    • Веб-аналитика с подключением к Яндекс Метрике
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • Аналитика мобильного приложения на данных AppMetrica
    • Анализ статистики подкастов Яндекс Музыки (для авторов подкастов)
    • Визуализация данных с помощью QL-чарта
    • Анализ customer journey мобильного приложения на данных AppMetrica
    • Анализ логов Object Storage при помощи DataLens
  • Интернет вещей
    • Руководства по работе с интернетом вещей
    • Мониторинг состояния географически распределенных устройств
    • Мониторинг показаний датчиков и уведомления о событиях
  • Бессерверные технологии
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Хранение журналов работы приложения
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка пользовательской интеграции в API Gateway
    • Разработка CRUD API для сервиса фильмов
    • Разработка навыка Алисы и сайта с авторизацией
  1. Архив данных
  2. Настройка SFTP-сервера на Centos 7

Настройка SFTP-сервера на Centos 7

Статья создана
Yandex Cloud
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте виртуальную машину для SFTP-сервера
  • Настройте SFTP-сервер
  • Создайте SFTP-пользователя
  • Создайте виртуальную машину для SFTP-клиента
  • Создайте резервную копию конфигурационных файлов на SFTP-сервере
  • Настройте расписание для резервного копирования
  • Проверьте работоспособность резервного копирования
  • Восстановите настройки из резервной копии
  • Проверьте корректность восстановления
  • Удалите созданные облачные ресурсы

С помощью этой инструкции вы научитесь:

  • разворачивать SFTP-сервер в инфраструктуре Yandex Cloud;
  • выполнять резервное копирование конфигурационных файлов с SFTP-клиента на SFTP-сервер по расписанию.

Чтобы развернуть нужную инфраструктуру, следуйте инструкциям:

  1. Подготовьте облако к работе.
  2. Создайте виртуальную машину для SFTP-сервера.
  3. Настройте SFTP-сервер.
  4. Создайте SFTP-пользователя.
  5. Создайте виртуальную машину для SFTP-клиента.
  6. Сделайте бэкап конфигурационных файлов на SFTP-сервер.
  7. Настройте расписание для бэкапа.
  8. Проверьте работоспособность бэкапа.
  9. Восстановите настройки из бэкапа.
  10. Проверьте корректность восстановления.
  11. Удалите созданные облачные ресурсы.

Подготовьте облако к работе

Перед работой нужно зарегистрироваться в Yandex Cloud и создать платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь, если вы еще не зарегистрированы.
  2. На странице биллинга убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость инфраструктуры для примера входит:

  • плата за две постоянно запущенные ВМ (см. тарифы Yandex Compute Cloud):
    • виртуальная машина для SFTP-клиента;
    • виртуальная машина для SFTP-сервера.
  • плата за использование динамического или статического внешнего IP-адреса (см. тарифы Yandex Virtual Private Cloud).

Создайте виртуальную машину для SFTP-сервера

Чтобы создать виртуальную машину:

  1. На странице каталога в консоли управления нажмите кнопку Создать ресурс и выберите пункт Виртуальная машина.

  2. В поле Имя введите имя виртуальной машины, например sftp-server.

    • Длина — от 3 до 63 символов.
    • Может содержать строчные буквы латинского алфавита, цифры и дефисы.
    • Первый символ — буква. Последний символ — не дефис.
  3. Выберите зону доступности, в которой должна находиться виртуальная машина.

  4. В блоке Выбор образа/загрузочного диска перейдите на вкладку Cloud Marketplace и выберите образ CentOS 7.

  5. В блоке Вычислительные ресурсы выберите следующую конфигурацию:

    • Платформа — Intel Cascade Lake.
    • Гарантированная доля vCPU — 20%.
    • vCPU — 2.
    • RAM — 2 ГБ.
  6. В блоке Сетевые настройки выберите сеть и подсеть, к которым нужно подключить виртуальную машину. Если нужной сети или подсети еще нет, вы можете создать их на странице создания виртуальной машины.

  7. В поле Публичный адрес оставьте значение Автоматически, чтобы назначить виртуальной машине случайный внешний IP-адрес из пула Yandex Cloud. Чтобы внешний IP-адрес не изменялся после остановки виртуальной машины, сделайте его статическим.

  8. Укажите данные для доступа на виртуальную машину:

    • В поле Логин введите имя пользователя.
    • В поле SSH-ключ вставьте содержимое файла открытого ключа. Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к виртуальным машинам по SSH.

    Внимание

    IP-адрес и имя хоста (FQDN) для подключения к машине будут назначены ей при создании. Если вы выбрали вариант Без адреса в поле Публичный адрес, вы не сможете обращаться к виртуальной машине из интернета.

  9. Нажмите кнопку Создать ВМ.

Создание виртуальной машины может занять несколько минут.

Настройте SFTP-сервер

Функционал SFTP-сервера включен в стандартную программу SSH, которая поставляется с дистрибутивом Centos 7. Для настройки SFTP-сервера отредактируйте конфигурационный файл /etc/ssh/sshd_config:

  1. Откройте конфигурационный файл в редакторе vi. Этот редактор поставляется с дистрибутивом и не требует установки. Если вы не знакомы с этим редактором, то подробности вы можете узнать в официальной документации.

    sudo vi /etc/ssh/sshd_config
    
  2. Добавьте следующие строчки в конец файла:

    Match User fuser
    ForceCommand internal-sftp
    PasswordAuthentication no
    ChrootDirectory /var/sftp
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no
    

    Назначение параметров:

    • Match User fuser - указывает на то, что все последующие строчки будут применены только при подключении пользователя fuser.
    • ForceCommand internal-sftp — подключать пользователя только в режиме SFTP и не разрешать доступ в shell.
    • PasswordAuthentication no — отключить доступ по логину и паролю.
    • ChrootDirectory /var/sftp — ограничить доступ пользователя только в рамках папки /var/sftp.
    • PermitTunnel no, AllowAgentForwarding no, AllowTcpForwarding no, X11Forwarding no - отключить туннелирование, проброс портов и графических приложений через SSH-сессию.
  3. Сохраните файл.

  4. Выведите конфигурационный файл без закомментированных и пустых строк:

    cat /etc/ssh/sshd_config | grep -v -e '^#' -e '^$'
    
  5. Убедитесь, что вывод предыдущей команды совпадает с данными строками:

    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key
    HostKey /etc/ssh/ssh_host_ed25519_key
    SyslogFacility AUTHPRIV
    AuthorizedKeysFile .ssh/authorized_keys
    PasswordAuthentication no
    ChallengeResponseAuthentication no
    GSSAPIAuthentication yes
    GSSAPICleanupCredentials no
    UsePAM yes
    X11Forwarding yes
    AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
    AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
    AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
    AcceptEnv XMODIFIERS
    Subsystem sftp  /usr/libexec/openssh/sftp-server
    Match User fuser
    ForceCommand internal-sftp
    PasswordAuthentication no
    ChrootDirectory /var/sftp
    PermitTunnel no
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no
    
  6. Сохраните файл.

  7. Перезагрузите SFTP-сервис, чтобы настройки вступили в силу:

    sudo systemctl restart sshd
    
  8. Создайте группу для SFTP-пользователей:

    sudo groupadd ftpusers
    
  9. Создайте папки для сохранения файлов:

    sudo mkdir -p /var/sftp/backups
    
    • sftp — корневая папка SFTP-сервера.
    • backups — папка для хранения резервных копий на SFTP-сервере.
  10. Установите разрешения на папки таким образом, чтобы все пользователи, входящие в состав группы ftpusers могли записывать и читать файлы на SFTP-сервере:

    sudo chown root:ftpusers /var/sftp/backups
    sudo chmod 770 /var/sftp/backups
    
  11. Проверьте корректность выставленных разрешений:

    ls -la /var | grep sftp
    ls -la /var/sftp
    

    Результат:

    drwxr-xr-x.  4 root root   37 Aug  7 11:35 sftp
    drwxrwx---. 2 root ftpusers 80 Aug  7 08:41 backups
    

Создайте SFTP-пользователя

  1. Создайте SFTP-пользователя, например fuser:

    sudo useradd fuser
    
  2. Создайте пароль для SFTP-пользователя

    sudo passwd fuser
    
  3. Создайте SSH-ключи для пользователя fuser. Команда должна выполняться от имени пользователя fuser:

    sudo runuser -l  fuser -c 'ssh-keygen -t ed25519'
    

    Процесс генерации ключа приведен ниже. Поле passphrase оставьте пустым.

    [yc-user@ftp-server ~]$ sudo runuser -l fuser -c 'ssh-keygen -t ed25519'      
    Generating public/private ed25519 key pair.
    Enter file in which to save the key (/home/fuser/.ssh/id_ed25519): 
    Created directory '/home/fuser/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/fuser/.ssh/id_ed25519.
    Your public key has been saved in /home/fuser/.ssh/id_ed25519.pub.
    The key fingerprint is:
    SHA256:sXiE7EfPl8mo9mZCG+ta7fBxwdwdhbjNux63P8EIYNs fuser@ftp-server.ru-central1.internal
    The key's randomart image is:
    +--[ED25519 256]--+
    |             . ..|
    |     . . o  . . .|
    |      o = +  + . |
    |     . + * E.+o..|
    |      o S + X +..|
    |       ooo . o.o |
    |       .=+o . ..o|
    |       o+=oo  .+.|
    |      .o.++  ...+|
    +----[SHA256]-----+
    
  4. Создайте файл для сохранения публичных SSH-ключей SFTP-клиента. Поставьте нужные разрешения.

    sudo touch /home/fuser/.ssh/authorized_keys
    sudo chmod 600 /home/fuser/.ssh/authorized_keys
    sudo chown fuser:fuser /home/fuser/.ssh/authorized_keys
    
  5. Убедитесь, что разрешения выставлены верно:

    ls -la /home/fuser/.ssh/
    

    Вывод должен быть таким:

    -rw-------. 1 fuser fuser  421 Aug  7 08:31 authorized_keys
    -rw-------. 1 fuser fuser  419 Aug  7 08:29 id_ed25519
    -rw-r--r--. 1 fuser fuser  107 Aug  7 08:29 id_ed25519.pub
    
  6. Добавьте SFTP-пользователя в SFTP-группу:

    sudo usermod -G ftpusers fuser
    

Создайте виртуальную машину для SFTP-клиента

Процесс создания виртуальной машины для SFTP-клиента полностью совпадает с созданием виртуальной машины для SFTP-сервера.

  1. Выполните пункты 1-9 из раздела создание виртуальной машины для SFTP-сервера (в качестве имени машины укажите, например, sftp-client).

  2. Создайте пару SSH-ключей на SFTP-клиенте. Процесс аналогичен описанному для пользователя fuser в предыдущем разделе:

    ssh-keygen
    
  3. Выведите публичный ключ на экране SFTP-клиента:

    cat ~/.ssh/id_ed25519.pub
    
  4. Зайдите на SFTP-сервер и откройте файл /home/fuser/.ssh/authorized_keys:

    sudo vi /home/fuser/.ssh/authorized_keys
    
  5. Скопируйте SSH-ключ, полученный на SFTP-клиенте, в конец файла.

  6. Сохраните файл.

  7. Убедитесь, что виртуальная машина SFTP-клиента доступна с SFTP-сервера, и наоборот:

    1. Зайдите по SSH на SFTP-сервер.

    2. Найдите публичный или внутренний IP адрес SFTP-клиента в консоли Yandex Cloud в разделе настроек виртуальной машины.

      Важно

      Внутренние адреса SFTP-клиента и SFTP-сервера должны находиться в одной подсети или быть связаны через настройки маршрутизации.

    3. Введите команду в терминале SFTP-сервера, подставив соответствующее значение:

      ping <IP адрес SFTP-клиента>
      
    4. Убедитесь, что пакеты отправляются и получаются успешно:

      ping 84.201.170.171
      PING 84.201.170.171 (84.201.170.171) 56(84) bytes of data.
      64 bytes from 84.201.170.171: icmp_seq=1 ttl=55 time=8.59 ms
      64 bytes from 84.201.170.171: icmp_seq=2 ttl=55 time=6.32 ms
      64 bytes from 84.201.170.171: icmp_seq=3 ttl=55 time=5.95 ms
      ^C
      --- 84.201.170.171 ping statistics ---
      3 packets transmitted, 3 received, 0% packet loss, time 2003ms
      rtt min/avg/max/mdev = 5.955/6.959/8.595/1.168 ms
      
    5. Повторите проверку на SFTP-клиенте.

Создайте резервную копию конфигурационных файлов на SFTP-сервере

В инструкции рассмотрено резервное копирование конфигурационных файлов (с расширением .conf) из папки /etc.

Процесс резервного копирования:

  1. Упакуйте все нужные конфигурационные файлы в архив.
  2. Передайте архив на SFTP-сервер.
  3. Удалите архив на SFTP-клиенте.

Чтобы настроить процесс резервного копирования:

  1. Зайдите по SSH на виртуальную машину SFTP-клиента таким же способом, как это было проделано для SFTP-сервера.

  2. Установите переменные окружения для корректной работы скрипта. Для этого откройте файл ~/.bash_profile

    vi ~/.bash_profile
    
  3. Добавьте следующие строчки в конец файла, подставив нужные значения:

    export SFTP_SERVER=<IP адрес SFTP-клиента>
    export SFTP_USER='fuser'
    
  4. Примените настройки:

    source ~/.bash_profile
    
  5. Проверьте, что у вас появились данные переменные:

    env | grep SFTP
    

    На экране должно появиться:

    SFTP_USER=fuser
    SFTP_SERVER=10.128.0.5
    
  6. Запакуйте все конфигурационные файлы в один архив:

    sudo find /etc -type f -name *.conf -print0 | sudo tar -czf backup.tar.gz --null -T -
    
    • sudo find /etc -type f -name *.conf -print0 — поиск всех файлов .conf из папки /etc.
    • sudo tar -czf backup.tar.gz --null -T - — перемещение конфигурационных файлов в архив backup.tar.gz.
  7. Перешлите полученный архив на SFTP-сервер:

    url -T backup.tar.gz sftp://$SFTP_SERVER/backups/backup_$(hostname)_$(date "+%Y%m%d_%H%M%S").tar.gz --insecure --user $SFTP_USER:
    

    Где:

    • -T — загрузить файл backup.tar.gz на удаленный сервер.

    • $SFTP_SERVER – переменная, которая автоматически примет значение IP адреса SFTP-сервера.

    • backup_$(hostname)_$(date "+%Y%m%d_%H%M%S").tar.gz — добавить к названию архива название компьютера, а также дату и время, когда был создан архив. Это позволит не потеряться в навигации по списку резервных копий на сервере.

      Например, имя архива на сервере может выглядеть так: backup_ftp-server.ru-central1.internal_20190803_180228.tar.gz.

    • --insecure — отключить проверку SSL сертификатов со стороны SFTP-сервера. При этом трафик в рамках SSH-сессии все равно шифруется.

    • $SFTP_USER – переменная, которая автоматически примет значение SFTP-пользователя.

  8. Удалите архив на SFTP-клиенте:

    sudo rm -f backup.tar.gz
    

Все действия для создания резервной копии можно выполнить одной командой:

sudo find /etc -type f -name *.conf -print0 | sudo tar -czf backup.tar.gz --null -T -&& curl -T backup.tar.gz sftp://$SFTP_SERVER/backups/backup_$(hostname)_$(date "+%Y%m%d_%H%M%S").tar.gz --insecure --user $SFTP_USER: && sudo rm -f backup.tar.gz

Настройте расписание для резервного копирования

Для создания регулярных резервных копий ваших настроек можно использовать встроенную программу crontab.

  1. Откройте файл crontab для редактирования:

    crontab -e
    
  2. Добавьте следующую строку, чтобы запускать резервное копирование каждый день в 11 часов вечера:

    0 23 * * * sudo find /etc -type f -name *.conf -print0 | sudo tar -czf backup.tar.gz --null -T -&& curl -T backup.tar.gz sftp://$SFTP_SERVER/backups/backup_$(hostname)_$(date "+%Y%m%d_%H%M%S").tar.gz --insecure --user $SFTP_USER: && sudo rm -f backup.tar.gz
    

Проверьте работоспособность резервного копирования

Чтобы убедиться в том, что резервная копия создается нужным образом, запустите копирование и найдите копию на сервере:

  1. Запустите на SFTP-клиенте команду для резервного копирования:

    sudo find /etc -type f -name *.conf -print0 | sudo tar -czf backup.tar.gz --null -T -&& curl -T backup.tar.gz sftp://$SFTP_SERVER/backups/backup_$(hostname)_$(date "+%Y%m%d_%H%M%S").tar.gz --insecure --user $SFTP_USER: && sudo rm -f backup.tar.gz
    
  2. Зайдите на SFTP-сервер и убедитесь, что файл вида backup_ftp-server.ru-central1.internal_20190803_180228.tar.gz появился в домашнем каталоге SFTP-пользователя. Для этого на SFTP-сервере запустите команду:

    sudo ls /var/sftp/backups
    

Восстановите настройки из резервной копии

Процесс восстановления настроек:

  1. Скачайте резервную копию с SFTP-сервера на SFTP-клиент.
  2. Распакуйте архив.
  3. Скопируйте конфигурационные файлы из архива в систему.
  4. Удалите архив.

Чтобы восстановить настройки из резервной копии:

  1. На SFTP-сервере в папке /var/sftp/backups выберите резервную копию, из которой следует восстановить конфигурационные файлы. Например, это будет backup_ftp-server.ru-central1.internal_20190803_180228.tar.gz.

  2. На SFTP-клиенте сделайте переменную окружения для названия файла резервной копии:

    SFTP_BACKUP='backup_ftp-server.ru-central1.internal_20190803_180228.tar.gz'
    
  3. Скачайте резервную копию с SFTP-сервера на SFTP-клиент:

    sftp $SFTP_USER@$SFTP_SERVER:/backups/$SFTP_BACKUP .
    
  4. Распакуйте архив:

    tar -xzf $SFTP_BACKUP
    
  5. Скопируйте конфигурационные файлы из архива в систему (yes — избегать ввода подтверждения при перезаписи файлов):

    yes | cp -rfp etc / 
    
  6. Удалите архив и распакованное содержимое:

    rm -f $SFTP_BACKUP
    rm -rfd etc
    

Все действия для восстановления из резервной копии можно выполнить одной командой:

sftp $SFTP_USER@$SFTP_SERVER:/backups/$SFTP_BACKUP . && tar -xzf $SFTP_BACKUP && yes | cp -rfp etc / && rm -rfd etc && rm -f $SFTP_BACKUP

Проверьте корректность восстановления

Чтобы проверить, что конфигурационные файлы из архива успешно попадают в файловую систему, добавьте проверочный блок в команду полученную выше:

sftp $SFTP_USER@$SFTP_SERVER:/backups/$SFTP_BACKUP . && tar -xzf $SFTP_BACKUP && echo "## this is from backup" >> etc/yum.conf && yes | cp -rfp etc / && rm -rfd etc && rm -f $SFTP_BACKUP

Команда echo "## this is from backup" >> etc/yum.conf записывает тестовую фразу "## this is from backup" в конец файла etc/yum.conf, распакованного из архива.

После восстановления из резервной копии выполните следующую команду:

cat /etc/yum.conf | grep backup

Убедитесь, что на экране отображается тестовая фраза:

## this is from backup

Удалите созданные облачные ресурсы

Если вам больше не нужны SFTP-сервер и SFTP-клиент:

  • Удалите виртуальные машины для SFTP-клиента и SFTP-сервера (в примере они названы sftp-server и sftp-client).
  • Удалите статический IP адрес, если он был вами создан.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте виртуальную машину для SFTP-сервера
  • Настройте SFTP-сервер
  • Создайте SFTP-пользователя
  • Создайте виртуальную машину для SFTP-клиента
  • Создайте резервную копию конфигурационных файлов на SFTP-сервере
  • Настройте расписание для резервного копирования
  • Проверьте работоспособность резервного копирования
  • Восстановите настройки из резервной копии
  • Проверьте корректность восстановления
  • Удалите созданные облачные ресурсы