Script de backup gerando arquivo de apenas 10k quando executado pelo cron

Iniciado por allanrobert, 18 de Fevereiro de 2022, 10:10

tópico anterior - próximo tópico

allanrobert

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!
Att.

Allan Robert

zekkerj

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.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D