[[ backup Gentoo ]]

Gentoo

backup Gentoo

Скрипт архивации рабочей системы по расписанию.
Архивирует корень файловой системы с исключением не нужных папок и файлов.
Контроль количества файлов и запись действий в лог.

10 1     1 * *  root    ( /root/scripts/backup-gentoo >> /home/backup/backup-gentoo.log 2>&1 )
#!/bin/bash
SCRIPTNAME="backup Gentoo"
 
## !!! Директории слешами НЕ закрывать  !!!
BACKUPDIR="/home/backup/gentoo"
## Максимально число хранимых архивов
MAXNUMBER=3
 
NOWDATE=`date '+%Y%m%d'`
DOTNAME="\.tar\.gz"
UID_ROOT=0
 
## Сообщение по завершению выполнения
function end_msg() {
echo "========== `date '+%Y-%m-%d %H:%M'` END $SCRIPTNAME =========="
echo ""
}
## Сообщение о начале выполнения
echo "========== `date '+%Y-%m-%d %H:%M'` START $SCRIPTNAME =========="
 
## Проверка прав
if [ "$UID" -ne "$UID_ROOT" ]; then
  echo "Requires root privileges"
  end_msg
  exit 1
 fi
 
## Проверка директорий
if [ ! -d "$BACKUPDIR" ]; then
  echo -e "Directory does not exist:$BACKUPDIR"
  end_msg
  exit 1
 fi
 
############### Начало архивации ################
## --exclude= исключает файлы или директории
echo "Процесс архивации ..."
cd / && tar czpf $BACKUPDIR/backup-gentoo.$NOWDATE.tar.gz / --exclude=$BACKUPDIR/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/* \
--exclude=/usr/portage/* --exclude=/usr/src/linux-* --exclude=/mnt/cdrom/* 
## Squid
#--exclude=/var/cache/squid/*
## OpenVZ
##--exclude=/vz/private/* --exclude=/vz/root/*
 
 
##### Контроль количества файлов #####
FILELIST=`ls $BACKUPDIR | sed -e '/[0-9]\{8\}'$DOTNAME'$/!d'`
FILENAMES=`echo "$FILELIST" | sed -e 's/\(^.*\)\([0-9]\{8\}'$DOTNAME'$\).*/\1/g' | sort -u`
for CURRENT in $FILENAMES; do
   # Получение списка дат для текущего архива на удаление
   TEMP1=`echo "$FILELIST" | sed -e '/\(^'$CURRENT'\)\([0-9]\{8\}\)\('$DOTNAME'$\)/!d' -e 's/\(^'$CURRENT'\)\([0-9]\{8\}\)\('$DOTNAME'$\)/\2/g' | sort -rn`
   TEMP1=`echo "$TEMP1" | sed -e '1,'$MAXNUMBER'd'`
   #Склеивание
   for TEMP2 in $TEMP1; do
      DELETELIST=`echo $CURRENT$TEMP2${DOTNAME//\\\/} && echo "$DELETELIST"`
   done
   DELETELIST=`echo "$DELETELIST" | sed -e '/^$/d'`
done
if [ -n "$DELETELIST" ]; then
echo "========== Файлы будут удалены =========="
echo "$DELETELIST"
 fi
for CURRENT in $DELETELIST; do
rm $BACKUPDIR/$CURRENT
done
 
end_msg
exit 0
 
# Расшифровка tar
# z - сжатие .gz
# с - создать архив
# v - выводить процесс в консоль
# p - сохранить права
# f - файловый архив

Ротация логов

/home/backup/logs/*log {
        size 3M
        missingok
}

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
121​ +7 = 
 
handmade/bash/backup_gentoo.txt · Последнее изменение: 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki