Систем резервного копирования достаточно много от простого FsBackup до комплексного решения Bacula. Но если нужно создать архивную копию с шифрованием и паролем, то приходится использовать GPG и ключи. Есть более простое решение, иногда оно лучше подходит для простого копирования папок с файлами в архив с паролем.
Речь пойдет об архиваторе 7-zip.
В Ubuntu эта программа идет в стандартных репозитариях. Для его установки в CentOS необходимо подключить epel репозитарий:
yum install epel-release
Далее :
yum install p7zip p7zip-plugins
Для создания архива с резервной копией используется команда 7za c ключами:
7za a -mx5 -y -pПароль -xr0@/путь/ignore.txt Путь копирования Объект копирования, где
a - команда добавления файлов в архив
-mx5 - уровень сжатия (в данном случае нормальный)
-y - при всех заданных вопроса отвечать да
-p - Пароль на архив
-xr0@/путь/ignore.txt - путь к файлу с исключениями, которые не нужно архивировать, записываются в каждой отдельной строке файла (перед или после слова исключения надо поставить *, иначе у меня не работало)
Путь копирования - указать папку, в которой будет создаваться архив
Объект копирования - указать файл или папку, которую нужно архивировать.
Атрибут a лишь добавляет файлы в архив, а нам нужно полностью его обновлять, поэтому проще перед командой архивации удалить старую версию архива командой:
rm -f /путь к архиву/Архив, где
-f - принудительное удаление без лишних вопросов.
Также при необходимости можно копировать полученный архив на другой сервер с помощью FTP, SSH и т.д. В нашем случае была расшаренная папке в Windows, поэтому поступамем просто, сначала монтируем сетевой диск и добавляем эту команду для автозагрузки в /etc/rc.local:
mount Удаленная папка /mnt/куда монтировать -o password=
password= - мы оставили пустым, т.к. пароля нет, но система все равно его спросит.
После этого можно осуществлять копирование командой
cp -f Объект копирования Путь копирования , где
-f - принудительно перезаписывает существующий файл
Далее автоматизируем процесс резервного копирования с помощью Cron, создадим задание Задание.cron и впишем в него команды, связанные с помощью && для последовательного выполнения:
#!/bin/bash
rm -f /путь к архиву/Архив&&7za a -mx5 -y -pПароль -xr0@/путь/ignore.txt Путь копирования Объект копирования&&cp -f Объект копирования Путь копирования
С помощью команды crontab -e установим время выполнения задания и поставим ссылку на исполняемый файл Задание.cron
минута час день месяц день_недели /Путь к файлу Задание.cron