uploadコマンド
(2018/4/27)
重要じゃないけれどとりあえず保存しておきたいファイルや、一時的にファイルを共有したいときなどのために
upload
というコマンドを使ってなんでもS3にアップロードしている。 $ upload filename
とすると、ファイルをS3にアップロードしてアップロード先のURLが帰ってくる。Gyazoの感覚に近いかもしれない。後で使う可能性がある場合はURLをGyazoやScrapboxに記録しておく。フォルダとか考えなくて良いのでラクである。S3は安くて便利なのでこういう用途には良いと思う。
s3cmd
コマンドが必要 ~/.s3cfg
にS3のアカウント情報を書いておく masui
というバケットが有ることを仮定している 数テラバイトのデータをS3に置きっぱなしなのだが月額課金は$10ぐらいである。動画でもなんでもアップロードしている。ハッシュ値がファイル名になるので他人からアクセスされにくいだろう。
いまどき絶対にローカルに置いておきたいファイルはどういうものだろう。開発中のソフトウェアや文書はGitHubに置くだろうし。GitHubにも置きたくないのは
id_rsa
とかぐらい?upload.rb
#!/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