Май 12

Ещё один скрипт резервного копирования. Структурирует бекапы по дате (год/месяц/день). Удаляет старые бекапы (оставляя один из прошедшей недели).

#!/bin/bash
work_dir="/home/user/scripts/backup"
year=`date +%G`
month=`date +%m`
day=`date +%d`
w_day=`date +%u`
i=1

#remove old backups
if [[ "$w_day" == "1" ]]
        then 
	count_of_file=`ls $work_dir/$year/$month/ | wc -l`
		for ((a=1;a<=$count_of_file;a++))
		do
		current_filename=`ls $work_dir/$year/$month/ | sed -n $a\p`;
		current_date=`ls $work_dir/$year/$month -l --time-style=+%u|tail -n$count_of_file|awk '{print $6}'|sed -n $a\p`;
		if [[ "$current_date" != "5" ]]
        	then
        		file_to_delete[$i]=$current_filename;
        		i=`expr ${i} + 1`;
		fi;
		done
		for ((a=1;a<$i;a++))
		do
			echo delete ${file_to_delete[a]};
			if [ -z "${file_to_delete[a]}" ];
				then echo "no file to delete";
				else rm -rf $work_dir/$year/$month/${file_to_delete[a]};
			fi;
		done
fi;

#create new directories
check_year=`ls $work_dir|grep $year`
if [[ "$check_year" == "$year" ]]
	then echo "ok, direcory exist";
	else mkdir $work_dir/$year;
fi;

check_month=`ls $work_dir/$year|grep $month`
if [[ "$check_month" == "$month" ]]
        then echo "ok, direcory exist";
        else mkdir $work_dir/$year/$month;
fi;

check_day=`ls $work_dir/$year/$month|grep $day`
if [[ "$check_day" == "$day" ]]
        then echo "ok, direcory exist";
        else mkdir $work_dir/$year/$month/$day;
fi;

backup_save_dir="/home/user/scripts/backup";
file_to_backup="/home/user/test";
mysql_user=root;
db_name=test;

#make new backup
tar -zcvpf $backup_save_dir/$year/$month/$day/backup-`date +%d-%B-%Y`.tar.gz $file_to_backup;
/usr/bin/mysqldump -u$mysql_user $db_name > $backup_save_dir/$year/$month/$day/database-`date +%d-%B-%Y`.sql;

Позже добавлю загрузку бекапа раз в неделю на Amazon S3…

Еще рекомендую глянуть на http://www.backup-manager.org/

2 Responses to “Очередной скрипт резервного копирования.”

  1. Дмитрий Says:

    когда будет скрипт поднятия из бэкапа ?

  2. jeka Says:

    в ближайшее время не планируется.)

Написать ответ