[[ backup Gentoo ]]

Gentoo

backup Gentoo

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

crontab

10 1     1 * *  root    ( /root/scripts/backup-gentoo >> /home/backup/backup-gentoo.log 2>&1 )

/root/scripts/backup-ubuntu

#!/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 - файловый архив

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

/etc/logrotate.d/backup.my

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

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
80 +14 =
 
handmade/bash/backup_gentoo.txt · Последнее изменение: 2022/08/31 14:53 — 127.0.0.1
Gentoo Linux Gentoo Linux Driven by DokuWiki