Скрипт для создания резервных копий
Рубрика: Linux -> Tips
Метки: backup | linux | squashfs
Пятница, 25 июня 2010 г.
Подписаться на комментарии по RSS
Метки: backup | linux | squashfs
Пятница, 25 июня 2010 г.
Подписаться на комментарии по RSS
Решил поделиться своим скриптом для создания резервных копий файлов и баз mysql.
backups.sh
Настройка:
Строчка
удаляет резервные копии сделанные более чем 20160 минут назад (14 дней).
Как делаются дампы с помощью mysqldump думаю все знают.
Создание копий файлов:
nice -n15 - уменьшает приоритет процесса до 15 (чтоб не особо нагружал систему)
mksquashfs - создаст "архив" squashfs
Squashfs очень удобна для хранения резервных копий т.к. это файловая система со сжатием, и для доступа к файлам достаточно просто примонтировать файл. burik-nb home # mount -o loop burik.squashfs ./burik PS: для монтирования squashfs в ядре должна быть включена поддержка этой ФС (CONFIG_SQUASHFS)
Если Вы хотите получить tar.bz2 то:
Надеюсь эти копии Вам никогда не понадобятся. ;)
backups.sh
- #!/bin/bash
- backupmaindir="/mnt/backup/"
- mysqlopts="-u root -ppass"
- dirs="/etc /home/*"
- bdate=`date +%F_%H:%M:%S`
- backupdir="$backupmaindir$bdate"
- sqldir="$backupdir/sql"
- echo "Delete old backups..."
- find $backupmaindir -type d -maxdepth 1 -mindepth 1 -cmin +20160 -exec rm -Rf "{}" \;
- mkdir -p $backupdir/home
- mkdir -p $sqldir
- echo "Dump DB..."
- for dbname in `echo show databases| mysql $mysqlopts`; do
- if [ $dbname = 'Database' ]; then
- continue ;
- fi
- echo "Dump $dbname..."
- mysqldump $mysqlopts $dbname|gzip -cf > "$sqldir/$dbname.sql.gz"
- done;
- echo "Backup $dirs..."
- ls -1d $dirs|
- while read dname; do
- echo "Backup $dname..."
- mkdir -p $backupdir$dname
- nice -n15 mksquashfs "$dname" "$backupdir$dname.squashfs"
- done
- echo "end"
Настройка:
- backupmaindir - директория в которую будут сохраняться копии, в ней будут созданы поддиректории вида YYYY-MM-DD_hh:mm:ss.
- mysqlopts - параметры подключения к mysql (можно указать удаленный хост).
- dirs - какие директории копировать, если указать /home, то будет создана копия /home одним файлом, а если указать /home/*, то каждая поддиректория будет в отдельном файле.
Строчка
- find $backupmaindir -type d -maxdepth 1 -mindepth 1 -cmin +20160 -exec rm -Rf "{}" \;
Как делаются дампы с помощью mysqldump думаю все знают.
Создание копий файлов:
- nice -n15 mksquashfs "$dname" "$backupdir$dname.squashfs"
mksquashfs - создаст "архив" squashfs
Squashfs очень удобна для хранения резервных копий т.к. это файловая система со сжатием, и для доступа к файлам достаточно просто примонтировать файл. burik-nb home # mount -o loop burik.squashfs ./burik PS: для монтирования squashfs в ядре должна быть включена поддержка этой ФС (CONFIG_SQUASHFS)
Если Вы хотите получить tar.bz2 то:
- nice -n15 tar -cjpf "$backupdir$dname.tar.bz2" "$dname"
Надеюсь эти копии Вам никогда не понадобятся. ;)
Комментариев: 1
]]>
for dbname in `echo show databases| mysql $mysqlopts`; doif [ $dbname = 'Database' ]; then
continue ;
fi
echo "Dump $i..."
mysqldump $mysqlopts $i|gzip -cf > "$sqldir/$i.sql.gz"
done;
Ошибка - переменная $i должна быть $dbname