-
Notifications
You must be signed in to change notification settings - Fork 0
/
mysqlbackup.sh
68 lines (67 loc) · 1.83 KB
/
mysqlbackup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash
# Script/função: Backup de múltiplos bancos de dados para localdir/ftp
# Autor: Jhonatan Pereira
# Variaveis
host="localhost" #Servidor MySQL
user="root" #Usuário MySQL
pass="" #Senha MySQL
localdir="backup" #Diretorio local pra onde vao os backups
data=$(date +"%H-%M-%S-%Y-%m-%d") #Formato da data
dbs=("db1" "db2" "db3") #Nome das dbs para fazer backup
diasr=3 #Manter backups por x dias
duplftp=false #Duplicar no FTP - true/false
ftpserver="" #Servidor FTP
ftpusuario="" #Usuário FTP
ftpsenha="" #Senha FTP
ftpupdir="" #Diretorio ftp pra onde vao os backups
prefixbkp="mysqlbackup" #Prefixo dos backups
for db in ${dbs[@]}; do
mysqldump --user=$user --password=$pass --host=$host --single-transaction $db | gzip > $localdir/$prefixbkp-$db-$data.sql.gz
echo "Backup de $db em andamento..."
if [ $duplftp == true ]; then
ftp -ni $ftpserver <<EOMF0
user $ftpusuario $ftpsenha
lcd $localdir
cd $ftpupdir
mput $prefixbkp-$db-$data.sql.gz
bye
EOMF0
else
echo "FTP Backup ignorado"
fi
done;
echo "Excluindo backups antigos..."
find $localdir/*.sql -ctime +$diasr -exec rm {} \;
find $localdir/*.sql.gz -ctime +$diasr -exec rm {} \;
if [ $duplftp == true ]; then
MM='date --date="$diasr days ago" +%b'
DD='date --date="$diasr days ago" +%d'
listing='ftp -i -n $ftpsite <<EOMYF
user $ftpusuario $ftpsenha
binary
cd $ftpupdir
ls
quit
EOMYF'
lista=( $listing )
echo "Buscando por backups antigos no FTP..."
for ((FNO=0; FNO<${#lista[@]}; FNO+=9)); do
if [[ ${lista[$((FNO+5))]} = "$MM" ]];
then
if [[ ${lista["expr $FNO+6"]} -lt $DD ]];
then
echo "Removendo ${lista["expr $FNO + 8"]}"
ftp -i -n $ftpserver <<EOMYF2
user $ftpusuario $ftpsenha
binary
cd $ftpupdir
delete ${lista["expr $FNO + 8"]}
bye
EOMYF2
fi
fi
done
else
echo "Remover FTP ignorado"
fi
echo "Script concluido!"