Enviar arquivos para "/"
This commit is contained in:
166
backup
Normal file
166
backup
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# ┌──────────────────────────────────────────────────────────┐
|
||||||
|
# │ Author: Bruno.Tosta │
|
||||||
|
# │ Desc: Realiza o backup do banco de dados │
|
||||||
|
# └──────────────────────────────────────────{ CONFIGURACAO }┘
|
||||||
|
VERSAO="2.1"
|
||||||
|
|
||||||
|
FINALIZAR='0'
|
||||||
|
# "0" = Finalizar | "1" = Reiniciar | "2" = Desligar
|
||||||
|
# ┌──────────────────────────────────────────────────────────┐
|
||||||
|
# └─────────────────────────────────────────────{ VARIAVEIS }┘
|
||||||
|
REPOSITORIO='download.sigsolucoes.net.br/public/Tosta/ERP'
|
||||||
|
DIR_ORIGEM='/backup/diario/Dropbox'
|
||||||
|
DIR_DESTINO='backup:'
|
||||||
|
DIRETORIO=$(date '+%A')
|
||||||
|
VERDE='\033[32;1m'
|
||||||
|
AMARELO='\033[33;1m'
|
||||||
|
VERMELHO='\033[31;1m'
|
||||||
|
RESET=$(tput 'sgr0')
|
||||||
|
LOG="$(date '+%m%Y')"
|
||||||
|
ARQUIVO_LOG="/tmp/rclone-$LOG.log"
|
||||||
|
MENSAGEM_LOG="#$(date '+%A, %d %B %Y')#"
|
||||||
|
MENU=" [ -OPÇÃO ]
|
||||||
|
-a Armazenamento
|
||||||
|
-c Checar
|
||||||
|
-C Configurar
|
||||||
|
-i Informacao
|
||||||
|
-l Listar
|
||||||
|
-s Sincronizar
|
||||||
|
-u Atualizar rclone
|
||||||
|
-U Atualizar script
|
||||||
|
-v Verificar
|
||||||
|
-V Versão do script
|
||||||
|
-h Ajuda deste menu"
|
||||||
|
# ┌──────────────────────────────────────────────────────────┐
|
||||||
|
# └─────────────────────────────────────────────────{ TESTE }┘
|
||||||
|
Testar(){
|
||||||
|
rclone --version 2>'/dev/null' | head -1 | grep -q 'rclone v1.67.0' && echo -e "${VERDE}Está atualizado! \n" $RESET || {
|
||||||
|
wget -q --show-progress -O '/tmp/rinstall' "$REPOSITORIO/instaladores/rclone"; chmod 755 '/tmp/rinstall'; /tmp/./rinstall
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# ┌──────────────────────────────────────────────────────────┐
|
||||||
|
# └───────────────────────────────────────────────{ FUNCOES }┘
|
||||||
|
Configurar(){
|
||||||
|
rclone config;
|
||||||
|
}
|
||||||
|
Informacao(){
|
||||||
|
rclone about "$DIR_DESTINO";
|
||||||
|
}
|
||||||
|
Listar(){
|
||||||
|
rclone tree "$DIR_DESTINO";
|
||||||
|
}
|
||||||
|
Verificar(){
|
||||||
|
[ -e "$DIR_ORIGEM/" ] && echo "$DIR_ORIGEM/ existe" || {
|
||||||
|
mkdir -p "$DIR_ORIGEM/"
|
||||||
|
[ -e '/home/caixa/' ] && chown -R caixa:caixa '/backup'
|
||||||
|
[ -e '/home/sig' ] && chown -R sig:sig '/backup'
|
||||||
|
[ ! -e '/home/caixa/' ] && [ ! -e '/home/sig' ] && echo "${VERMELHO}Não existe usuário 'caixa' ou 'sig' neste computador${RESET}"
|
||||||
|
chmod -R 777 '/backup'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Realizar(){
|
||||||
|
SENHA=$(grep db_password '/etc/openerp-server.conf' | awk '{print $3}')
|
||||||
|
QUANTIDADE=$(PGPASSWORD="$SENHA" psql -U 'openerp' -l | awk '{ if ($3 == "openerp") print $1 }' | wc -l)
|
||||||
|
cd "$DIR_ORIGEM" && rm -rf "$DIRETORIO.tar.gz"
|
||||||
|
mkdir $DIRETORIO
|
||||||
|
for ((N=1; N < $(($QUANTIDADE+1)); N++)) do
|
||||||
|
BASE=$(PGPASSWORD="$SENHA" psql -U 'openerp' -l | awk '{ if ($3 == "openerp") print $1 }' | head -$N | tail -1)
|
||||||
|
printf "\n${VERDE}Quantidade: $N \nBase: $BASE \n${RESET}"
|
||||||
|
PGPASSWORD="$SENHA" pg_dump -h 'localhost' -p '5432' --role 'openerp' -U 'openerp' -F 'custom' -b -v -T 'logs_logs' -T 'ir_attachment' -T 'logs_detalhe' -T 'ecf_exportar_osv_id_seq' -f "$DIR_ORIGEM/$DIRETORIO/$BASE.dump" "$BASE"
|
||||||
|
done
|
||||||
|
tar cfvz "$DIRETORIO.tar.gz" "$DIRETORIO" && chmod 777 "$DIRETORIO.tar.gz"; rm -rf "$DIRETORIO"
|
||||||
|
}
|
||||||
|
HealthCheck(){
|
||||||
|
ESPACO=$(du -sm "$DIR_ORIGEM/$DIRETORIO.tar.gz" | awk '{print $1}')
|
||||||
|
[[ "$ESPACO" -gt 3 ]] && echo -e "\n${VERDE}O backup foi concluído com sucesso. \n${RESET}" || {
|
||||||
|
printf "\n${VERMELHO}O backup do banco de dados não foi realizado, verifique os parametros. \n${RESET}"; exit 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Gerenciar(){
|
||||||
|
TOTAL=$(echo "$(rclone about "$DIR_DESTINO" | awk '{print $2}'| head -1) * 1028" | bc)
|
||||||
|
while true; do
|
||||||
|
USADO=$(du -sm "$DIR_ORIGEM/" | awk '{print $1}')
|
||||||
|
[ "$USADO" -gt "$TOTAL" ] && {
|
||||||
|
ANTIGO=$(ls -rt "$DIR_ORIGEM/" | head -1)
|
||||||
|
echo -e "${AMARELO}Removendo o arquivo $ANTIGO devido ao excesso de uso do espaço em disco.${RESET}"
|
||||||
|
rm "$DIR_ORIGEM/$ANTIGO" && echo -e "${VERDE}Arquivo $ANTIGO removido com sucesso. \n${RESET}"
|
||||||
|
} || {
|
||||||
|
echo "Arquivos cabem no diretório."; break
|
||||||
|
}
|
||||||
|
done
|
||||||
|
}
|
||||||
|
Sincronizar(){
|
||||||
|
rclone -vP delete --delete-excluded "$DIR_ORIGEM/" "$DIR_DESTINO" --log-file="$ARQUIVO_LOG"
|
||||||
|
rclone -vP cleanup --progress "$DIR_DESTINO" --log-file="$ARQUIVO_LOG"
|
||||||
|
rclone -vP sync --progress "$DIR_ORIGEM/" "$DIR_DESTINO" --log-file="$ARQUIVO_LOG"
|
||||||
|
}
|
||||||
|
Validar(){
|
||||||
|
tail "$ARQUIVO_LOG" | grep "ERROR"; [ ! $? -eq 0 ] && echo -e "\n${VERDE}Sincronismo concluído com sucesso. \n${RESET}" || {
|
||||||
|
echo -e "\n${VERMELHO}Erros encontrados. Verifique o arquivo $ARQUIVO_LOG. \n${RESET}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Checar(){
|
||||||
|
DATA_ORIGEM=$(ls $DIR_ORIGEM/*.tar.gz -tl --time-style="+%Y-%m-%d" | awk '{print $6}')
|
||||||
|
DATA_DESTINO=$(rclone lsl "$DIR_DESTINO" | awk '{print $2}')
|
||||||
|
[ "$DATA_ORIGEM" = "$DATA_DESTINO" ] && echo -e "${VERDE}O backup está sendo feito normalmente \n${RESET}" || {
|
||||||
|
echo -e "${VERMELHO}O backup está defasado \n${RESET}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Armazenamento(){
|
||||||
|
T=$(echo "$(rclone about $DIR_DESTINO | awk '{print $2}'| head -1) * 1028" | bc)
|
||||||
|
U=$(du -sm "$DIR_ORIGEM/" | awk '{print $1}')
|
||||||
|
[ "$T" -lt "$U" ] && Gerenciar || {
|
||||||
|
echo -e "${VERDE}Espaço disponível no drive é suficiente para a realização do backup \n${RESET}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Backup(){
|
||||||
|
Verificar && Realizar && HealthCheck
|
||||||
|
rclone config show 2>'/dev/null' | grep -q '^\[.*\]' && {
|
||||||
|
Gerenciar && Sincronizar && Validar && Checar
|
||||||
|
} || {
|
||||||
|
echo -e "${AMARELO}Backup feito apenas localmente \n${RESET}"; exit 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# ┌──────────────────────────────────────────────────────────┐
|
||||||
|
# └─────────────────────────────────────────────{ PRINCIPAL }┘
|
||||||
|
Finaliza(){
|
||||||
|
case "$FINALIZAR" in
|
||||||
|
2) sudo shutdown -h now ;;
|
||||||
|
1) sudo reboot ;;
|
||||||
|
0) exit 0 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
[ -z "$1" ] && {
|
||||||
|
Backup; Finaliza
|
||||||
|
} || {
|
||||||
|
while [ -n "$1" ]; do
|
||||||
|
case "$1" in
|
||||||
|
-a) clear; echo -e "${AMARELO}Armazenamento da aplicação \n${RESET}"; Armazenamento; exit
|
||||||
|
;;
|
||||||
|
-c) clear; echo -e "${AMARELO}Checando o rclone \n${RESET}"; Checar; exit
|
||||||
|
;;
|
||||||
|
-C) clear; echo -e "${AMARELO}Configuração do rclone \n${RESET}"; Configurar; clear; exit
|
||||||
|
;;
|
||||||
|
-i) clear; echo -e "${AMARELO}Informações de armazenamento \n${RESET}"; Informacao; exit
|
||||||
|
;;
|
||||||
|
-l) clear; echo -e "${AMARELO}Listar arquivos e diretórios \n${RESET}"; Listar; exit
|
||||||
|
;;
|
||||||
|
-s) clear; echo -e "${AMARELO}Sincronizar backups \n${RESET}"; Sincronizar; exit
|
||||||
|
;;
|
||||||
|
-u) clear; echo -e "${AMARELO}Atualização do rclone \n${RESET}"; Testar; exit
|
||||||
|
;;
|
||||||
|
-U) clear; sudo su -s '/bin/bash' -c 'hub -B'; exit
|
||||||
|
;;
|
||||||
|
-v) clear; echo -e "${AMARELO}Verificação de arquivos \n${RESET}"; Verificar; exit
|
||||||
|
;;
|
||||||
|
-V) clear; echo -e "\n ${VERDE}A versão do script é $VERSAO${RESET}"; exit
|
||||||
|
;;
|
||||||
|
-h|--help) echo -e "\n $MENU \n${RESET}"; exit
|
||||||
|
;;
|
||||||
|
*) echo -e "${VERMELHO}Opção inválida. $MENU \n${RESET}"; exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
# └──────────────────────────────────────────────────────────┘
|
||||||
Reference in New Issue
Block a user