進捗無いマン,ズッ友作る





…うがっ
お久しぶりです.


●1年ぶり2度目の出場●
この記事はMice Advent Calendar 2018 24日目の記事です.
前回はたっぺー氏の「お酒を飲めばすぐに眠れるんじゃ」の記事でした.
相も変わらずとても人間らしい記事でしたね.人類の皆さん,是非参考にしましょう.


はい,皆様いかがお過ごしでしょうか.
自分はめっきり部室に行かなくなり,すっかり老害らしくなってしまいました.


ブログを書くのもほぼほぼ1年ぶりです.
今年はマウスやんなきゃ~あぁ~…と思ったり思わなかったりしているうちにシーズン終幕を迎えました.


今年変わったことといえば,研究室に配属されたことでしょうか.
自分はタスクを複数背負うと心に余裕がなくなり,何にも手がつかなくなってしまう性分なので,研究やお仕事をしながらマウスを続けている方々つよい…と思った一年でした.


進捗の無さ故,マウスに関する技術的なことは特に喋れません.
それでもいいよ!いいよ!という方は先へお進みください.




●ズッ友さえいればいい気がする●
今年一年,何も生み出せませんでした.これは良くない.
せめて…せめて今までの成果物は死守し,ズッ友として進捗無いマンの心の支えにしてやるとしましょう.

そんなズッ友作りに役立つアイテム「robocopy」を紹介します.




robocopyとは何ぞや●
ご存知の方もいるとは思いますが,robocopyフォルダの同期をお手軽に実現できるWindowsコマンドです.
研究進めてたけど,PC死亡によりデータ消失…という案件をちらほら耳にします.バックアップ大事です.


では,皆さんはどのような方法でバックアップを取っているでしょうか.
クラウドと同期させたり,NASと同期させたり…いろいろあると思います.


しかし,他の選択肢が欲しい場合もあるのではないでしょうか.
例えば大学外部の方と共同研究をしていれば,データをGoogleDriveやOneDriveなどに置いておくのは何となく憚られます(機密的に).
また,研究室で共用のNASがあるけど,共用のものでいろいろ弄るのも憚られる…てなことも.


自分はまさに↑な状態だったので,とりあえずUSBメモリにコピーを置いておくことにしました.



●ズッ友つくる●
でも,追加したファイルや更新したファイルをいちいち選択してコピーするのは面倒です.
ズッ友とはいえ,簡単に作れた方がよい.


そこでrobocopyです.
細かい説明はあとで,サンプルを載っけます.

@echo off
echo ///////////////////////////////////////////////!!CAUTION!!////////////////////////////////////////////////
echo //                                                                                                      //
echo //USBメモリがEドライブとして認識されていること,USBメモリ以外が接続されていないことを必ず確認してください//
echo //                                                                                                      //
echo ///////////////////////////////////////////////!!CAUTION!!////////////////////////////////////////////////

rem 文字を格納する変数の初期化
set INPUT_STR=
rem 入力要求
set /P INPUT_STR="Eドライブとして接続されているデバイスへのバックアップを開始しますか?(y/n):"

rem 入力された文字の判断
if "%INPUT_STR%" == "y" (
goto succeeded
) else (
goto failed
)

rem yが入力された場合
 :succeeded
echo ○バックアップ中...
set src=C:\Users\Username\Desktop\test
set dst=E:\backup_test
set logfile=E:\robocopy_logfiles\%date:~0,4%_%date:~5,2%_%date:~8,2%.log
robocopy %src% %dst% /MIR /R:0 /LOG+:%logfile% /XD "$RECYCLE.BIN" "System Volume Information"

echo ////////////////////////////////////////////////////////////////////
echo ////////////////////バックアップを完了しました.////////////////////
echo ////////////////////////////////////////////////////////////////////
goto end

rem y以外が入力された場合
 :failed
echo ////////////////////////////////////////////////////////////////////
echo //////////////バックアップは実行されずに終了しました.//////////////
echo ////////////////////////////////////////////////////////////////////
goto end

 :end
PAUSE

…これだけで完了です(いろいろ無駄なことをしているのでもっと短縮できますが).
コピー元の状態をそのままコピー先に反映させることができ,2回目以降のバックアップでは更新されたファイルのみを選別して処理を行います.はやい
しばらく使ってますが,今のところ特に問題無さそうです.


少し説明すると,
・set src=...でコピー元のフォルダへのディレクト
・set dst=...でコピー先のフォルダへのディレクト
・set logfile=...でrobocopyの動作ログを保存するファイルへのディレクト
を指定しています.

上の例では,デスクトップに置いてある「test」というフォルダの内容をEドライブ(USBメモリ)の「backup_test」というフォルダにコピー,動作ログを「robocopy_logfiles」というフォルダに保存しています.


robocopy自体は(Windowsであれば)何もインストールしないでも使えるコマンドなので,お手軽です.
試してみたい場合は,
・↑のコードをメモ帳に貼り付けて自分用にディレクトリを指定,拡張子を.batにして保存
・動作ログを保存するフォルダをあらかじめ作成しておく(作っておかないとエラー吐きます)
・バックアップを取りたいときにバッチファイルを実行!
てな感じでできると思います.


ただし一点,注意が必要です.
↑の例では,ミラーリング機能(コピー元の状態をそのまま反映させる機能)を使っています.
コピー元で削除されたファイル・フォルダは,コピー先でも削除されます.
もしコピー元とコピー先のディレクトリを逆に指定してしまったら…

ズッ友どころか,友達という友達が消え去ってしまいます.

必ず適当なコピー元,コピー先フォルダを作ってテストした上で使用しましょう.
友達いなくなっても責任取りませんよっ


robocopyについては,いろいろオプションが決められるので調べてみて下さい.


Let's ズッ友です.



明日の記事は前前部長の「ちょっとした算数の話と今年の振り返りですっ☆」の記事です.ちゃんと締めくくってね


マウスやんなきゃ~あぁ~
メリクリぬ.


※参考記事
パソコンのファイルをrobocopyで手堅くバックアップする方法 | パソコンのバックアップ方法まとめ