- Программы резервного копирования Linux
- Программы для резервного копирования в Linux
- 1. Rsync
- 2. AutoMysqlBackup
- 3. Duplicity
- 4. Rdiff-backup
- 5. Bacula
- 6. Backupninja
- 7. Kbackup
- 8. BackupPC
- 9. Amanda
- 10. Back In Time
- 11. Box Backup Tool
- 12. Luckybackup
- 13. Timeshift
- 14. Clonezilla
- 15. Systemback
- Выводы
- Резервное копирование Linux сервера
- Резервное копирование Linux сервера
- Введение
- Основа безопасности бэкапов
- Создание бэкапов на сервере
- Структура папок для бэкапов
- Backup и его периодичность
- Создание скриптов для бэкапов
- Добавление заданий в cron
- Проверка создания бэкапов
- Создание копии backups используя rsync
- Подключение по сертификату
- Создание скрипта для выполнения rsync
- Добавление задания в cron
- Использование Yndex.Disk для backups
- Установка Davfs2
- Настройка WebDav для Yandex.Disk
- Создание скрипта для работы с Yandex.Disk
- Добавление задания в cron
- Заключение
Программы резервного копирования Linux
Системные администраторы шутят, что люди делятся на два типа: те кто не делает резервные копии и те, кто уже делает резервные копии. В работе любого пользователя или системного администратора рано или поздно возникнет момент, когда что-то сломается и важные данные будут утеряны. Если до этого человек резервных копий не делал, то теперь научится и начнёт делать.
Если для домашних пользователей это, в принципе, не очень актуально, то для производственных серверов потеря данных может привести к большим финансовым потерям, поэтому важно всегда иметь хотя бы копию файлов и базы данных просто на всякий случай. В этой статье мы рассмотрим основные инструменты, которые можно использовать для резервного копирования различных элементов системы.
Программы для резервного копирования в Linux
1. Rsync
Утилита rsync не предназначена специально для резервного копирования, но её можно для этого использовать. Эта программа позволяет копировать файлы из одного компьютера на другой по протоколу SSH или своему собственному протоколу Rsync, но для последнего понадобиться чтобы на целевом компьютере был установлен сервер Rsync. Одно из преимуществ программы в том, что она позволяет не передавать через сеть всё содержимое файлов, а только те данные, которые изменились с последнего копирования. Это удобно для того чтобы не перегружать сеть лишними операциями. Никаких автоматизированных решений здесь нет, вам самим придётся настраивать что и куда копировать. Подробнее про Rsync читайте в этой статье.
2. AutoMysqlBackup
Если вам надо делать резервную копию базы данных MySQL, то для этого нельзя просто скопировать все файлы базы данных. Лучше скопировать нужные базы с помощью специального инструмента. К таким инструментам относится скрипт AutoMySQLBackup. С помощью него вы можете настроить регулярное резервное копирование вашей базы данных на другой сервер или в облако. Поддерживается ротация и удаление устаревших резервных копий.
3. Duplicity
Duplicity — это тоже небольшая утилита для резервного копирования файлов сервера, только в отличие от rsync она специально разработана для резервного копирования. Здесь тоже поддерживаются инкриментальные резервные копии и передача архивов по сети на другой сервер, но кроме того, поддерживается шифрование, а также восстановление из ранее сделанной резервной копии.
4. Rdiff-backup
Ещё одна небольшая утилита для резервного копирования, похожая на rsync. Она написана на Python и позволяет делать резервные копии только изменённых файлов. Кроме того, можно хранить резервную копию на другом сервере. На удалённый сервер можно записывать данные по протоколу rsync или ssh.
5. Bacula
Это уже не просто скрипт, а полноценная система резервного копирования, которую надо размещать на нескольких серверах. Она состоит из нескольких компонентов, каждый из которых имеет своё предназначение. Программа имеет открытый исходный код и предназначена, в первую очередь, для предприятий. Кроме полных резервных копий, так же как и в Rsync поддерживаются инкрементные, когда копируются только изменённые данные.
6. Backupninja
У программ, которые можно использовать для резервного копирования, таких как rsync, duplicity, tar и других нет конфигурационных файлов, с помощью которых можно было бы настроить и распланировать резервное копирование. И это понятно, они специально для этого не были предназначены. Backupninja — это оболочка для таких программ. Утилита позволяет настроить резервное копирование как файлов так и баз данных с помощью различных инструментов, но при этом хранит все конфигурационные файлы в одном месте — /etc/backups.d/. К тому же вместе у программой поставляется псевдографическая утилита ninjahelper, помогающая настроить всё почти в графическом интерфейсе.
7. Kbackup
Это небольшая графическая утилита для резервного копирования файлов разработанная для KDE. Позволяет выполнять как полные резервные копии так и архивировать только изменённые файлы. Копии хранятся только на том же компьютере, что и установлена программа, а автоматическое резервное копирование не поддерживается.
8. BackupPC
Это кроссплатформенная программа для резервного копирования, разработанная для больших предприятий. Для управлением резервным копированием используется веб-интерфейс. Можно делать как полные резервные копии, так и только для изменённых файлов. Можно запланировать автоматическое обновления или настроить уведомления о необходимости делать резервные копии.
9. Amanda
Amanda расшифровывается как Advanced Maryland Automatic Network Disk Archiver. Это тоже кроссплатфноменная программа для резервного копирования, созданная, в первую очередь, для предприятий. Она может располагаться на нескольких компьютерах, благодаря клиент-серверной архитектуре и сохранять резервные копии на другой сервер. Для создания резервных копий используются системные утилиты, в Linux это tar.
10. Back In Time
Это простая графическая утилита для настройки автоматического резервного копирования. Поддерживается как копирование на локальный компьютер, так и хранение копий удалённо. Вы можете выбрать папки, которые надо копировать и расположение, куда копировать.
11. Box Backup Tool
Ещё один инструмент корпоративного уровня. Его можно установить на несколько машин и выполнять резервное копирование между ними. Программой можно управлять только с помощью командной строки. Поддерживаются инкрементальные копии, а также шифрование данных.
12. Luckybackup
Это ещё одна оболочка над утилитой rsync, только на этот раз с графическим интерфейсом. Она позволяет планировать автоматическое резервное копирование, выполнять полные копии или только синхронизировать изменения с сервером. Интерфейс утилиты интуитивно понятный и достаточно удобен в использовании.
13. Timeshift
Раньше мы рассматривали программы, предназначенные для резервного копирования отдельных файлов и каталогов, однако существуют программы предназначенные для полного копирования всех файлов операционной системы. К ним относится Timeshift. Программа имеет как графический так и консольный интерфейс и позволяет создавать резервные копии системы с помощью rsync или btrfs. Подробнее об её возможностях читайте тут.
14. Clonezilla
В отличие от Timeshift программа Clonezilla поставляется на отдельном образе и запускается из BIOS. Она позволяет создать резервную копию как Linux так и Windows потому что копирует весь диск побайтово и потом позволяет всё это восстановить. Подробнее о том как пользоваться Clonezilla читайте в отдельной статье.
15. Systemback
Утилита Systemback чем-то похожа на Timeshift. Она тоже позволяет создавать точки восстановления операционной системы и потом с помощью них восстанавливать работу вашего дистрибутива. Кроме того, с помощью утилиты можно скопировать систему на другой диск или создать LiveCD образ для будущего восстановления.
Выводы
Всегда помните, что резервное копирование очень важно, оно помогает предотвратить потерю данных. Существует огромное количество программ резервного копирования Linux, которые помогут регулярно копировать ваши данные.
Вы можете выбрать один из выше рассмотренных инструментов, просто выберите что для вас подходит лучше. Если вы используете другую программу, не описанную здесь, напишите в комментариях!
Источник
Резервное копирование Linux сервера
Резервное копирование Linux сервера
Введение
Правильное создание и безопасное хранение бэкапов задача важная и необходимая. Можно относится халатно, но тогда в случае проблем можете обнаружить что резервных копий нет или они просто испорчены.
Из статьи вы узнаете как я подхожу к этому вопросу и защищаю бэкапы всех своих ресурсов надежно и безопасно в системах Linux.
В примере будет рассмотрен вариант для резервного копирования файлов и базы данных сайта, но можно этот подход использовать и для других задач.
Можно использовать для резервных копий разные программные комплексы или пользоваться средствами которые предоставляют хостинги, но для этого необходимо их изучать или производить финансовые затраты. Лично я предпочитаю использовать механизмы проверенные временем и хранить все бэкапы на своих ресурсах.
Основа безопасности бэкапов
Правильность и безопасность бэкапов включает в себя несколько простых правил:
- Хранение бэкапов за продолжительный период времени. Вариантов почему лучше хранить бэкапы долго множество. Например, удалили какой то материал, но решили восстановить спустя некоторое время или необходимо найти ошибку когда появилась проблема которую обнаружили не сразу.
- Забарать бэкапы сторонним сервером. В идеале лучше использовать под резервные копии специальный сервер использующийся только для бэкапов. В случае если копии бэкапов отправляются с самого сервера где делаются бэкапы это опасно, так как в случае взлома или вируса вы можете потерять все копии.
- Мониторинг как создание бэкапа так и аналитика его размеров. Как бы вы не пытались отслеживать периодически сами как делаются бэкапы по закону подлости, когда они потребуются, обнаружите что они или не делаются или испорчены.
Ниже я по порядку опишу все свои действия которые использую на практике. Будут использованы стандартные программы используемые во всех версиях Linux.
Создание бэкапов на сервере
Самое надежное это когда производится создание резервных копии на самом сервере, так как это гарантирует что вы не получите проблем возникших с удаленным подключением к сторонним ресурсам. Например, при использовании бэкапа на Yndex Disk у меня периодически были ошибки при создании бэкапа.
Структура папок для бэкапов
Создавать папки можно где угодно. Например, мне больше нравится создавать их в корне папку backup и держать там всё что связанно с резервными копиями.
Создадим необходимые папки куда будем класть бэкапы
В итоге мы получили следующие папки:
- /backup — папка где будет находиться всё что связано с резервными копиями;
- /backup/bin — папка где будут находиться скрипты запускаемые по расписанию;
- /backup/infoit.com.ua/day — папка где будут лежать ежедневные бэкапы;
- /backup/infoit.com.ua/month — папка где будут лежать ежемесячные бэкапы;
- /backup/infoit.com.ua/source — папка в которой я храню копии которые были начальными. Например, в случае когда ресурс переносится с другого сервера или возвращается в жизнь после продолжительного перерыва в работе.
Backup и его периодичность
Всегда сложно выбрать какой необходим период хранения и интервал резервного копирования. Для меня удобней организовать резервное копирование по следующей схеме:
- Дневные копии — хранить 30 дней,
- Месячные копии — хранить год.
Подход к резервированию сугубо личное дело и зависит от множества факторов. Главное чтобы эти копии всегда были доступны, исправны и удовлетворяли вашим требованиям.
Создание скриптов для бэкапов
Создадим два скрипта для ежедневного и ежемесячного бэкапа.
Создадим скрипт который будем ежедневно запускать по расписанию:
Для ежемесячных бэкапов создадим такой скрипт:
Первая и последняя команда в обоих скриптах взаимоисключающие. При варианте когда мало места и есть возможность хранить только один бэкап первая команда должна выполняться а последняя нет. В случае достаточного места под бэкапы первую команду не выполняем а в последней выставляем количество дней за которые хранятся бэкапы.
После создания скриптов сделаем их исполнительными выполнив необходимую команду:
Добавление заданий в cron
Время в которое необходимо выполнять выбирайте на свое усмотрение. В большинстве случаев лучше использовать ночное время так как в это время сервера загружены минимально и можно использовать их ресурсы для выполнения своих внутренних задач.
Обязательно учитывайте время когда делается первый бэкап, так как дальнейшие копии сделанных бэкапов надо делать позже по времени для правильного мониторинга.
В случае если создается резервная копия для разных ресурсов выставляйте время с учетом времини которое необходимо для создания бэкапа.
Открываем необходимый файл и добавляем нужный код:
Согласно команде каждый день в 1:20 бедет выполнятся скрипт для создания ежедневного бэкапа и ежемесячно первого числа в 1:25 будет создаваться ежемесячная резервная копия.
Перезагрузим cron в системе CentOS для применения изменений:
Проверка создания бэкапов
Убедится что все работает правильно можно только запустив скрипт у посмотреть результат его работы.
Мне больше нравится брать код непосредственно из файла crontab, так как это последнее место которое выявит ошибки связаные с правильностью написания пути к скрипту.
Из вывода видно какие файлы забекапились и что база данных тоже успешно зарезервиловалась.
Осталось дождаться времени выполнения и проверить как отрабатывает команду cron.
Посмотреть результат работы cron можно заглянув в файл:
Никогда не игнорируйте проверку резервных копий и обязательно настройте надежную систему мониторинга.
Создание копии backups используя rsync
В моем случае под всевозможные бэкапы используется специальный сервер настроенный только для бэкапов.
Подключается к серверу с которого надо забирать бэкапы будем по сертификату. Для копирования будем использовать утилиту rsync.
Именно на этом сервере производится мониторинг правильности создания бэкапов и их размеры средствами программы для мониторинга Zabbix.
Узнать как работать со свободным программным комплексом для мониторинга вы можете из раздела Мониторинг Zabbix.
Возможности Zabbix удовлетворят любые потребности для осуществления любых параметров практически любой системы.
Подключение по сертификату
Более подробно о том как настраивать механизм подключения по сертификаты можете найти в статье RSA или авторизация SSH по ключу.
Скопируем на подключаемый ресурс необходимую часть ключа:
После успешного выполнения пробуем подключиться:
В случае успеха идём дальше.
Для безопасности можно создать пользователя на ресурсе откуда забираете данные и ограничить его только в папке откуда забираем резервные копии.
Создание скрипта для выполнения rsync
Создадим необходимый скрипт:
Скрипт задокументирован и выберите параметры исходя из ваших требований.
Расшифрую параметры указанные в коде:
- a — режиме архива;
- v — увеличение детализации;
- z — сжатие данных файла во время передачи;
- h — вывод чисел в удобочитаемом формате;
- e — используем ssh подключение.
После создания скриптов сделаем их исполнительными выполнив необходимую команду:
Добавление задания в cron
Обязательно учитывайте время когда делается первый бэкап, так как дальнейшие копии сделанных бэкапов надо делать позже по времени для избежания путаницы и правильного мониторинга.
В случае если создается резервная копия для разных ресурсов выставляйте время с учетом времени которое необходимо для создания бэкапа.
Открываем необходимый файл и добавляем нужный код:
Согласно команде каждый день в 6:30 бедет выполнятся скрипт который будет забирать резервные копии согласно вашим пожеланиям.
Дальнейшие проверки аналогичны действиям указаным в разделе выше.
В случае вывода ошибки при выполнении скрипта:
Смотрите правильность указания всех путей и параметров или выполните в консоли команду rsync —help и разбирайте в параметрах команды.
Использование Yndex.Disk для backups
При регистрации домена мне нравится переводить его управление на Yandex. Для бэкапов создаю отдельный почтовый ящик на домене и туда копирую бэкапы сайта. Удобно передовать заказчику управление доменом и резервные копии в одном месте.
Yandex.Disk дает возможность подключится с помощью WebDav. Необходимо добавить пакет davfs2 для работы по WebDav.
К сожалению на данный момент невозможно передавать данные большого размера по WebDav на Yandex.
Вы можете установить на систему консольный клиент от Yandex и проводить резервное копирование с помощью его.
Официальная страница руководства пользователя имеет понятное описание по установке и использованию на разных системах.
Более подробно с описанием сервиса Yandex Disk вы можете ознакомиться перейдя в раздел техподдержки Яндекса.
Установка Davfs2
Рассмотрим настройку на примере системы CentOS 7.
Подключим репозиторий Еpel:
Установим пакет davfs2:
Настройка WebDav для Yandex.Disk
Создадим папку куда будем монтировать:
Чтобы не путаться в конце я указываю логин почты на котором находиться диск.
Смонтируем Yandex.Disk в необходимую папку:
Диск смонтировался в указанную папку.
Отмантировать диск можно командой:
Введение вручную данных при монтировании не всегда удобно и для удобства мы автоматизируем этот процесс.
Отредактируем файл /etc/davfs2/secrets, добавив в конец строку с данными для авторизации:
Так мы можем задать любое количество строчек с необходимыми ресурсами Yandex.Disk.
В случае если вы хотите чтобы диск монтировался при перезагрузке системы то в etc/fstab необходимо добавить строчку:
Теперь при перезагрузке сервера диск автоматически монтируется.
Не советую использовать монитрование через fstab, так как в случае обрыва связи копии не будут копироваться.
Можно конечно настроить механизм который будет окнтролировать это подключение и поднимать его в случае обрыва, но мне это кажется ненужным усложнением.
Создание скрипта для работы с Yandex.Disk
Создалим скрипт для выполнения копирования резервных копий на Yandex.Disk:
Скрипт выполнит следующие действия:
- Сомнтирует удаленый Yandex.Disk;
- Сделает зеркало с папки /backup/infoit.com.ua/day;
- Отмонтирует Yandex.Disk;
- Очистит кэш создаваемый при работе davfs2.
Очищать кэш созданный при работе davfs2 надо обязательно иначе место на диске быстро закончиться.
После создания скриптов дадим необходимые права для всех файлов в папке backup:
Добавление задания в cron
Откроем для редактирования /etc/crontab файл откуда выполнятся задания:
Перезагрузим cron в системе CentOS 7 для применения изминений:
Проверки осуществляем по аналогии с предыдущими главами.
Заключение
Постарался описать максимально понятно все варианты которые я использую при создании резервных копий данных сайтов. В случае если вы найдете ошибки или знаете как можно улучшить данные примеры пожалуйста напишите в комментариях к статье.
Источник