背景
動物の写真を撮ることを趣味にしている.撮った写真はすべてHDDに保存しているが,
読み書きが止まったりと,最近HDDの調子が悪い気がするので,別ドライブでバックアップを取ることにした.
「毎回コピーして貼り付ければいいやん」と言われそうだが,
削除等の編集をしたフォルダもバックアップ上では反映されて欲しいと思うし,
1の成果のために10の苦労をするのがエンジニアだと思うので実際にやってみる
使用するツール
環境
OS : Microsoft Windows 10 Pro
1. robocopyコマンド
robocopy [コピー元パス] [コピー先パス] /MIR /COPYALL /LOG+:[ログファイルのパス]
linuxのcp
コマンド同様ファイルおよび子フォルダのコピーが可能なのに加えて,
差分コピーが可能なwin10のコマンド.
使ったオプション
オプション | 意味 | 備考 |
---|---|---|
/COPYALL | ファイル情報をすべてコピーする | |
/MIR | 完全ミラーリング | コピー元になく,コピー先にあるファイルは削除される |
/LOG+:[ログファイルのパス] | 追記する形でログを出力する |
実行すると以下のようなログが出力される
-------------------------------------------------------------------------------
ROBOCOPY :: Windows の堅牢性の高いファイル コピー
-------------------------------------------------------------------------------
開始: 2023年12月4日 23:38:53
コピー元 : C:\Users\photo\
コピー先 : F:\testbackup\
ファイル: *.*
オプション: *.* /S /E /COPYALL /PURGE /MIR /R:1000000 /W:30
------------------------------------------------------------------------------
5 C:\Users\photo\
新しいファイル 238576 image-1.png
54%
100%
新しいファイル 272029 image-2.png
48%
96%
100%
新しいファイル 195033 image.png
67%
100%
新しいファイル 1221 log.txt
実行後コピー先フォルダをエクスプローラーで見ると,確かにコピーされている.
2. タスクスケジューラ
定期的にコマンドを実行するために利用するwin10の標準ツール
なんか難しそうだけど,タスクの作成と情報閲覧さえできれば問題ない(と思ってる).
adobe製品などの自動アップデートのタスクなどがここに入っていて,
PCの立ち上がりが遅いなぁと思ったらここを見るのも良いと思う.
タスクスケジューラを使うと,時間やログイン時などのトリガーに応じて
所定のタスク・プログラムを実行できる.
定期バックアップを取る
1. タスクスケジューラを開く
意外と分かりずらい位置にあるのでメモしておく.
タスクバーの検索で「タスク」で検索するか,
タスクバーのwindowsボタンを押して,アプリ一覧の「windows 管理ツール」の中を見るか,
のどちらかになると思う.
2. 基本タスクの作成
タスクスケジューラで定期的に動作させるタスクを作成する.
名前や説明は自分が分かりやすい名前で問題ない.
3. タスクトリガーの設定
バックアップを取るタイミング(トリガー)を設定する.
自分は週1回月曜日で設定している.
4. 操作:プログラムの開始
定期実行するタスク(プログラム)の自体の設定を行う.
robocopyのプログラム/スクリプトは以下のパスにある.
C:\Windows\System32\robocopy.exe
5. 要約の確認
必ず,操作欄にあるコピー元とコピー先のリンクを確認すること
(ミスったら元ファイルを白紙で更新することになる)
これで定期バックアップの設定が完了.