2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

robocopyによる世代管理バックアップ

Last updated at Posted at 2022-09-14

はじめに

当初、簡単にシャドウコピーによるバックアップをやろうと思っていました。
が、対象ドライブに巨大ファイルがあり断念。。。
robocopyコマンドで特定フォルダのみバックアップするようにすることに
とりあえず、ベースは作成したので後は運用しながらチューニングしていくつもり
※しばらくしたら、バックアップフォルダは古い日時のデータ消すようにしないとな...

プログラム

定期実行はタスクスケジューラ等に登録すればいいかな...と

targetFolder.txt
C:\wakasama\Program
C:\wakasama\iso
backup.bat
powershell.exe -Command "exit (Get-Date).DayOfWeek"
if %errorlevel% == 4 (
  set FULLBACKUP=1
) else (
  set FULLBACKUP=0
)

REM バックアップ対象フォルダ読込
setlocal enabledelayedexpansion
for /f "usebackq tokens=*" %%A in (targetFolder.txt) do (
  REM バックアップ対象フォルダ出力
  REM echo %%A

  set MYFOLDER="%%~nA"
  
  REM バックアップフォルダ名出力
  REM echo !MYFOLDER!

  if %FULLBACKUP%== 1 (
    echo フルバックアップ実施!!
    REM 完全バックアップ
    REM robocopy %%A C:\wakasama\wakasama\work\backup\%DATE:/=%\!MYFOLDER! /MIR /UNILOG+:.\backup_%DATE:/=%.txt
    robocopy %%A C:\wakasama\wakasama\work\backup\%DATE:/=%\!MYFOLDER! /MIR /R:1 /W:1 /UNILOG+:.\backup_%DATE:/=%.txt
    REM アーカイブ属性リセット
    attrib -A %%A\* /S
  ) else (
    REM 差分バックアップ
    echo 差分バックアップ実施!!
    REM robocopy %%A C:\wakasama\wakasama\work\backup\%DATE:/=%\!MYFOLDER! /MIR /A /UNILOG+:.\backup_%DATE:/=%.txt
    robocopy %%A C:\wakasama\wakasama\work\backup\%DATE:/=%\!MYFOLDER! /256 /S /PURGE /A /R:1 /W:1 /UNILOG+:.\backup_%DATE:/=%.txt
  )
)
endlocal

PUSHD C:\wakasama\wakasama\work\backup
  REM 更新日時が新しい7つ(skip=7)以外のディレクトリ削除
  for /f "skip=7" %%A in ('dir /AD /O-D /B') do RD /S /Q %%A
POPD

robocopyオプション詳細

/XF ファイル:指定された名前/パス/ワイルドカードに一致するファイルを除外します。

/XF "~." "~$*.*" "Thumbs.db" "desktop.ini" "$RECYCLE.BIN" ".suo"
 ◆robocopyでドライブの内容を丸ごとコピーする方法
  https://qiita.com/nezumin/items/488b66479e878d12b669

警告
 "$"の前には"`"(バッククオート)を付与する必要があるみたい!!

/256:256 文字を超える非常に長いパスのサポートをオフにします。

 ◆ROBOCOPY でコピーしたファイルのファイル名が長すぎて削除できない
  https://pig-log.com/robocopy-delete-longpath/
 ◆robocopyとファイルパス長について
  https://social.technet.microsoft.com/Forums/ja-JP/f0db5e3b-1e52-40a6-99e1-a281a5d115d2/robocopy123921250112449124521252312497124733826312395123881235612?forum=windowsserver2008ja

警告
 robocopyは256文字を超えるファイルをバックアップするため、差分バックアップを取ろうとすると毎回取得する結果になってしまうため、オプションを指定してバックアップ取得しないようにしている。
 ※フォルダ自体は作成されてしまうため、どうしようか思案中...

参考サイト

◆robocopyとバッチファイルで世代管理バックアップをする方法
 https://blog.ver001.com/robocopy-generation-backup/
◆robocopyで世代管理しながら差分、増分バックアップをする方法
 https://blog.ver001.com/robocopy-differential-backup/
◆Robocopyの基本動作とコマンドオプション解説
 https://n-archives.net/software/robosync/articles/robocopy-specs-and-command/
◆コマンドプロンプトから曜日を取得する (with PowerShell)
 https://zenn.dev/rabitarochan/articles/e2f06d19ceb017
◆バッチファイルでファイルパスからファイル名や拡張子を自由に取り出す方法
 https://orangeclover.hatenablog.com/entry/20101004/1286120668
◆RoboSync関連記事
 https://n-archives.net/software/robosync/articles/

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?