uploadコマンド

uploadコマンド

(2018/4/27)

重要じゃないけれどとりあえず保存しておきたいファイルや、一時的にファイルを共有したいときなどのために upload というコマンドを使ってなんでもS3にアップロードしている。

$ upload filename

とすると、ファイルをS3にアップロードしてアップロード先のURLが帰ってくる。Gyazoの感覚に近いかもしれない。後で使う可能性がある場合はURLをGyazoScrapboxに記録しておく。フォルダとか考えなくて良いのでラクである。S3は安くて便利なのでこういう用途には良いと思う。

s3cmd コマンドが必要
~/.s3cfg にS3のアカウント情報を書いておく
masui.org というバケットが有ることを仮定している

数テラバイトのデータをS3に置きっぱなしなのだが月額課金は$10ぐらいである。動画でもなんでもアップロードしている。ハッシュ値がファイル名になるので他人からアクセスされにくいだろう。

いまどき絶対にローカルに置いておきたいファイルはどういうものだろう。開発中のソフトウェアや文書はGitHubに置くだろうし。GitHubにも置きたくないのは id_rsa とかぐらい?

upload.rb
Copied!
#!/usr/bin/env ruby
require 'digest/md5'
require 'shellwords'

file = ARGV.shift
exit unless file
exit unless File.exist?(file)

ext = ''
if file =~ /^(.*)(\.\w+)$/ then
ext = $2
end

hash = Digest::MD5.new.update(File.read(file)).to_s

dstfile = "s3://masui.org/#{hash[0]}/#{hash[1]}/#{hash}#{ext}"
system "/usr/local/bin/s3cmd -c /home/masui/.s3cfg put --acl-public #{Shellwords.escape(file)} #{dstfile} > /dev/null 2> /dev/null"
system "echo http://masui.org.s3.amazonaws.com/#{hash[0]}/#{hash[1]}/#{hash}#{ext}"


改良版を作った話があった (2018/12/14)
/miyamonz/uploadコマンドでscrapboxに任意のファイルを投げる

#ブログ 2018/4/27
Powered by Helpfeel