なんか ntp の設定してたら年が明けてた。iptables の設定わからない。別に普通の日だなぁ。当たり前か。
今年は
- 50mm で納得いく写真がとれるようになりたい
- Ruby 極めたい
- Perl の型グロブをしっかり理解したい
- Haskell やる気になりたい
- unlambda をとりあえず極めたい
- 可愛い女の子と新世界に旅立つ。
最後のがもちろん最もプライオリティが高いものであるが、実現可能性が著しく低いので、まず先に時間移動の方法を見つけたい。
なんか ntp の設定してたら年が明けてた。iptables の設定わからない。別に普通の日だなぁ。当たり前か。
今年は
最後のがもちろん最もプライオリティが高いものであるが、実現可能性が著しく低いので、まず先に時間移動の方法を見つけたい。
あー日記を最初から読み直してメモしてたけど、途中で Fx 固まって消えたのでもういいや。でも年に一度ぐらいは日記を読み直したほうが絶対いいなぁと思った。こんなことあったのか、とか気付いたり、あれって今年のできごとだったんだ、と気付いたり面白い。
現在位置の確認をするのに、過去の日記はたいへんつかえるのかもしれないなぁと思いました。
今年は前年にも増していろいろなことがあり、いろいろな人のお世話になりました。おかげさまで二年ぐらいたったように感じられます。ありがとうございます。
だんだん書ける事が少なくなっていくのが不安ですが、できるだけ何も考えないで書いていけるようにするために緩やかな変化をつけていこうと思います。
なんか GUI のクライアント使うのさえ面倒くさくなってきてミラーリングツールを使って更新することにした。
#!/usr/bin/ruby
require 'optparse'
require 'pathname'
require 'open-uri'
ROOT = '/srv/www/virtual/userid/public_html'
SERV = '/virtual/userid/public_html'
HOST = 's63.xrea.com'
USER = 'userid'
PASS = 'hogehoge'
open("http://www.#{HOST}/jp/admin.xcg?id=#{USER}&pass=#{PASS}&telnet=t") do |f|
data = f.read
ip = data[/NAME="remote_host" VALUE="([¥d.]+)"/, 1]
raise "can't get IP" unless ip
open("http://www.#{HOST}/jp/admin.xcg?id=#{USER}&pass=#{PASS}&remote_host=#{ip}&ssh2=SSH%93o%98%5E") do |f|
end
end
host = nil
dry = false
OptionParser.new do |opts|
opts.on('-n', '--dry-run') { dry = true }
opts.parse!
host = ARGV[0]
unless host
puts opts
exit 1
end
end
def sync(host, dry=false)
dir = Pathname.new(ROOT) + host
raise "#{host} is not exists." unless dir.exist?
system(<<-EOC.gsub(/^¥t+/, ''))
rsync #{dry ? '--dry-run' : ''} -vptr #{dir}/ #{USER}@#{HOST}:#{SERV}/#{host}
EOC
end
unless sync(host, dry)
puts "rsync failed. retry after 5min."
(5 * 60).downto(0) do |i|
print i, "¥r"
$stdout.flush
sleep 1
end
sync(host, dry)
end
こんなスクリプト書いて実行させてる。ホストごとに rsync できるようにしてる。
最初は lftp でやってたのだけど、こいつはなぜかファイルサイズを見るらしく困ったうえに、ファイルリストとるのが劇遅くてやる気がなくなるので結局 rsync にした。ssh 登録がめんどいけどそれも自動化した。