サーババックアップスクリプト
1531 ワード
サーバ内のデータはかなり重要ですが、サーバのデータが壊れてバックアップがなければ大きくなります.そこでボスはサーバデータバックアップスクリプトを作成させました.バックアップ戦略を考えてみました.サーバ内のデータを定期的にパッケージ化し、ネットワークを介して別のサーバに格納すれば、この機能を完了できます.バックアップには3つのステップがあります:(1)データの収集:サーバ内のデータをサーバデータディレクトリから指定したディレクトリにコピーします.(2)データパッケージング:tarで指定したディレクトリの下のファイルをパッケージングして圧縮する.(3)送信データ:ネットワークを介して圧縮ファイルを別のサーバに送信する.
1.データ収集
サイトデータを指定したディレクトリにコピーし、/var/backupディレクトリの下にあると仮定します.
2.圧縮データ
3. ファイルの送信
送信ファイルはftp送信を選択できます.自分でファイル転送プロトコルを書くこともできます.
タイミング処理はどのように実現しますか?私が考えている最も原始的な方法はバックグラウンドプログラムを開くことです.
もう一つの便利な方法はcrontabです
拡張機能:すぐにバックアップする場合、ネットワーク内のデータを大量に変更した場合があります.タイミングバックアップ前に紛失した場合は、残念です.即時バックアップ機能があれば、大量の変更が完了したらすぐにバックアップすればOKです.実装方法は簡単で、バックグラウンドサービスプロセスを開き、ネットワークを通じて「backup-now」コマンドを傍受し、コマンドを受信するとbackupを1回実行します.
これは私のShellプログラムのディレクトリ組織です.
1.データ収集
サイトデータを指定したディレクトリにコピーし、/var/backupディレクトリの下にあると仮定します.
BackupPath=/var/backup
cp -r /var/www/zt $BackupPath
2.圧縮データ
FileName=backup-`date +%Y%m%d`.tar.gz
tar czf $TempFile $BackupPath
3. ファイルの送信
送信ファイルはftp送信を選択できます.自分でファイル転送プロトコルを書くこともできます.
FileName=$1
T=Temp.ftp
echo "user $ftp_user $ftp_passwd" > $T
echo "binary" >> $T
echo "cd /xxx/yyy" >> $T
echo "put $FileName" >> $T
echo "bye" >> $T
ftp -i -n $ftp_ip < $T
rm $T
タイミング処理はどのように実現しますか?私が考えている最も原始的な方法はバックグラウンドプログラムを開くことです.
while true; do
./backup.sh #
sleep period_time #
done
もう一つの便利な方法はcrontabです
拡張機能:すぐにバックアップする場合、ネットワーク内のデータを大量に変更した場合があります.タイミングバックアップ前に紛失した場合は、残念です.即時バックアップ機能があれば、大量の変更が完了したらすぐにバックアップすればOKです.実装方法は簡単で、バックグラウンドサービスプロセスを開き、ネットワークを通じて「backup-now」コマンドを傍受し、コマンドを受信するとbackupを1回実行します.
これは私のShellプログラムのディレクトリ組織です.
.
|-- backup.sh
|-- collect.d
| |-- collect_review.sh
| `-- collect_zentao.sh
|-- config
|-- send_file.d
| |-- send_file_by_ftp.sh
| `-- send_file_by_netcat.sh
`-- send_file.sh