Введение
Бывают такие ситуации, что некорректно отредактировали какой-нибудь конфигурационный файл, попросту нечаянно удалили или просто хотите сделать backup нужной директории для своего спокойствия
В данной заметке разберем два простых способа из множества вариантов backup, будем использовать tar и cron для запуска нашего backup по расписанию
Способ первый, простой, ручками, для разового backup директорий с помощью Tar
Для начала создадим директорию куда будут складываться наши backup файлы (вы можете использовать любую удобную для вас директорию и имя):
mkdir /backup
Перейдем в нее:
cd /backup
Рассмотрим простую команду с помощью Tar, которая создаст и сожмет нам архив, с сохранением информации о правах на примере директории /etc:
tar -zcfp /backup/etc.tar.gz /etc
tar | -ключи | /куда/название_архива.tar.gz | /что_бекапим
-z
– сжать gzip-с
– создать новый архив-f
– использовать указанный файл-p
– сохранение информации о правах
Готово, в нашей директории /backup создан архив с названием etc.tar.gz
, который вы можете сохранить себе через scp или другими удобными для вас способами на ваш компьютер или сервер, и восстановить после неудачной правки конфигурационных файлов или их удаления.
Со всеми ключами и инструкциями к tar, можно ознакомиться в его man:
man tar
Полезные команды которые вам пригодятся:
Если нам нужно разархивировать наш backup используем команду (в текущую директорию с архивом) :
tar -xf /backup/etc.tar.gz
Для того что бы разархивировать все файлы и директории из backup в определенный каталог используем данную команду:
tar -xf /backup/etc.tar.gz -C /backup/temp/
В данной команде ключом -C мы указываем место куда разархивировать наш backup
Для просмотра файлов в архиве с путями к ним используем команду:
tar -tf /backup/etc.tar.gz
Для того что бы достать определенный файл из архива, который мы посмотрели командой выше, используем команду:
tar -xf /backup/etc.tar.gz etc/ssh/sshd_config
Способ второй, автоматический backup по расписанию с помощью Tar и Cron
Создаем директорию, переходим в нее и создаем в ней простой скрипт (названия и место можете использовать любое удобное для вас, я буду делать например backup директории /etc):
mkdir -p /backup/etc
cd /backup/etc
nano etcbackup.sh
Копируем в наш скрипт следующее содержимое:
#!/bin/sh
DATE=`date +%F`;
#Замените на свою директорию
BACKUPPATH="/backup/etc";
#Удалять backup старше 30 дней
find $BACKUPPATH/ -mtime +30 | xargs rm -f;
tar -czvpf "$BACKUPPATH/etc.$DATE.tar.gz" /etc/ > /dev/null 2> /dev/null;
Немного о самом скрипте:
#!/bin/sh
– указываем на интерпретатор, который будет использоваться для выполнения этого скрипта.DATE=date +%F;
– задает переменную $DATE и присваивает ей значение текущей даты в формате ГГГГ-ММ-ДД.BACKUPPATH="/backup/etc";
– задает переменную $BACKUPPATH и присваивает ей путь к папке, в которую будут сохраняться резервные копии.find $BACKUPPATH/ -mtime +30 | xargs rm -f;
– используется для удаления предыдущих бэкапов, которые старше 30 дней.tar -czvpf "$BACKUPPATH/etc.$DATE.tar.gz" /etc/
– создает новый архив с помощью команды tar с аргументамиc
,z
,v
,p
, иf
, который будет сохранен в$BACKUPPATH
с именемetc.$DATE.tar.gz
, где$DATE
– текущая дата, полученная в первой строке скрипта.>/dev/null 2> /dev/null;
– перенаправляет вывод процесса архивации и стандартных ошибок в/dev/null
, чтобы они не отображались в консоли и не записывались в лог-файлы.
Скрипт удаляет старые резервные копии и создает новую копию папки /etc со всей ее структурой и содержимым, сохранив также атрибуты и разрешения файлов и затем сохраняет ее в $BACKUPPATH/etc.$DATE.tar.gz
.
Сделаем скрипт исполняемым, пользователю который его создавал:
chmod u+x etcbackup.sh
Настраиваем Cron для автоматизации
Создаем задание на выполнение каждый день в 4 утра:
crontab -e
Внизу добавляем данную строку (после того как вставите данную строку, перейдите с помощью Enter на новыйю строку и сохраните):
00 4 * * * nice -19 /backup/etc/etcbackup.sh >/dev/null 2 >> /var/log/cron.log
nice -19
– задает приоритетность выполнения скрипта/backup/etc/etcbackup.sh
– Скрипт который будет выполнен>/dev/null
– указывает, что вывод команды будет перенаправлен в файл/dev/null 2
и будет проигнорирован>> /var/log/cron.log
– указывает, что вывод ошибок будет перенаправлен в файл журнала/var/log/cron.log
Вывод
В данной заметке разобрали простенький backup с помощью Tar и Cron, пусть вам не пригодиться из них что-либо восстанавливать, а использовать для своего спокойствия)
Что бы не потерять инструкцию рекомендую подписаться на мой личный блог-канал в Telegram в котором я делюсь в формате заметок своими знаниями и интересным из мира IT, спасибо за потраченное время на чтение и доброго времени суток!)
Так же вы можете отблагодарить автора материально:
Спасибо за скриптик, а я часто использую rsync для бекапов, если хотите могу поделиться своим скриптом rsync)
Да, конечно, было бы интересно посмотреть