【シンプルに口から出た】Zenlogicのレンタルサーバーに自動バックアップがない【なんでやねん】
他の環境は自動バックアップがあって安心かつ楽なんですよね。
なんでないのかなー
サポートサイト読む限り、内部では持っている様子。
でも担当者の任意で使えるものはないとのこと。
で、作りました。
その内容を公開しますー
FTPが使える人はええ感じにになりますよ。
※雑かもしれません
どこかでまた更新します。
概要としては
保存したいバックアップを設置するディレクトリを作成
Cronで実行するコマンドを実行するPHPを作って設置
(別にPHPじゃなくても良)Cronを利用/設定(任意のコードを定期実行)
以上です
準備するもの
Zenlogic ホスティング on IDCF Cloud(ICシリーズ1~4)のどれか
※その管理画面でCron設定します。任意のディレクトリをFTP上で作成
ここでは「/virtual/htdocs/bk/」といった形になるように
公開領域の下にbkというディレクトリを作成
※パスは正直なんでもよいです。下のコード内とズレがなければ。以下のコードが記述されたPHP(シェルが組める人はそれでもOK)
ここではPHP前提で書いておきます。
※本環境はSSHが使えない故に、シェルでの登録はできますが、目視で確認が取れにくいので作成できればブラウザアクセスすると動作確認が取れるのでPHPとしました。
ディレクトリ一括バックアップファイル生成用
※ファイル名はなんでもよいです。
#!/usr/bin/php
<?php
$yesterday = date("Ymd",strtotime("-1 day"));
$cmd01 = 'rm -rf /virtual/htdocs/bk/'.$yesterday.'.tar.gz';
exec($cmd01);
$date = date("Ymd");
$cmd02 = 'tar -zcvf /virtual/htdocs/bk/'.$date.'.tar.gz /virtual/htdocs/main/';
exec($cmd02);
※上記は任意のディレクトリに、1日前のデータがあればCron実行時に削除する仕組みになっています。必要なければ「$yesterday」から3行を削除すると一生保存し続けるものにチェンジできます。
データベースバックアップ用
#!/usr/bin/php
<?php
ob_start(function($buf){ return mb_convert_encoding($buf, 'SJIS', 'UTF-8'); });
$date = date("Ymd");
$cmd01db = 'mysqldump -u ”データベースのユーザー名” -p -h 127.0.01 ”データベース名” > ”保存したいパス”'.$date.'.sql --password=”データベースのパスワード”';
exec($cmd01db);
$day_before = date("Ymd",strtotime("-5 day"));
$cmd001db = 'rm -rf ”保存したいパス”'.$day_before.'.sql';
exec($cmd001db);
※上記は任意のディレクトリに、5日前のデータがあればCron実行時に削除する仕組みになっています。必要なければ「$day_before」からすべて削除すると一生保存し続けるものにチェンジできます。
実装方法
①上記のPHPファイルを任意のディレクトリに任意の情報を打ち込んで
それぞれ保存してアップロード。
②Cron設定する
設定方法はこちら
注意点
保存するファイルのエンコードは必ず「UTF-8」とし、改行コードは「LF」とするのがよいみたいです。
アップロードしたファイルはパーミッションを「755」にしましょう。
私はこれで結構時間を無駄にしました。Cronの実行スケジュールは毎日とすることです。
これ以外の場合はPHPファイルの中身を調整しないと削除などが正しく動作しません。
※実行タイミングはアクセス数の少ない深夜の方が良いと思います。Zenlogicのコントロールパネルは最低でも2週間に1回は覗きに行ってみてください。設定ミスするとバックアップが大きく溜まって、契約時のストレージ容量を超過してサーバーが停止します。※私はこれで1発止まりました。
他にも頑張れば他のサーバーにバックアップファイルを保存とかもできます。
希望があれば書こうと思います。
ではまた。