Условия необходимые для резервного копирования
Для возможности осуществления процесса копирования, на сервере с которого производится копирование архивных данных, необходима установка программы rsync. В свою очередь на сервере куда производится копирование данных должна быть установлена не только программа rsync, но и rdiff-backup.
Генерация ключей для возможности соединения серверов по протоколу «SSH»
Для начала необходимо убедиться, что на копируемом сервере разрешена авторизация по протоколу ssh при помощи ключей. Для этого в файле конфигурации /etc/ssh/sshd_config необходимо удалить, если этого не было сделано ранее, знак комментария # перед директивой PubkeyAuthentication yes. После чего перезапускаем сервис с помощью команды:
systemctl restart ssh
Затем открываем терминал сервера на который будут копироваться резервные данные, перемещаемся в скрытый каталог .ssh и даём команду создания резервного ключа:
ssh-keygen
Данная команда последовательно запросит имя создаваемого ключа, а затем предложит ввести пароль с подтверждением. Все диалоги с предложением ввода игнорируются простым нажатием клавиши «Ввод», за исключением предлога ввода имени ключа.
После ввода данной команды в текущем каталоге будут обнаружены публичный и приватный ключи с введённым нами при его создании именем, у публичного ключа при этом будет добавленно расширение .pub.
Подготовка резервируемого сервера к соединению
Для того, чтобы у резервирующего сервера была возможность подключаться к резервируемому в автоматическом режиме и без ввода пароля, необходимо на резервируемом сервере создать для этого специального пользователя и отправить на него только-что созданный нами публичный ключ специальной командой:
ssh-copy-id -i ~/.ssh/[имя ключа].pub [имя пользователя]@[имя копируемого сервера]
После ввода данной команды, резервируемый сервер запросит пароль данного пользователя, который был заранее на нём создан, чтобы зарегистрировать его с данным ключом и не будет запрашивать пароль в дальнейшем.
После экспорта ключа, подключение резервирующего сервера к резервируемому, будет происходить по ssh, без необходимости ввода пароля, по одной лишь команде:
ssh -i ~/.ssh/[имя ключа] [имя пользователя]@[имя сервера]
Создание на резервирующем сервере структуры папок для резервных копий
Сначала создадим коренной каталог, для хранения структуры каталогов для резервирования:
mkdir backup
Затем в этом каталоге создадим три следующих каталога:
mkdir log var incremental
- Каталог log создаётся для хранения журналов работ по резервированию.
- В каталоге var, в данном случае, будет храниться исходный образец целевого каталога резервируемого сервера.
- Каталог incremental будет предназначаться для хранения всех изменений зеркала var, в хронологическом порядке.
Стоит уточнить, что для полного копирования функционала исходного сайта необходимо настроить репликацию базы данных «master — slave».
При обеспечении функционала резервного копирования на сервере, необходимо всю нагрузку по копированию возлагать на резервирующий сервер, так-как подразумевается, что копируемые данные находятся на сервере обслуживающем пользователей и его не стоит нагружать сервисными задачами.
Резервирование данных
Для запуска резервирования на резервирующем сервере запускаем команду:
rsync --delete -e "ssh -i ~/.ssh/backup" --bwlimit=30000 -zauP [имя пользователя]@[имя резервируемого сервера]:/var/www var
- Здесь аргумент —delete удаляет все данные, которые были удалены с предыдущего копирования на исходном сервере.
- Аргумент -e «ssh -i ~/.ssh/backup» задаёт копирующему серверу способ подключения и ключ для этого.
- Аргумент —bwlimit=30000 не обязательный и он устанавливает для копирующего сервера скорость передачи данных, он символизирует количество килобайтов в секунду.
- Аргумент -zauP так-же не обязательный и он задаёт тонкие настройки при копировании. Более подробные инструкции по этому аргументу стоит посмотреть в специальной документации.
- Завершающие аргументы команды [имя пользователя]@[имя резервируемого сервера]:/var/www var задают авторизацию при подключении к копируемому каталогу и реаположение копируемого материала на текущем копирующем сервере соответственно.
При первом запуске данной команды, процесс происходит заметно дольше, чем в последующие разы, в зависимости от объёма копируемых данных. Это связанно с тем, что происходит сплошное копирование указанного каталога. В последующие разы команда инициализирует копирование лишь тех фрагментов данных, которые были изменены с предыдущих операций копирования.
На этом шаге важно, не забыть установить бэкап-скрипт для копирования базы данных обрабатываемого нами сервера.
Запуск программы архивации данных
Следующим шагом, следует запуск архивации копированных данных:
rdiff-backup -v5 --print-statistics /var/www incremental/var/www
При этом, важно обратить внимание на то, что структура папок целевого назначения была уже сформирована.
Настройка автоматического архивирования данных по расписанию
0 2 * * * rsinc --delete -e "ssh -i ~/.ssh/backup" --bwlimit=30000 zauP ssh-backup@syoma.ru:/var/www/ > backup/log/rsinc-www-log-$(date +\%Y-\%m\%d).txt 2> backup/log/rsync-www-error-$(date +\%Y-\%m-\%d).txt
- Второй аргумент задаёт время запуска инструкции в часах.
- Далее , после установления расписания, инструкция почти повторяет команду описанную выше, при запуске резервирования данных, за тем исключением, что вывод записывается по указанному пути в файл журнала, и здесь в именах пользователя и сертификата безопасности показаны конкретные значенияю
0 3 * * * rdiff-backup --remove-older-then 4W backup/incremental/var/www
- Здесь так-же, как и в предыдущей инструкции заданно время ей выполнения.
- Далее следует команда по удалению всех сохранённых данных, которым больше четырёх недель.
0 6 * * * rdiff-backup -v5 --print-statistics /var/www incremental/var/www > backup/log/rsinc-www-log-$(date +\%Y-\%m\%d).txt 2> backup/log/rdiff-www-error-$(date +\%Y-\%m-\%d).txt
- Инструкция имеет задание на запуск, аналогично предыдущим двум и очень схожа с первой инструкцией, за тем лишь исключением, что она не копирует содержимое копируемого сервера, а производит архивирование полученного результата с записью процесса в файл журнала, специально для этого предназначенного.
Резервное копирование в Linux: основы и методы

Введение
Резервное копирование данных — это важная задача для любой операционной системы, в том числе и для Linux. Резервное копирование позволяет сохранить ценную информацию и защитить ее от потери в случае сбоев, ошибок или катастрофических ситуаций. В этой статье мы рассмотрим основные принципы резервного копирования в Linux и рассмотрим различные методы, которые можно использовать.
1. Создание резервных копий с помощью утилиты rsync
rsync — это популярная утилита в Linux, которая предоставляет мощные возможности для копирования и синхронизации файлов и каталогов. Она позволяет создавать инкрементные копии данных, обновлять только измененные файлы и переносить данные по сети. Вот пример команды для создания резервной копии с использованием rsync:
rsync -av --delete /path/to/source /path/to/destination
Эта команда копирует все файлы из /path/to/source
в /path/to/destination
, сохраняя структуру каталогов и обновляя только измененные файлы. Флаги -av
указывают на режим архивирования
, который сохраняет права доступа, временные метки и другие атрибуты файлов, и verbose
, чтобы получить подробный вывод. Флаг --delete
удаляет файлы из /path/to/destination
, которых нет в /path/to/source
.
2. Использование программного обеспечения для резервного копирования
Большинство дистрибутивов Linux предоставляют программное обеспечение для резервного копирования, которое облегчает создание и управление резервными копиями. Некоторые из популярных программ включают в себя Bacula, Duplicati, Back In Time и Déjà Dup. Эти программы обеспечивают графический интерфейс и могут автоматически создавать резервные копии в заданный период.
3. Использование облачного хранилища для резервного копирования
Еще один метод резервного копирования в Linux — использование облачных хранилищ. Облачные хранилища, такие как Google Drive, Dropbox, Amazon S3, предоставляют возможность сохранить ваши данные в удаленном и безопасном хранилище. Для работы с облачными хранилищами в Linux вы можете использовать утилиты, такие как rclone, которая позволяет синхронизировать данные между вашим компьютером и облачным хранилищем.
Заключение
Резервное копирование данных — важная задача для обеспечения безопасности и сохранности информации. В Linux вы можете использовать утилиту rsync для создания инкрементных резервных копий, программное обеспечение для резервного копирования с графическим интерфейсом или облачные хранилища для сохранения данных в удаленном месте. При выборе метода резервного копирования в Linux, учтите ваши потребности, доступные ресурсы и уровень безопасности, который вам требуется. От регулярного создания резервных копий зависит сохранность ваших данных в случае сбоя или потери информации.