Linuxのbashスクリプトでバックアップを自動化する正しい方法

Linuxのbashスクリプトでバックアップを自動化する正しい方法

Moodleのインストールをバックアップするために書かれたbashスクリプトがあります。うまくいき、バックアップをテストしてみましたが、問題が発生しました。バックアップするたびにパスワードを入力する必要があるため、単にバックアップを自動化するタスクを実行するのでは sudoなく、直接入力する必要があります。cron

cron今私はこれが私が知らないものに関連しているか、SSHキーを使用することに関連していると思います。どちらにしてもバックアップを自動化したいです。

#!/bin/bash

# Turn on Maintance mode and log it...
logger "BEGIN Turning on maintance mode in moodle"
lynx -cmd_script=./backupScripts/turnOnMaintMode http://moodle.leeand00domain.local
logger "END Turning on maintance mode complete."

logger "BEGIN Creating Backup Directory"
export bkdir=$(date +"%Y-%m-%d")
mkdir $bkdir 
cd $bkdir
logger "END Creating Backup Directory"

#Get a backup copy of the database
logger "BEGIN Backing up the Moodle Database"
mysqldump -u moodleuser --password=XXXXX -C -Q -e --create-options moodle > moodle-database.sql
logger "END Backing up the Moodle Database"

#Get a backup copy of moodle data 
logger "BEGIN Backing up moodledata"
tar -cvzf moodledata.tar.gz --exclude='/var/moodledata/cache' --exclude='/var/moodledata/lang' --exclude='/var/moodledata/sessions' --exclude='/var/moodledata/temp' /var/moodledata  && tar -cvzf moodleinstallation.tar.gz /var/www
logger "END Backing up moodledata"

cd ..

tar -cvzf  $bkdir.tar.gz  $bkdir

# Turn off Maintance mode and log it...
logger "BEGIN Turning off maintance mode in moodle"
lynx -cmd_script=./backupScripts/turnOffMaintMode http://moodle.leeand00domain.local
logger "END Turning off maintance mode in moodle complete."

ベストアンサー1

私は次のいずれかを行います。

方法#1 - システムクローン

実際のユーザーのcrontabエントリではなく、システムのcronにバックアップスクリプトを追加します。ほとんどのシステムは、/etc次のディレクトリ構造を保持します。

$ ls -1d /etc/cron.*
/etc/cron.d
/etc/cron.daily
/etc/cron.deny
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly

適切なディレクトリに必要な頻度で実行したいスクリプトを配置するだけです。

方法 #2 - パスワードのないsudo

/etc/sudoers別の方法は、編集コマンドを使用してファイルに項目を設定することですvisudo。このエントリは、この特定のスクリプトに対するユーザーのcrontabエントリに、パスワードなしでアクセスする権限を付与します。 crontabのエントリは次のとおりです。

$ sudo ...your script...

ファイルのエントリは/etc/sudoers次のとおりです。

user ALL=(root) NOPASSWD: /home/user/cronscript.sh

引用する

おすすめ記事