Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2007-12-27

[Ruby]scpを使ったファイルの自動バックアップ

scpとcronでファイルを外部のサーバーへコピーしたかったのだけど、そういう場合はexpectとptyというのを使うといいらしい。

短いスクリプトなので貼っておく。

require 'pty'
require 'expect'

file1 = 'filename'
file2 = 'user@example.com:backup/'
passwd = 'pass'
cmd = "scp #{file1} #{file2}"
timeout = 30

puts "cmd: #{cmd}"
PTY.spawn(cmd) do |r, w|
  r.expect(/password:/, timeout) { w.puts passwd }
  puts r.read
end

サーバー側から~/backup/にファイルを引っ張ってくる場合は、次のような感じ。

file1 = 'user@example.com:filename'
file2 = '~/backup/'