web-dev-qa-db-ja.com

cronスケジュールバックアップスクリプトが機能しないか、ログファイルに書き込んでいない

ルートのcronタブから1日1回実行するように重複バックアップスクリプトを設定しています。

私はそれを次のように設定しました:

Sudo crontab -e -u root

次の行を追加しました:

00 03   *   *   *  root   /home/[myusername]/Scripts/Backups/DuplicityBackup.sh

スクリプトには、次のようなテキストファイルに書き込むコマンドがあります。

echo "Creating backup of data directory"
PASSPHRASE='[mypassword]' duplicity /usr/share/nginx/data file:///dysonbackup/datadir &>> /home/[myusername]/Scripts/Backups/backup_logs/data_backup_log.txt

echo "Done"

スクリプト自体をrootとして実行すると、バックアップが開始され、テキストファイルに書き込まれます。

ランニング

Sudo crontab -l

リストされていることを示しています

ランニング

grep DuplicityBackup.sh /var/log/syslog

ショー

May 28 03:00:01 [myservername] CRON[89749]: (root) CMD (root   /home/[myusername]/Scripts/Backups/DuplicityBackup.sh)

したがって、少なくとも実行がトリガーされると想定していますが、テキストファイルに新しい情報はありません。

また、バックアップディレクトリに新しいファイルがないため、重複バックアップが実行されているようには見えません。

Ubuntu 20.04

重複0.8.12

1
dysonsphere

過剰なフィールド

Sudo crontab -e -u rootはユーザーrootのcrontabを編集します。これは、システム全体のcrontab(/etc/crontab)とは異なります。前者は、次の形式のエントリを使用します

m h  dom mon dow  command

後者は

m h  dom mon dow  user  command

前者を使用すべきだった場所で後者の構文を使用しました。ツールを実行しようとしました

root   /home/myusername/Scripts/Backups/DuplicityBackup.sh

解決策:ジョブをそのまま/etc/crontabに移動します。または、rootを削除して構文を修正します。

それが十分でない場合は、読み続けてください。


シバンはありませんか?

DuplicityBackup.shには、Bashをインタープリターとして指定する Shebang が含まれていますか?

cronはsh/home/myusername/Scripts/Backups/DuplicityBackup.shを実行します。シバンがない場合 状況は一般的に複雑です 、しかしshは、誰がshを提供するかに関係なく、shで実行する必要があります(異なる実装、比較 this )。

スクリプトをBashから実行すると、Bashで実行されます。

&>>あなたが使用したのはバシズムです。 Bashでは、&>> file>> file 2>&1と同等であり、これが必要なものです。 shでは& >> fileと同等であり、これはあなたが望むものではありません。

解決策:シバンを使用します。


アクセスできない/home/myusername

/home/myusernameは、次の理由で利用できない場合があります。

  • /home/myusernameは、myusernameがログアウトすると自動的にアンマウントされます(特に暗号化されている場合は可能です)。

  • または、/home/myusernameallow_otherなしで Fuse としてマウントされているため、rootとして実行されているcronはアクセスできません。

  • または、cronはsystemdによって実行され、サービス(cron.service)はProtectHome=またはInaccessiblePaths=を使用して/home/myusernameへのアクセスを制限します(ただし、可能性は低いです)。

解決策:rootによって実行されるcronジョブで/home/myusernameを使用しないでください。

2