Бэкап Linux при помощи tar

Автор: Admin | 06.03.2014

Простой скрипт бэкапа встроенными возможностями системы с копированием на шару и удалением через определенное время

Сам скрипт:

#!/bin/sh

### Переменные
TIME=`date +%Y-%m-%d`
# Что бэкапить
WHAT=/home/dir
# Куда класть бэкап
WHERE=/home/backup/
# Куда копировать бэкап
COPY=/mnt/backup/

### Сам бэкап
# Архивация нужного каталога в файл
tar -cvpzf $WHERE/$TIME.tgz $WHAT > /dev/null
# Копировать  файл бэкапа на шару
cp $WHERE/$TIME.tgz $COPY
# Удалить файлы бэкапов месячной давности в обоих каталогах
find $WHERE -mtime +30 -print -delete
find $COPY -mtime +30 -print -delete

В результате выполнения скрипта будет сделан архив каталога /home/dir под названием 2014-03-06.tgz, помещен в /home/backup/ и затем скопирован в /mnt/backup/.
Так же будут удалены файлы бэкапов месячной давности.


При помощью этого способа можно бэкапить систему полностью. Скрипт будет выглядеть так:

#!/bin/sh
TIME=`date +%Y-%m-%d`
WHAT=/ 
WHERE=/home/backup/
COPY=/mnt/backup/
tar -cvpzf $COPY/$TIME.tgz --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/sys --exclude=$WHAT $WHAT  > /dev/null
cp $WHERE/$TIME.tgz $COPY
find $WHERE -mtime +30 -print -delete
find $COPY -mtime +30 -print -delete

WHAT=/ т.е. бэкапим root каталог.
Параметр --exclude говорит о том какие каталоги надо пропустить при создании архива.
В данном случае каталоги /proc, /lost+found, /mnt, /sys и $WHAT (каталог куда складывается сам файл бэкапа) исключаются.


Если сильно хочется, можно положить в крон для ежедневного бэкапа раз в сутки в три утра:

00   3   *   *   *  root   /root/scripts/my_dir_backup.sh

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *