LoginSignup
2
0

More than 3 years have passed since last update.

ロリポップ!からケチケチバックアップする話

Posted at

0.初めに

私は、非エンジニアのドシロウトです。しかも貧乏(汗)です。

元々、無料レンタルサーバーのXFREEで、とあるPHP製のオンラインメモの保管ツールで個人的なメモを保存し、テスト利用していました。

無料レンタルサーバー【XFREE(エックスフリー)】

自分専用のオンラインメモツールは、意外と便利だったので、本格的に使って行こうと考えました。

XFREEの無料版は容量が1GB、SSL非対応で少しレスポンスも遅いときがあり、 格安のレンタルサーバーを探しました。

探した結果、結局、有名なロリポップ!レンタルサーバーで一番安いエコノミープランを試すことにしました。

ご利用料金 - レンタルサーバーならロリポップ!

エコノミーでも初期費用が1500円かかりますが、月額は100円で格安です。

エコノミープランは、容量20GB、SSL対応、PHPも使えますが、バックアップをするオプションを入れると月300円追加で必要です。

バックアップ / 機能一覧 / サービス - レンタルサーバーならロリポップ!

貧乏な私は、Google Apps Script(GAS)を使って、なんとかバックアップできないか、試すことにしました。

1.試したこと

試したことをまとめると以下です。

  • ダウンロード用PHPツール

    ロリポップ!にあるメモ保存ディレクトリを丸ごとZIPにしてダウンロードするPHPツールの設置

  • 起動/保存用GASツール

    PHPツールをHTTPベースで起動し、ダウンロードしたZIPを、Google Driveに1世代保存するGASツールの作成、トリガー設定

2.ダウンロード用PHPツール

以下の記事の「PHPでzipコマンドを使ってディレクトリを丸ごと圧縮する」のPHPプログラムを丸パクリしています。

PHPでディレクトリを丸ごとZIP圧縮する方法の速度比較

ZIPを一時保存するディレクトリを新たにロリポップ!に作ったのと以下のPHPプログラムを設置しただけです。

注)getZipのパラメタは、フルパスでの指定が必要ですが、ロリポップ!の管理画面の「ユーザー設定>アカウント情報」で分かります。

down.php
<?php
ini_set('display_errors', "On");
//$dir 取得したいフォルダパス
//$zipFileSavePath 一時、zipを保存しておくフォルダパス
function getZip($dir,$zipFileSavePath){

 // zipファイル名
    $fileName = "zipFile".time();
// 圧縮対象フォルダ
    $compressDir = $dir;

// コマンド
// cd:ディレクトリの移動
// zip:zipファイルの作成
    $command =  "cd ". $compressDir .";".
        "zip -r ". $zipFileSavePath . $fileName .".zip .";

// Linuxコマンドの実行
    exec($command);

// 圧縮したファイルをダウンロードさせる。
    header('Pragma: public');
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=".$fileName.".zip");
    readfile($zipFileSavePath.$fileName.".zip");

//    消す
    unlink($zipFileSavePath.$fileName.".zip");
}

getZip('/home/users/1/aaaa.jp-bbbbb/web/(保存ディレクトリ)','/home/users/1/aaaa.jp-bbbbb/web/(ZIP一時ディレクトリ)');

?> 

3.起動/保存用GASツール

以下の記事を参考にGASを作成しました。

GASを使ってGoogle Drive内にあるファイルのダウンロードURLからコンテンツを取得したい - Qiita

gasのプログラムが以下でこれを1日1回実行するようにトリガー設定しています。

zipdown.gs
function myFunction() {

    // バックアップファイル名 ※lolipop-down.zipを使ってます
    var svrfilenamearray = [ "lolipop-down.zip",
                             "lolipop-downtest.zip" ];

    // ドライブのファイル名取得        
    var filesdel = DriveApp.getFiles();


    // ファイルがあるだけ繰り返す
    while (filesdel.hasNext()) {
      var filed = filesdel.next();
      // バックアップファイル名かチェック
      for(var i = 0; i < svrfilenamearray.length; i++) {
        if (filed.getName() == svrfilenamearray[i]) { 
          // 古いバックアップファイル削除処理
          filed.setTrashed(true);
          Logger.log(filed.getName()+" バックアップファイル削除終了");
        };
      };
    };


  // ロリポップ!のダウンロード用PHPツールのURLを発行して受信
  var blob = UrlFetchApp.fetch('https://(ロリポップ!のサイト)/down.php', {muteHttpExceptions: true}).getBlob();
  // Google Driveに保存
  DriveApp.createFile(blob.setName('lolipop-down.zip'));
}

4.終わりに

貧乏でなければ、普通にバックアップオプションを使った方が良いと思います。

牛丼一杯の値段ですので…

以 上

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0