Skip to content

Instantly share code, notes, and snippets.

@harupong
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save harupong/8816471 to your computer and use it in GitHub Desktop.
Save harupong/8816471 to your computer and use it in GitHub Desktop.
Linux サーバー上で1日1つ生成されるファイルを Box に自動アップロードする
# coding: utf-8
# based on http://pgnote.net/?p=1842
require 'mail'
attachment = ARGV.shift
Mail.defaults do
delivery_method :smtp, {
:address => "<Server-Address>",
:port => 587,
:user_name => ENV['MailUsername'], #環境変数
:password => ENV['MailPW'], #環境変数
:authentication => :plain
}
end
mail = Mail.new do
to '<hogehoge@u.box.com>' #Box の WebUI で送信先アドレスを取得
from '<fugafuga@xxxx>'
subject 'whatever_title'
body 'whatever_body_you_want'
add_file attachment
end
mail.deliver!

何がしたいの?

Linux サーバー上で毎日生成されるファイルを Box に自動でアップロードしたい

どうやってやるの?

メール送信用の Ruby スクリプトを cron で毎日回す

Cron エントリー

/bin/bash -l -c 'cd /path/to/script/ && ruby box_file_sender.rb `find /path/to/files/toUpload/ -type f | sort -n | tail -1`'

スクリプトの引数としてアップロードしたいファイルをフルパスで渡してる。ファイル名 YYYYMMDDhhmmss で毎日生成されるファイルのうち最新1件だけを渡したいので、

`find /path/to/files/toUpload/ -type f | sort -n | tail -1`

というコマンドで該当の1件を取得する。

何で Box ?

  • 容量が増えた(50GB)
  • メール経由で特定フォルダにファイルをアップロードできる
  • Windows 等の専用クライアントで、特定フォルダだけ同期できる

Box の専用クライアントじゃダメなの?

重そうだからボツ。サーバーを他の用途でも使ってるので、常時動くツールは使いたくない。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment