Não é possível fazer backup usando o Duplicity via cron

1

Estou tentando executar um script de backup foo.sh via cron . O código é o seguinte:

#!/bin/bash
export PASSPHRASE=password123
duplicity ../learningbash file://../../../media/kingston
unset PASSPHRASE

Em seguida, adiciono a seguinte linha em "crontab -e":

58 07  * * * /home/ashish/learningbash/foo.sh

Funciona perfeitamente quando eu o executo a partir do terminal usando ./foo.sh . Mas não é executado a partir do cron . Além disso, se eu editar "foo.sh" no código a seguir, a primeira linha será executada perfeitamente a partir do cron . Mas o script de backup não é executado.

#!/bin/bash
touch hello.txt

export PASSPHRASE=bacteria99
duplicity ../learningbash file://../../../media/kingston
unset PASSPHRASE
    
por Ashish Neupane 07.02.2016 / 03:33

2 respostas

0

Isso porque você usou caminhos relativos em seu script:

duplicity ../learningbash file://../../../media/kingston

Isso está funcionando no terminal porque você estava no diretório correto onde deveria estar para interpretar os caminhos relativos corretamente.

cron de um usuário individual define o diretório pessoal do usuário como PWD .

Para resolver o problema, use o caminho absoluto, por exemplo:

duplicity /bar/learningbash file:///foo/bar/media/kingston
    
por heemayl 07.02.2016 / 03:38
0

Eu acabei instalando o expect e configurando logins ssh de raiz confiáveis no localhost para fazer isso funcionar. O cron chama duplicity.expect, que contém:

#!/usr/bin/expect -f
# run duplicity backups script with a tty
set timeout 7200
spawn ssh -tt localhost /opt/backups/bin/duplicity.sh
expect {
  timeout {
    puts "Connection timed out"
  }
  eof {
    puts "EOF reached"
  }
  "yes/no" {
    send "yes\r"
    exp_continue
  }
}

duplicity.sh contém os comandos de backup de duplicidade reais a serem executados e a variável PASSPHRASE env que o GPG usará para criptografá-los.

    
por user2895719 16.08.2018 / 14:41