コマンドラインでGmailにファイルをバックアップ

| コメント(0) | トラックバック(0)

Gmailの容量は7GBを超えていますが、普通の使い方をしている限り使い切ると言うことはなさそうですよね。
これをオンラインストレージとして使えるようにするソフトがいろいろ出ています。

そこで、バックアップ用途にでも使いたいなぁと思ったのですが、コマンドラインで操作できるようなソフトがあまりない。
やはりバックアップはバックグラウンドで自動で行ってもらいたいので、コマンドラインで動作するアプリをWindowsタスクに登録するのが理想です。

この自動バックアップを実現させるためと、どうやってオンラインストレージとして使っているんだろう、と言う興味からちょっと調べてみました。

具体的なやり方を示しているページは見つかりませんでしたが、いろいろ調べてみてなんとなくわかった気になりました。
まとめると、

  • アップロードはSMTPで添付ファイルとして送信
  • ダウンロードはIMAPもしくはPOPで受け取る
  • ストレージっぽいインターフェースをつける
ということみたいです。

これならコマンドラインで添付ファイル付きメールが送れれば実現できます。

コマンドラインでメールを送るにはCDOを使えば良いのですが、GmailはSSLを使うのでちょっと工夫が必要です。
ここここを参考に書いてみました。

添付したいファイルをコマンドラインオプションに指定することでアップロードできます。
ドラッグ&ドロップでも動作します。

ついでに、何かに利用できるかもということで、本文にはファイルに関する情報をjson形式で載せるようにしました。

下記のソースコードのメールアドレスとパスワードを書き換えて、拡張子「.js」にして適当なファイル名で保存してください。
WSHとして動かせば使用できます。

var mail = "????@gmail.com";
var password = "????";

if (WScript.Arguments.length == 0) WScript.Quit(-1);

var fso = new ActiveXObject("Scripting.FileSystemObject");

var generateInfo = function ()
{
	var message =
		'{\n' +
		'    "application" : "Backup Script",\n' +
		'    "version" : "1.0",\n' +
		'    "files" :\n' +
		'    [\n';
	for (var n = 0; n < WScript.Arguments.length; n++)
	{
		var file = fso.GetFile(WScript.Arguments(n));
		if (n) message += "        ,\n";
		message +=
		'        {\n' +
		'            "name" : "' + fso.GetFileName(WScript.Arguments(n)) + '",\n' +	// ファイル名
		'            "size" : "' + file.Size  + '",\n' +							// ファイルサイズ
		'            "lastmodified" : "' + file.DateLastModified + '"\n' +			// 最終更新日時
		'        }\n';
	}
	message +=
		'    ],\n' +
		'    "upload" : "' + (new Date()) + '"\n' +									// アップロード日時
		'}\n';
	
	return message;
}

var cdo = new ActiveXObject("CDO.Message");
var f = cdo.Configuration.Fields;
var s = "http://schemas.microsoft.com/cdo/configuration/";

f.Item(s + "sendusing")			= 2;
f.Item(s + "languagecode")		= "iso-2022-jp";
f.Item(s + "smtpserver")		= "smtp.gmail.com";
f.Item(s + "smtpauthenticate")	= 1;
f.Item(s + "sendusername")		= mail;
f.Item(s + "sendpassword")		= password;
f.Item(s + "smtpserverport")	= 465;
f.Item(s + "smtpusessl")		= true;
f.Update();

cdo.MimeFormatted = true;
cdo.Fields.Update();
cdo.From = mail;
cdo.To = mail;
cdo.Subject = "Backup Script";
cdo.TextBody = generateInfo();
cdo.TextBodyPart.Charset = "ISO-2022-JP";

for (var n = 0; n < WScript.Arguments.length; n++)
{
	cdo.AddAttachment("file://" + WScript.Arguments(n))
}

cdo.Send();

WScript.Quit(0);

これで手軽にGmailにバックアップできるようになりました(^^

使用上の注意ですが、Gmailには添付ファイルのサイズ制限(25MB)がありますので、それ以上のものはアップロードできません。
それ以外にもいろいろあると思いますので、節度を持って利用しましょう(^^;

トラックバック(0)

トラックバックURL: http://murakya.net/mt/mt-tb.cgi/31

コメントする

オリジナルゲーム

オンラインツール