/var/lib/mysql
フォルダーと/var/www
フォルダーのバックアップを作成し、それらをtar.gzファイルとしてマウントされたネットワークファイルサーバー(uslons001)に保存します。
ここに私のbashファイルがあります:/bin/backups/mysqlbackup.sh
#!/bin/bash
mkdir /home/lv_admin/uslons001/`date +%d%m%y`
cd /home/lv_admin/uslons001/`date +%d%m%y`
tar -czf mysql.tar.gz /var/lib/mysql
tar -czf www.tar.gz /var/www
Cmdシェルで実行すると完璧に機能しますが、cronジョブを設定すると実行されないため、cronジョブを適切に設定していません。私のcronジョブは次のようになります。
36 10 * * 5 /bin/backups/mysqlbackup.sh
../var/log/cron.logファイルにも何もないため、エラーは記録されません。 (/etc/syslog.confファイルでcronロギングを有効にした後でも
Bashファイルの場所を/usr/local/mysqlbackup.sh
に変更しました。その後、ファイルに対して次のコマンドを実行しました。
cd /usr/local/
Sudo chown [username] mysqlbackup.sh
Sudo chmod -rwx mysqlbackup.sh
Sudo chmod go= mysqlbackup.sh
それから、cronジョブを編集するコマンドとして~$ crontab -e
の使用を停止し、Sudo nano /etc/crontab
の使用を開始しました。そこで、次のように新しいジョブ行を作成しました。
00 20 * * 5 root /usr/local/mysqlbackup.sh
代わりにこのファイルを使用し始めました。これは、どのユーザーに実行する必要があるかを伝えることができるためです。これらの変更後、cronジョブは機能します。
少数のポイント:
なぜ/etc/cron.weekly/
スクリプトでタイムストリングを使用しているのですか?あなたはそこに実行可能なスクリプトを置くことになっています。それらをcrontabする必要はありません。それは彼らの仕事を複製するだけです。私が話していることの例については、/etc/cron.daily/apt
を見てください。それは単なるスクリプトです。
Geirhaのコメントによると、ファイルに拡張子を付けることはできません。奇数、私は知っているので、名前を変更します:
Sudo mv /etc/cron.weekly/mysqlbackup{.sh,}
Sudo chmod +x /etc/cron.weekly/mysqlbackup
を実行して実行可能にする必要があります。その後、そのパスを使用して実行することでテストできます。
/etc/cron.weekly/
に残すと、スクリプトはrootとして実行されます。 ~/
リンクはいずれも機能しません。完全なパスを使用します。 mkdir
を実行した後、cd
を実行することをお勧めします。これにより、後続のコマンドの巨大なパスが削減されます。生成されたファイルをユーザーが所有する必要がある場合は、バックアップが完了したら、スクリプトをchown
ユーザーに作成します。
これがルート駆動である理由はわかりません。ホームディレクトリでスクリプトを実行し、標準のcrontab -e
を使用してルールを追加し、実行するだけです。まだ実行可能である必要があり、完全なパスを使用することをお勧めしますが、アクセス許可を少し簡単に保ちます。
曜日は数値フィールドであるため、「fri」を解析しようとして失敗しています。 5に変更します(日曜日は0)。 edit:これを修正するためにOPが更新されたことがわかりましたが、まだ問題がありますが、他の回答で対処されています。
Cron形式はオンラインで十分に文書化されているため、通常は新しいcronジョブを作成する前にドキュメントを確認します。 http://en.wikipedia.org/wiki/Cron
さらに、crontab -e
(または同様の)を使用してcronファイルを編集していることを確認します。これにより、確実に再解析されます。
次のように、cron行のエラーをファイルにリダイレクトしてみることができます。
/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log
これにより、stdoutとstderrの両方がキャッチされ、構文エラーなどがある場合は報告されます。
注:のバックアップを行う場合 ライブ データベースでは、汎用のtarコマンドを使用するのではなく、mysqldump
などの特定のユーティリティをバックアップに使用する必要があります。理由は、tarの実行中に/ var/lib/mysql /内のファイルが変更されると、データベースの一貫性のないイメージになる可能性があるためです。