0

うまくいけば、私はそれを適切なフォーラムに投稿しています..

基本的に、手動で実行すると機能するMySQLデータベースダンプを実行するスクリプトを実行しようとしていますが、何らかの理由でcrontabがその特定のスクリプトを実行していないようです。

私のcrontabは次のようにセットアップされています(テスト目的で、毎分実行されます):

* * * * * /opt/lampp/htdocs/xyz/backup/backup.sh

スクリプトは次のように設定されています。

#!/bin/bash
# Script to backup the database
/opt/lampp/bin/mysqldump -u root xyz > backup_$(date +%Y%m%d).sql
echo " backup_$(date +%Y%m%d)" > /opt/lampp/htdocs/xyz/backup/log.txt

log.txt が作成されているため、スクリプトが実行されることがわかります。しかし、何らかの理由で、SQL ファイルが生成されません。私もその線を知っています

/opt/lampp/bin/mysqldump -u root xyz > backup_$(date +%Y%m%d).sql

コマンドラインで実行するとファイルが生成されるため、機能します。

どんな助けでも大歓迎です!

4

3 に答える 3

2

これを試して:

/opt/lampp/bin/mysqldump -u root xyz > backup_$(date +%Y%m%d).sql

そのルートユーザーのパスワードを-p(password)スペースなしで入力すると、機能するはずです。

于 2013-09-16T12:11:17.340 に答える
0

このスクリプトを実行しているユーザー ID は? その特定のアカウントのホームディレクトリにバックアップ ファイルを書き込もうとします。このアカウントにそのディレクトリの書き込み権限があり、その場所までのすべての親ディレクトリにアクセスできることを確認してください。

それを超えて、あなたのスクリプトはやや際どいことに注意してください。毎日午後 11 時にスクリプトを実行するように (おそらく) 設定することを考慮してください。ダンプに 1 時間以上かかる場合は、別の日付をログ ファイルにダンプすることになります (ちなみに、 ではなく を使用しているため、追加ではなく上書きします>) >>。これを回避するには、スクリプトの開始時に日付を生成して変数に割り当て、後で日付を呼び出す代わりにその変数を使用します。

于 2012-11-20T01:43:16.220 に答える