Мега-бекапилка с заливкой на google drive

Mar 27, 2017 15:38

По работе снова пришлось изобретать велосипед. Ограничился исключительно bash, т.к. хрен знает, где это будет еще запускаться. Самый гемор в удалении с gdrive, т.к. сервера не мои, с подключением as a folder не очень договорились, потому пришлось извращаться.

#!/bin/bash

curdata=`/bin/date +%s` #дата в юниксовых секундах
filename=backup-db-$curdata.tgz #обозвали файл бекапа
backupdir=/home/backup/db #куда положим
sqldir=/home/backup/db/sql #тут дампы

#Задампили базы
/usr/bin/mysqldump -u root -p --opt --default-character-set=utf8 ncdb > $sqldir/ncdb.sql
/usr/bin/mysqldump -u root -p--opt --default-character-set=utf8 templor > $sqldir/templor.sql

#Архивируем дампы
/bin/tar -czvf $backupdir/$filename $sqldir

#Проходимся по архивам дампов, и по разнице даты создания (в имени файла) и текущей даты решаем, пора ли удалять.
for a in $backupdir/*.tgz; do
    createdata=`/bin/ls "$a" | /bin/sed -r 's/.*-([0-9]*)\..*/\1/g'`
        if [ "`/usr/bin/expr "$curdata" - "$createdata"`" -gt "604800" ]
            then
                /bin/rm $backupdir/$a
        fi
done

#Повторяем предыдущий пункт, но для файлов на гугл-диске.
for b in `gdrive list |/bin/grep backup-db-med | /usr/bin/awk -F' ' '{print $2;}' | /bin/sed -r 's/.*-([0-9]*)\..*/\1/g'`; do #тут получаем список файлов, из имени каждого дергаем дату создания
    if [ `/usr/bin/expr "$curdata" - "$b"` -gt "604800" ]
        then
            id2del=`gdrive list |/bin/grep $i | /usr/bin/awk -F' ' '{print $1;}'` #получаем id файла на диске
            /usr/bin/gdrive delete $id2del #удаляем
    fi
done

/usr/bin/gdrive upload --parent  $backupdir/$filename #загружаем созданный бекап

/bin/rm -f $sqldir/*.sql #убиваем все дампы

работа, linux

Previous post Next post
Up