AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1080369
Accepted
Codejoy
Codejoy
Asked: 2021-10-13 15:21:13 +0800 CST2021-10-13 15:21:13 +0800 CST 2021-10-13 15:21:13 +0800 CST

script faz backup do banco de dados sqlite, quando executado como cron, o db e os nomes são desconfigurados

  • 772

Eu tenho um crontab:

 * * * * * /home/ipa/web/backup.sh > /dev/null 2>&1

(Não, não roda a cada minuto apenas testando aqui)

O backup.sh tem isso:

#!/usr/bin/env sh



sqlite3 /home/ipa/web/ipa_django/mysite/db.sqlite3 ".backup 'backup_file.sqlite3'"
src="/home/ipa/web/backup_file.sqlite3"
let seconds=$(date +%H)*3600+$(date +%M)*60+$(date +%S)
echo $seconds
filename="db.sqlite3"
echo $filename.$seconds
dest="/home/ipa/web/db_backups/"$filename.$seconds
cp  $src $dest
cd /home/ipa/web/db_backups
tar -cvzf ipadbbackup.tar.gz $filename.$seconds
cd /home/ipa/web/
cp /home/ipa/web/db_backups/ipadbbackup.tar.gz ipadbbackup.tar.gz
rm /home/ipa/web/db_backups/$filename.$seconds
rm /home/ipa/web/db_backups/ipadbbackup.tar.gz
#rm "$srcfile"
/usr/bin/bash start-app.sh;
echo "Running email backup"
python2.7 backup_via_email.py
rm ipadbbackup.tar.gz

A idéia é copiar o banco de dados para uma área de rascunho, compactá-lo, copiá-lo para onde outro arquivo .py possa encontrá-lo e enviá-lo por e-mail como backup.

O problema é:

Se eu executar este script de onde ele mora: /home/ipa/web/

com um ./backup.sh

Funciona muito bem, recebo o arquivo no meu email funciona muito bem: db.sqlite3.77627

ou o que não... o problema é que quando roda como cron o arquivo não está completo e o nome do arquivo é:

db.sqlite3.

Não consigo descobrir o que acontece com a execução de um cron que está fazendo com que ele falhe essencialmente? O arquivo no tar também é 2,1k menor? Então, não tenho certeza do que está acontecendo... nem sei onde procurar.

ubuntu cron python sqlite
  • 1 1 respostas
  • 353 Views

1 respostas

  • Voted
  1. Best Answer
    Ginnungagap
    2021-10-19T11:15:22+08:002021-10-19T11:15:22+08:00

    Provavelmente, você não está realmente executando ./backup.shao executá-lo manualmente, mas sim bash ./backup.sh.

    A única maneira compatível com POSIX de calcular um valor por meio do shell é com $(( expr )).

    Em geral, a menos que você tenha uma boa razão, os scripts devem usar o bash, já que a maioria das pessoas não sabe a diferença entre sh e bash e apenas escreverá scripts quebrados.

    #!/usr/bin/env bash
    
    set -e
    set -u
    
    declare -r db_src="/home/ipa/web/ipa_django/mysite/db.sqlite3"
    declare -r db_bak="/home/ipa/web/backup_file.sqlite3"
    declare -r db_dst="/home/ipa/web/db_backups/db.sqlite3.$[ EPOCHSECONDS % 86400 ]"
     
    sqlite3 "${db_src}" ".backup 'backup_file.sqlite3'"
    cp "${db_bak}" "${db_dst}"
    cd "$( dirname "${db_dst}" )"
    tar -czf "/home/ipa/web/ipadbbackup.tar.gz" "$( basename "${db_dst}" )"
    rm "${db_dst}"
    
    echo "Running email backup"
    cd "/home/ipa/web" 
    python2.7 backup_via_email.py
    rm ipadbbackup.tar.gz
    

    Sempre certifique-se de registrar sua saída do cron ao tentar depurar, suponho que você tenha visto um command not found: letem algum lugar.

    • 4

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve