Sysadmin  » Linux  » Сортировка резервных...

Сортировка резервных копий WEB аккаунтов

Используется в панели управления DirectAdmin

#!/bin/bash
. $HOME/.bash_profile
# Sergey Davydov <>
# defaults
root_dir=~/user_backups
def_sour=$root_dir/daily
dest_by_weekday[6]=$root_dir/weekly
dest_by_monday[1]=$root_dir/monthly
#defaults previou versions, comment var if din't need it
#dest_prev_week=$root_dir/weekly2
#dest_prev_mon=$root_dir/monthly2
#dest_prev_day=$root_dir/daily2
# date format for output
date_format=\""+%F %T"\"
if [ ! -n "$1" ]
then
  echo
  echo "Tool for sorting backup files by day of mounth or week."
  echo "Steps: "
  echo " First: move previous backup to specified folder depend on week day, mounth day or simple - current daily,"
  echo " Second: move daily to folder depend on day"
  echo 
  echo "Put it to cron sheduled with start time before creating daily backups. "
  echo "Set time start by depend on backups count and time needed to move its with rewrite"
  echo 
  echo "Usage: `basename $0` [start] [-s <source_dir>] [-d <destination_dir>]"
  echo
  echo "For start sorting automaticaly, set only \"start\" param.  "
  echo "For manualy start moove: set -d  and -s if needed"
  echo "Default source - $def_sour, destination - by week, mounth day."
  echo
  echo
  exit 0
fi
# get parameters
until [ -z "$1" ]; do
  case "$1" in
    -q ) quiet=$1;;
    -s ) sour=$2; shift;;
    -d ) dest=$2; shift;;
    start ) start=$1;;
  esac
  shift
done 
[ $sour ] || sour=$def_sour
if [[ -n $dest && -n $sour ]]
then
 if [ ! -d $sour ]
 then
  echo "Source dir \"$sour\" not exist"
 else
  [ -d $dest ] || echo "`eval date $date_format`: `mkdir -vp $dest 2>&1`" || exit 1
  if [[ "$dest" == "$sour" ]]
  then
   echo "`eval date $date_format`: $dest == $sour. Nothing move."
  else
   echo "`eval date $date_format`: start moving from $sour/* to $dest"
   for file in $sour/*
   do
    echo "`eval date $date_format`: `mv -fv -t $dest $file 2>&1`"
#    echo "`eval date $date_format`: mv -fv -t $dest $file"
   done
   echo "`eval date $date_format`: end moving from $sour/* to $dest"
   echo
  fi
 fi
 exit 0
fi
if [[ $start ]] # auto
then
 if [ `ls -1 $sour | grep -c ""` -eq 0 ]
 then
  echo "`eval date $date_format`: $sour is empty"
  exit 0
 fi
 thisday=`expr \`date +%d\` * 1`                                         # Monthly backup
# if [[ ${dest_by_monday[`date +%d`]} ]]                                 # Monthly backup
 if [[ ${dest_by_monday[thisday]} ]]
 then
  [ $dest_prev_mon ] && $0 $quiet -s ${dest_by_monday[thisday]} -d $dest_prev_mon
  $0 $quiet -s $sour -d ${dest_by_monday[thisday]}
 elif [[ ${dest_by_weekday[`date +%u`]} ]]                                  # Weekle backup
 then
  [ $dest_prev_week ] &&  $0 $quiet -s ${dest_by_weekday[`date +%u`]} -d $dest_prev_week
   $0 $quiet -s $sour -d ${dest_by_weekday[`date +%u`]}
 else                                                                     # Only previously daily 
  [ $dest_prev_day ] && $0 $quiet -s $sour -d $dest_prev_day
 fi
fi

Тут приведен пример для использования на уровне ресселера (Панель DerectAdmin). Для использования на уровне сервера, использовать соответствующие пути

Добавляем в crontab - по времени за 10-15 минут до начала создания дневной резервной копии средствами панели управления

~/user_backups/backup_sort.sh start | mail -s "Cron job ~/user_backups/backup_sort.sh start" 

 

 

карта сайта
Новости
10.03.05 16:44

Очевидное?

Маленький фоторепортаж о летающей пробке.

Подробнее .. >>


10.03.05 16:42

Фотографии интерьера

Создан новый раздел для фотографий интересного интерьера Первым в разделе стал С..

Подробнее .. >>


13.01.05 21:13

Закончен переход на PHP

Завершена основная часть нового движка на PHP. Много всяких улучшений и изменени..

Подробнее .. >>


Поиск





 Рекомендуемое разрешение экрана от 1024x768 http://www.collection.com.ua BestHosting webmaster © 2002-2006