среда, 28 декабря 2016 г.

bacula очистка баз от бэкапов





На данный момент сделать второю полную копию хранилища на сервере PDC невозможно – недостаточно места на разделе /mnt/bacula/ ( примонтирован по iSCSI nas4free )
Для этого делается очистка баз от бэкапов:
1. меняем дату в файле:
sudo vi /usr/local/bin/purge-db-and-files.sh


до какого числа очистить базу
DATEFROM=2015-02-12
 и запускаем его
cd /usr/local/bin/
purge-db-and-files.sh

2. далее чистим хранилище /mnt/bacula/
эта папка (/mnt/bacula/) примонтирована по ISCSI с сервера nas4Free
sudo rm -rf /mnt/bacula/*_volume-*
если действительно хотим удалить все:
sudo rm -rf /mnt/bacula/*_volume-*



purge-db-and-files.sh

 #!/bin/bash

  DATEFROM=2016-12-26
  BACKUPFOLDER="/mnt/bacula"

  #GETLISTFROM="BCONSOLE"
  GETLISTFROM="MYSQL"

  # get list to prune
  if [[ "${GETLISTFROM}" == "BCONSOLE" ]] ; then
    DELETELIST=`echo -e "sqlquery\nselect VolumeName from Media where LastWritten < '${DATEFROM}' order by VolumeName;\n.\nexit" | bconsole | grep '^|' | grep -v ' VolumeName ' | sed -e 's/[ ]*|[ ]*//g'`
    echo "Using bconsole"
  elif [[ "${GETLISTFROM}" == "MYSQL" ]] ; then
    DELETELIST=`mysql --database=bacula --column-names=FALSE -e "select VolumeName from Media where LastWritten < '${DATEFROM}' order by VolumeName;" | sed -e 's/[ ]*|[ ]*//g'`
    echo "Using mysql"
  fi
  if [[ -z "${DELETELIST}" ]] ; then
    echo "No records found earlier than ${DATEFROM}"
    exit 1
  fi
  #echo -e "${DELETELIST}"
  echo  "${DELETELIST}"
  echo
  echo "WARNING: IT WILL DESTROY THAT FILES ON THE DISK"
  echo "Are you sure you want to proceed?"
  read -p 'Type YES if you really want to proceed: ' input
  echo
  if [[ ${input} != YES  ]]; then
    echo "Ok. Aborting."
    exit 1
  fi

  echo -e "${DELETELIST}" | xargs -I '{}' echo delete yes volume='{}' | bconsole
  echo -e "${DELETELIST}" | xargs -I '{}' echo "rm ${BACKUPFOLDER}/"'{}' | while read LINE ; do echo "${LINE}"; "${LINE}"; done

Комментариев нет:

Отправить комментарий