Невозможно выполнить резервное копирование с помощью Duplicity через cron

Я пытаюсь запустить скрипт резервного копирования foo.sh через cron. Код выглядит следующим образом:

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

Затем я добавляю следующую строку в «crontab -e»:

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

Он отлично работает, когда я запускаю его из терминала, используя ./foo.sh. Но он не запускается из cron. Кроме того, если я отредактирую "foo.sh" в следующем коде, первая строка отлично выполняется из cron. Но скрипт резервного копирования не запускается.

#!/bin/bash
touch hello.txt

export PASSPHRASE=bacteria99
duplicity ../learningbash file://../../../media/kingston
unset PASSPHRASE
1
задан 7 February 2016 в 05:39

2 ответа

Поэтому Вы использовали относительные пути в своем сценарии:

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

Это работает от терминала, потому что Вы были в корректном каталоге, где необходимо быть должны интерпретировать относительные пути правильно.

cron из отдельного пользователя устанавливает корневой каталог пользователя как PWD.

Для решения проблемы используйте полный путь, например:

duplicity /bar/learningbash file:///foo/bar/media/kingston
0
ответ дан 7 February 2016 в 15:39

Я закончил тем, что установил, ожидают, и установка доверяемого корня ssh логины на localhost для создания этой работы. крон называет duplicity.expect, который содержит:

#!/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 содержит фактические команды резервного копирования двуличности для выполнения, и переменная ENV ПАРОЛЯ, которую GPG будет использовать для шифрования их всех.

0
ответ дан 29 September 2019 в 12:40

Другие вопросы по тегам:

Похожие вопросы: