さくらのVPSにはバックアップ機能はありませんので、データのバックアップを行う場合は自前で用意する必要があります。
MySQLなどデータベースを利用の場合はレプリケーションを行うことで冗長化させることが出来ますが、別途サーバーを用意するなど初期導入コストがかかります。
ここでは簡易バックアップとしてdropboxに定期バックアップをする手順を説明します。
アカウントの準備
まずdropboxのアカウントを用意します。
アカウントを持っていない方はココから作成してください。(無料です)
アプリの作成
API Consoleよりアプリの作成をしてAccess tokenを取得します。
https://www.dropbox.com/developers/apps へアクセスして「Create app」
- Choose an API → Dropbox API
- Choose the type of access you need → App folder
- Name your app → 名前をつける
I agree to Dropbox API Terms and Conditionsにチェックを入れて「Create app」をクリック
【Settings】の【Generated access token】のGenerateボタンをクリック
生成されたaccess tokenを後ほど使うので控えておきます。
スクリプトの設置
ファイルのアップロードはDropbox-Uploaderを使用します。
まずファイルのダウンロードをします。
[root@kusanagi71 ~]# curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 45660 100 45660 0 0 55165 0 --:--:-- --:--:-- --:--:-- 55144
パーミッションの設定
[root@kusanagi71 ~]# chmod +x dropbox_uploader.sh
スクリプトを実行して先ほど控えておいたAccess Tokenを入力
[root@kusanagi71 ~]# ./dropbox_uploader.sh
This is the first time you run this script, please follow the instructions:
1) Open the following URL in your Browser, and log in using your account: https://www.dropbox.com/developers/apps 2) Click on "Create App", then select "Dropbox API app" 3) Now go on with the configuration, choosing the app permissions and access restrictions to your DropBox folder 4) Enter the "App Name" that you prefer (e.g. MyUploader321292434714039) Now, click on the "Create App" button. When your new App is successfully created, please click on the Generate button under the 'Generated access token' section, then copy and paste the new access token here: # Access token: (入力)
The access token is (入力したAccess Token). Looks ok? [y/N]: y The configuration has been saved.
Dropbox-Uploaderの使い方
./dropbox_uploader.sh (パラメーター) (コマンド) (ファイル・ディレクトリ)
上記が基本的な使い方でコマンド部分をupload、deleteなどに変更してバックアップに使っていきます。
コマンド例
./dropbox_uploader.sh upload /etc/passwd /myfiles/passwd.old
./dropbox_uploader.sh upload *.zip /
./dropbox_uploader.sh download /backup.zip
./dropbox_uploader.sh delete /backup.zip
./dropbox_uploader.sh mkdir /myDir/
./dropbox_uploader.sh upload “My File.txt” “My File 2.txt”
./dropbox_uploader.sh share “My File.txt”
./dropbox_uploader.sh list
シェルプログラムを作成してバックアップ
以下シェルスクリプトのサンプルです。
青の太字を適宜変更して使ってみてください。
#!/bin/sh # backup files many days period=3 webdirpath='/var/www/html/' dirpath='/home/admin/Dropbox' mysqlfilename=mysql_`date +%y%m%d` webfilename=web_`date +%y%m%d` mysqldump --opt --password=XXXX --single-transaction --database table名 | gzip > $dirpath/$mysqlfilename.sql.gz tar cvzf $webdirpath/$webfilename.tar.gz $webdirpath chmod 700 $dirpath/$mysqlimportante.sql.gz chown admin:admin $dirpath/$mysqlfilename.sql.gz chmod 700 $webdirpath/$webimportante.tar.gz chown admin:admin $webdirpath/$webfilename.tar.gz oldfile=`date --date "$period days ago" +%y%m%d` rm -f $dirpath/mysql_$oldfile.sql.gz rm -f $webdirpath/web_$oldfile.tar.gz /bin/sh /home/admin/dropbox_uploader.sh upload $dirpath / /bin/sh /home/admin/dropbox_uploader.sh delete ropbox/mysql_$oldfile.sql.gz
periodは何世代までバックアップを取るかの設定。保存データが多い場合容量を圧迫するので注意。
period=3
webdirpathはウェブのディレクトリ。サンプルではウェブのデータとMySQLのデータを保存していますが、適宜変更してください。dirpathはdropboxのシェルスクリプトがあるディレクトリ。
webdirpath='/var/www/html/' dirpath='/home/admin/Dropbox'
ここでは保存ファイル名を定義。1日1回保存を想定しているのでファイル名に年月日を付与しています。
mysqlfilename=mysql_`date +%y%m%d` webfilename=web_`date +%y%m%d`
mysqldumpはMySQLをエクスポートしています。table名のところに半角スペース区切りで保存したいテーブルを指定できます。
2行目はウェブのディレクトリをTar圧縮しています。
mysqldump --opt --password=XXXX --single-transaction --database table名 | gzip > $dirpath/$mysqlfilename.sql.gz tar cvzf $webdirpath/$webfilename.tar.gz $webdirpath
ここではパーミッションの変更をしています。
chmod 700 $dirpath/$mysqlfilename.sql.gz chown admin:admin $dirpath/$mysqlfilename.sql.gz
削除するファイルの定義、削除をしています。
oldfile=`date --date "$period days ago" +%y%m%d` rm -f $dirpath/mysql_$oldfile.sql.gz rm -f $webdirpath/web_$oldfile.tar.gz
Dropboxのアップロード、削除を実行しています。
/bin/sh /home/admin/dropbox_uploader.sh upload $dirpath / /bin/sh /home/admin/dropbox_uploader.sh delete /Dropbox/mysql_$oldfile.sql.gz
以上でバックアップ用のファイル作成、Dropboxへのアップロードを実行できます。
定期的に実行する場合は以下の記事を参考にしてみてください