ルートの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
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/myusername
はallow_other
なしで Fuse としてマウントされているため、rootとして実行されているcronはアクセスできません。
または、cronはsystemd
によって実行され、サービス(cron.service
)はProtectHome=
またはInaccessiblePaths=
を使用して/home/myusername
へのアクセスを制限します(ただし、可能性は低いです)。
解決策:rootによって実行されるcronジョブで/home/myusername
を使用しないでください。