🗃️

robocopy を使って NAS に日次バックアップするメモ

2024/05/09に公開

自分用メモ。

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)

これをタスクスケジューラで定期実行すればよい。

タスクスケジューラの設定は以下の記事を参考にした。
https://atmarkit.itmedia.co.jp/ait/articles/1305/31/news049.html

Discussion