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