🗃️
robocopy を使って NAS に日次バックアップするメモ
自分用メモ。
NAS に毎日バックアップしたい。NAS 付属のバックアップソフトは挙動がいろいろとバグっていて信頼できなかったので単純なツールを組み合わせてバックアップすることにした。
バックアップスクリプトは Ruby で書いた(慣れてるので)。バックアップ対象のディレクトリごとに robocopy を呼び出すだけの単純なスクリプトになってる。
backup.rb
def robocopy(src, dest, log_file)
system("robocopy", src, dest, "/MIR", "/Z", "/R:6", "/W:11", "/NP", "/XA:S", "/SL", "/XJ", "/IT", "/LOG+:" + log_file)
# 0~7 は正常とみなしてよい
if $?.exitstatus >= 8 then
$stderr.puts "robocopy failed: #{$?.inspect}"
exit 1
end
end
def backup(ident, src, dest, start_at)
log_file = "C:/Users/work/log/robocopy_#{start_at.strftime("%Y%m%d_%H%M%S")}_#{ident}.log"
robocopy(src, dest, log_file)
end
start_at = Time.now.utc
backup('pictures', 'C:\Users\work\Pictures', '\\\\192.168.1.5\Backup\Drive#C\Users\work\Pictures', start_at)
backup('3d', 'C:\Users\work\3D Objects', '\\\\192.168.1.5\Backup\Drive#C\Users\work\Documents', start_at)
backup('documents', 'C:\Users\work\Documents', '\\\\192.168.1.5\Backup\Drive#C\Users\work\Documents', start_at)
これをタスクスケジューラで定期実行すればよい。
タスクスケジューラの設定は以下の記事を参考にした。
Discussion