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 rubyrequire 'digest/md5'require 'shellwords'
file = ARGV.shiftexit unless fileexit unless File.exist?(file)
ext = ''if file =~ /^(.*)(\.\w+)$/ then ext = $2end
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に任意のファイルを投げる
追記 2025/6/5
s3cmd ではなく純正の aws s3 cp を使うのが良さげ アカウント情報は
~/.aws/ content-type を指定するとブラウザで文字化けしないみたい % aws s3 cp s3://your-bucket/yourfile.txt s3://your-bucket/yourfile.txt --metadata-directive REPLACE --content-type "text/plain; charset=utf-8"
#ブログ 2018/4/27