Erro de script Bash ao tentar gravar no arquivo: nenhum arquivo ou diretório

2

Estou recebendo um erro com um script muito simples. O script deve executar o pg_dumpall e gravar a saída em um arquivo, mas estou recebendo um erro informando que o arquivo resultante não existe. Eu sei que não existe, é por isso que eu quero criá-lo! : - /

#!/bin/bash
#remove previous day's dump and create new
rm -f /home/user/db_dump_*.txt;
pg_dumpall -U postgres -w > /home/user/db_dump_'date '+%d/%m/%Y_%H:%M:%S''.txt;

O resultado é:

db_dump.sh: line 4: /home/user/db_dump_12/02/2017_14:30:15.txt: No such file or directory 

O comando date está funcionando bem e o nome do arquivo sai perfeito, mas em vez do arquivo que está sendo criado, recebo o erro dizendo que ele não existe. Estou executando o script como root, então não deve haver problemas com permissões. Eu posso escrever para o diretório pessoal do usuário sem problemas.

Alguma idéia?

    
por rijo79 12.02.2017 / 21:15

1 resposta

2

Verifique novamente o nome do arquivo gerado:

/home/user/db_dump_12/02/2017_14:30:15.txt

Ele tenta gravar em um subdiretório chamado 02 . Se esse diretório não existir, você obterá "Nenhum arquivo ou diretório ".

Sugiro usar outro formato de data:

dumpfile_date=$( date +"%F-%T" ) # or %Y%m%d-%H%M%S or something similar
pg_dumpall -U postgres -w > "/home/user/db_dump_$dumpfile_date.txt"
    
por 12.02.2017 / 21:19