ロシア訪問

イメージ
モスクワに行ってきました
 10月10日から14日までの3泊5日でモスクワに行ってきました。

 20年ぶりくらいの海外旅行。

旅程 初日 日本を午前10時頃に出発。エアロフロートで。現地時間で16時過ぎに空港着。
ちなみに日本とロシアの時差は6時間。飛行機に乗っている時間は約10時間です。
機内食はイマイチ。機内食を考えると、次回、行くことがあるならJALにしようと思う。

出口にて日本語のできるロシア人女性により、お迎えを受け、車でホテルへ。
道路混雑が激しく、ホテルに着いたのは19時前頃。
お迎えの女性によると、現在のモスクワはヨーロッパで一番交通混雑が激しい都市であるとのこと。

当日は雨も降っていて、軽く徒歩で外出してすぐにホテルに戻り就寝。

2日目 元々、お願いしていた現地コーディネータの方(片言の日本語が話せるロシア人)と車でお出かけ。仕事関係なので、内容は・・・・🆖
お昼に食べたうどんが・・・・激まず。 15時頃にホテルに戻り、また、お出かけ。
GoogleMapsを頼りに地下鉄にトライ。 地下鉄は地中深く、エスカレータが長くてかなり急な作り。 アルファベット表記もあるんで、それを頼りにガイドも無しで乗ってみました。
結構、簡単でした。GoogleMapsは乗るべき車両の位置、何駅目かの駅数、そして駅名を日本語名でも表記してくれて、問題なく動くことができました。

目的のお土産やさんでチョコレートの大量買いと、ホテルで飲むためのビールを購入。他にも少しだけケーキを購入しました。
ケーキは、、、、ちょっと日本の味とは違う感じ。
3日目 3日目は今回の旅行のお目当ての一つである「猫劇場」へ。 ひとまず、午前中はまた地下鉄に乗って、「赤の広場」へ。

それから、グム百貨店でランチ。 14時半にホテルに戻り、コーディネータの女性(アンナさん)と合流。 猫劇場の前に「アルバツカヤ」というモスクワの観光者向けの通りでお買い物。
猫も芸を仕込めると言うことに感動を覚えました。 ただ、猫劇場は小さな子どもがたくさん来てた。子ども向けの演劇です。
ロシア人の子どもの正義感が強く見られる演劇をやっていました。 多分、同じ演劇をしても、日本とは反応が違うような気がします。 4日目 最終日です。 最終日は日本で購入したSIMカードの通信量がオーバーしてしまい、外ではスマホが使え…

Dropbox API を利用してPHPでVPSサーバーのバックアップ手順

VPSのバックアップをどこにとるか?


 VPSサーバーには提供者側からバックアップの仕掛けが用意されていません。そう考えると、バックアップをどこかに取得する必要があります。
 以前は、違うブランドのVPSサーバーを借りて、そことrsyncさせる方法をとっていました。

 ただ、この方法だと弊社のサーバー管理方法では、一括バックアップを取得しようとするとrootアカウントでやり取りすることになってしまい、気持ち悪さを感じていました。

 今回、このブログで初めてコード埋込を実施しました。下記URLを参考にコード埋込をできるようにしました。
https://qiita.com/piro_erdes/items/f133e170a8cf6c10b449

Dropbox API 活用

 Dropbox APIを利用することでVPSサーバー内のプログラムを使って、Dropboxへ転送してます。

 弊社の場合、Dropbox Business Advancedを利用していますので、容量無制限でアップで利用できます。
 Dropboxを利用することで、世代管理も自動でやってくれます。
 また、APIコール数も月間で100万まで大丈夫のようです。

CURLを活用

 基本はCURLの機能で実現していますので、タイトルにPHPと入れていますが、基本的には特別なSDKなどは不要で、応用すれば他の言語でも可能だと思います。

Dropbox APIのAPP作成

手順1

まず、Dropbox APIを利用するためには
へアクセスして、右上にある「App console」ボタンを押します。
ログインしてない場合はログインを促されます。

手順2

Create app のボタンを押します。
すると、下記の様な画面が出てきます。
Businessアカウントなので、右にDropbox Business APIの選択肢も出てきますが、Business APIは「管理機能」での利用なので、今回は左側の普通のDropbox APIを選択します。

手順3

続いて、下記の選択をしますが、今回はバックアップというかuploadの機能だけですので、App folderだけで大丈夫と思います。

手順4

Name your appに名前を入れます。
なんか、他で利用されている名前は利用できないみたいですので、ユニークになるような名前を入れてください。
ここで入力された名前がDropbox内のアプリの下にできます。
最後に、I agree to・・・のチェックボックスに印を入れて「Create app」です。

手順5

ここまで完了するとAppの詳細画面が表示されます。
Setting内のOAuhth2にある「Generated access token」のところにあるGenerateボタンを押すとトークンが生成されますので、コピーしてメモってください。
これが、コード内のAPI KEYにあたります。

ここまでが、Dropbox側の準備です。

VPSサーバー側の準備

 弊社管理のVPSの場合、VPSサーバーに複数のVirtualHostを設定して、Linuxのユーザー単位で管理し、コンテンツはユーザーのホームディレクトリ内に置いて管理するように設定しています。
 ただ、それぞれのホームディレクトリに対してはRead権限はOtherに与えていますので、誰でも読むことはできます。
 ですので、Dropboxバックアップ用ユーザーを設定して、そのユーザーがバックアップを実施するように設定しました。
そうすることで、バックアップ用cronの設定も一括管理できます。

DropboxへアップロードするためのPHPソース

 $api_url = 'https://content.dropboxapi.com/2/files/upload'; //dropbox api url
 $token = '{API KEY}'; // oauth token
 
 $filename = $argv[1];
 $filerev = filemtime($filename);
 $headers = array('Authorization: Bearer '. $token,
  'Content-Type: application/octet-stream',
  'Dropbox-API-Arg: '.
  json_encode(
   array(
    "path"=> '/{Directory}/'. substr($filename,{ファイルまでの文字数}),
    "mode" => "overwrite",
    "autorename" => true,
    "mute" => false
   )
  )
 );
 
 $cu = curl_init($api_url);
 
 curl_setopt($cu, CURLOPT_HTTPHEADER, $headers);
 curl_setopt($cu, CURLOPT_POST, true);
 
 $path = $filename;
 $fp = fopen($path, 'rb');
 $filesize = filesize($path);
 
 curl_setopt($cu, CURLOPT_POSTFIELDS, fread($fp, $filesize));
 curl_setopt($cu, CURLOPT_RETURNTRANSFER, true);
 
 $response = curl_exec($cu);
 $http_code = curl_getinfo($cu, CURLINFO_HTTP_CODE);
 echo($response."\n");
 echo($http_code."\n");
 
 curl_close($cu);

こんな感じのソースになっています。1ファイルずつ処理するプログラムです。
コマンドラインでPHPを動かします。
最初はtarで圧縮して、転送させようかとも考えたのですが、ファイルサイズが大きくなる上に毎日すごい転送量になるので、1ファイルずつ処理するというやり方にしました。

コマンドラインは
> find /home/{hoge}/www/ -type f  | xargs -n 1 php backup.php

こんな感じで、まず一括バックアップを取得。

一度、全部バックアップを取得した後は
> find /home/{hoge}/www/ -type f -mtime -1 | xargs -n 1 php backup.php
として、前日に変更があったファイルだけを抽出しています。

上記をcronに記述して、夜間に動かすことでバックアップの取得を実施してます。

このPHPプログラムを利用して、同様にDBのダンプもバックアップしています。

今後の予定

今後は、このやり方でyumのログと/etc以下もバックアップしておきたいと考えてます。

コメント

このブログの人気の投稿

UTM(統合脅威管理)って邪魔で不要

AWSのS3をLinuxでマウントして、更にWindowsで利用

宅ファイル便の情報漏洩は人ごとと考えずに