後輩が、ウェブサイトコーディング中に、トラブルがあってバックアップしたファイルで巻き戻したとき、別のコードが消えているという2次被害を何度か起こしていた。気づいたことを本人に聞いたところ、「想定したよりバックアップの機会が少なかったから、起きた気がする。」とあった。そのため、バックアップ自体を簡単にしてみることにした。圧縮には7zip を使うので、事前にインストールすること。
参照
cmdのbatを使ってフォルダをCOPYして7zipで圧縮し最後に削除する方法 これくらいブログ
http://korekurai.com/itrelated/cmd-bat-7zip-folder.html
注意
手元の環境で実装するなら、まず空のフォルダで試すこと。安全に失敗するのが推奨される。
構造
バックアップ元
1 2 |
C:\xampp\htdocs\ └myfolder //バックアップ元のフォルダ |
バックアップ先
1 2 3 |
C:\temporary_backup\" ├myfolder{年月日}.7z //7zip で圧縮されたバックアップファイル └backup_myfolder.bat //バックアップ用のバッチファイル |
backup_myfolder.bat
1 2 3 4 5 6 7 8 9 10 11 12 13 |
@ECHO OFF SET DATENAME=%DATE:/=%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2% SET SOURCEPATH="C:\xampp\htdocs\" SET TARGETZIP=%DATENAME%.7z SET TARGETPATH="C:\temporary_backup\" SET TARGETDIR="myfolder" xcopy /S /Y /I "%SOURCEPATH%%TARGETDIR%" %TARGETPATH%%TARGETDIR% "C:\Program Files\7-Zip\7z.exe" a %TARGETPATH%%TARGETDIR%%TARGETZIP% %TARGETPATH%%TARGETDIR% rmdir /S /Q %TARGETPATH%%TARGETDIR% REM myfolder をバックアップしました TIMEOUT /T 3 |
内訳
- DATENAME に年月日と時間の値を設定
- SOURCEPATH にバックアップ元のパスを設定
- TARGETZIP で圧縮ファイル名に年月日と時間を加える
- TARGETPATH にバックアップ先のパスを設定
- TARGETDIR にバックアップするフォルダ名を設定
- XCOPY でフォルダをコピー
- 7ZIP でコピーしたフォルダを圧縮
- rmdir で圧縮元フォルダを削除
- 最後に、バックアップの動作が行われたかを3秒だけ表示する
まとめ
動作テストして、問題がなければ対象フォルダの中身を入れよう。
作成したバッチファイルをランチャーに入れれば、任意のタイミングでバックアップできる。Windows のタスクに設定すれば、起動時や休憩時間にバックアップを自動でバックアップできるようになる。
コーディングが終われば、バッチファイルを解除しよう。