Windows Subsystem for Linux (WSL) の環境のバックアップ・リストア方法です。
Windows領域にバックアップをとります。バックアップ先のファイルシステムは NTFS であることが必要です。
バックアップはフルバックアップをとりますが、変更が無いファイルはハードリンクで保持するので、実質、差分バックアップ相当のディスク使用量で済みます。
ただし、バックアップ元とバックアップ先が異なるドライブの場合、初回のフルバックアップでは、バックアップ元と同じサイズのディスクを使用します。
なお、以下 /mnt/X となっている個所は、バックアップ先ドライブに合わせて /mnt/c や /mnt/d に置き換えて下さい。
バックアップ
初回バックアップ
バックアップ先ディレクトリを用意します。
WSL でパス /mnt/X/~ のように Windows領域へアクセスして、バックアップを保存します。
Linuxのパーミッション情報なども保持するため、下の記事の設定を行っておいて下さい。
WSL で Windowsのディスク領域を Linuxディスク領域のように使う: パソコン鳥のブログ
バックアップ先ディレクトリを作成します。
sudo mkdir /mnt/X/wsl/backup
バックアップから除外するディレクトリを、exclude_list.txtファイルに記載しておきます。
後でこのファイルを使います。
/mnt/X/wsl/backup/exclude_list.txt
/mnt /dev /proc /tmp /sys /run
準備ができたので、初回のフルバックアップを行います。
/mnt/X/wsl/backup/backup0 にバックアップします。
・バックアップ元とバックアップ先が同一ドライブの場合
sudo rsync -a --exclude-from=/mnt/X/wsl/backup/exclude_list.txt --link-dest=/ / /mnt/X/wsl/backup/backup0
・バックアップ元とバックアップ先が異なるドライブの場合
sudo rsync -a --exclude-from=/mnt/X/wsl/backup/exclude_list.txt / /mnt/X/wsl/backup/backup0
2回目以降のバックアップ
バックアップ先は、日付-時間 をディレクトリ名に含めています。
sudo rsync -a --delete --exclude-from=/mnt/X/wsl/backup/exclude_list.txt --link-dest=/mnt/X/wsl/backup/backup0 / "/mnt/X/wsl/backup/backup-$(date +%Y%m%d-%H%M%S)"
リストア
・初回バックアップに戻す場合
sudo rsync -a --delete --exclude-from=/mnt/X/wsl/backup/exclude_list.txt /mnt/X/wsl/backup/backup0/ /
・2回目以降のバックアップから戻す場合
バックアップ元ディレクトリの日付・時間は、実際のバックアップディレクトリ名で置き換えて下さい。
sudo rsync -a --delete --exclude-from=/mnt/X/wsl/backup/exclude_list.txt /mnt/X/wsl/backup/backup-20190727-084904/ /
参考
rsyncのlink-destオプションは便利そうだ | OpenGroove
rsyncで差分バックアップを行うための「–link-dest」オプション – ITmedia エンタープライズ
rsyncだけで実現する!ファイルのバックアップ手法6選 【コマンド例編】 – Hacker’s High
コメント