Fórum Ubuntu Linux - PT

Suporte Técnico => Servidores => Tópico iniciado por: allanrobert em 18 de Fevereiro de 2022, 10:10

Título: Script de backup gerando arquivo de apenas 10k quando executado pelo cron
Enviado por: allanrobert em 18 de Fevereiro de 2022, 10:10
1. Criei um script para backup do Nextcloud, esse que roda no Ubuntu 20.04 LTS. Salvei o mesmo em "/usr/local/bin" e ao executar ele como super usuário, ele funciona corretamente.
2. Configurei o mesmo no cron, utilizando o comando "crontab -e" e inseri a linha "30 0 * * * bash /usr/local/bin/backup_cloud-server.sh" (sem as aspas) no arquivo de configuração para que o script seja executado todos os dias as 00:30. Fiz o teste e ele executa o script no horário programado.

Problema:
Sempre que executado automaticamente pelo cron, o script gera arquivo de backup com apenas 10k de tamanho, ou seja, o backup não está sendo feito corretamente. Quando executando manualmente o script, logado no terminal da estação, ele faz o backup corretamente, o arquivo ficando com dezenas de gigabytes, como deve ser. Abaixo, listei os arquivos de backup criados. Os com vários gigabytes de tamanho, são os backups gerei executando o script manualmente:

"root@cloud-server:/mnt/backup_cloud-server# ls -lh
total 99G
-rwxr-xr-x 1 root root  10G jan 31 12:02 20220131-144019_nextcloud-backup.tar
-rwxr-xr-x 1 root root  10G fev  1 00:47 backup_cloud-server_01-02-2022_00-24-41.tar
-rwxr-xr-x 1 root root  10G fev 18 00:45 backup_cloud-server_01-02-2022_06-57-37.tar
-rwxr-xr-x 1 root root  10K fev 18 00:45 backup_cloud-server_02-02-2022_02-00-01.tar
-rwxr-xr-x 1 root root 9,1G fev 18 00:59 backup_cloud-server_02-02-2022_07-56-34.tar
-rwxr-xr-x 1 root root  10K fev 18 00:59 backup_cloud-server_03-02-2022_02-00-01.tar
-rwxr-xr-x 1 root root  10K fev 18 00:59 backup_cloud-server_03-02-2022_07-20-01.tar
-rwxr-xr-x 1 root root  10K fev 18 00:59 backup_cloud-server_05-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  12G fev 18 01:20 backup_cloud-server_05-02-2022_10-33-19.tar
-rwxr-xr-x 1 root root  10K fev 18 01:20 backup_cloud-server_06-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 01:20 backup_cloud-server_07-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 01:20 backup_cloud-server_08-02-2022_00-30-02.tar
-rwxr-xr-x 1 root root  10K fev 18 01:20 backup_cloud-server_09-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 01:20 backup_cloud-server_10-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 01:20 backup_cloud-server_11-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 01:20 backup_cloud-server_12-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 01:20 backup_cloud-server_13-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  24G fev 18 02:03 backup_cloud-server_13-02-2022_07-59-21.tar
-rwxr-xr-x 1 root root  10K fev 18 02:03 backup_cloud-server_14-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 02:03 backup_cloud-server_15-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  25G fev 18 02:46 backup_cloud-server_15-02-2022_20-47-38.tar
-rwxr-xr-x 1 root root  10K fev 18 02:46 backup_cloud-server_16-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 02:46 backup_cloud-server_17-02-2022_00-30-01.tar
-rwxr-xr-x 1 root root  10K fev 18 02:46 backup_cloud-server_18-02-2022_00-30-01.tar
root@cloud-server:/mnt/backup_cloud-server# "


A questão é: como solucionar isso?

Abaixo, o script:

#!/bin/bash

#### PARAMETROS ####
source_path="/var/snap/nextcloud/common/backups" #DIRETORIO DE ORIGEM DO BACKUP
temp_path="/var/snap/nextcloud/common/backups_tmp" #DIRETORIO TEMPORARIO DE BACKUP
output_path="/mnt/backup_cloud-server" #DIRETORIO DE DESTINO DE BACKUP
date_format=$(date +'%d-%m-%Y_%H-%M-%S') #FORMATO DE DATA E HORA
final_filename="backup_cloud-server_$date_format.tar" #NOME DO ARQUIVO DE BACKUP

#### INICIO DO BACKUP ####
echo
echo  Iniciando backup Nextcloud para $output_path/$final_filename
echo

rm -Rf $source_path/* # LIMPA DIRETORIO LOCAL
nextcloud.export # EXPORTA DADOS DO NEXTCLOUD
tar -cvf $temp_path/$final_filename $source_path #COMPACTA ARQUIVO
cp $temp_path/* $output_path #COPIA PARA SERVIDOR DE BACKUP
find $output_path -mtime 4 # EXCLUI ARQUIVOS ANTIGOS NO DIRETORIO DE DESTINO
find $temp_path -mtime 3 # EXCLUI ARQUIVOS ANTIGOS NO DIRETORIO TEMPORARIO

echo
echo Encerrando processo de backup Nextcloud.
echo Verifique o diretorio de saída $outuput_path
echo
ls -lh $output_path
#### FIM DO PROCESSO DE BACKUP ####

Obrigado!
Título: Re:Script de backup gerando arquivo de apenas 10k quando executado pelo cron
Enviado por: zekkerj em 21 de Fevereiro de 2022, 17:28
Fica mais fácil descobrir o problema se vc salvar as mensagens de erro do seu script. Mude a linha do crontab para:

30 0 * * * bash /usr/local/bin/backup_cloud-server.sh > /tmp/log-backup.log 2>&1

No dia seguinte, veja o conteúdo do arquivo "/tmp/log-backup.log". Se estiver acusando algum erro, vc vai ver, e poder corrigir.