バックアップの作成方法
参考
作成方法概要
- 基本的に、上記参考サイトのやり方でやります。
- WSLのrootディレクトリ以下をごっそり圧縮して保管する方法です。
- /mnt/c等については圧縮対象から除外します。
- 保管場所は、/mnt/c内にして、それをgoogle driveに保存します。
- 1日1回実行して、最新5日分のバックアップファイルを保存します。
圧縮対象の除外
- 下記ファイルを作成して、圧縮時に指定します。
- 今回は、
/wsl_backup内に、exclude_list.txtとして作成します。 - このファイルを
tarコマンドの-Xオプションで指定することで、圧縮対象から除外できます。
/backup_wsl/exclude_list.txt
/mnt /dev /proc /tmp /sys /run /var/log
圧縮
下記のような形で圧縮します。
$ tar -cvpjf /mnt/c/backup/wsl/20191205/backup.tar.bz2 -X /backup_wsl/exclude_list.txt /
バックアップファイルの自動作成(shell)
- 今日の日付のディレクトリにバックアップファイルを作成
- 直近5日以外のディレクトリを削除
/backup_wsl内に、backup_wsl.shとして作成
#!/bin/bash
today=$(date +%Y%m%d)
target_dir=/mnt/c/backup/wsl
tmp_dir=backup_wsl_tmp
origin_dir=/
target_today_dir=$target_dir/$today
target_today_tarfile=$target_today_dir/backup.tar.bz2
exclude_list=exclude_list.txt
save_files_number=5
echo '[Create WSL backup files]'
echo 'creating backup file...'
echo '--------------------------'
mkdir -p $target_today_dir
tar -cvpjf $target_today_tarfile -X $exclude_list $origin_dir
echo '--------------------------'
echo 'creating backup directories...'
rm -rf $tmp_dir
mkdir -p $tmp_dir
dir_str="${target_dir}/*/"
count=1
for dirname in $(ls -td $dir_str); do
mv $dirname $tmp_dir
count=$((++count))
if [ $count -gt $save_files_number ]; then
break
fi
done
rm -rf $target_dir
mv $tmp_dir $target_dir
echo '[SUCCESS] Created backup files!!'
CRONで自動化(毎日実行)
参考
やったこと
- 上記参考サイトのように、PC起動時にUbuntuを起動し、Ubunutu起動時にcronを起動するようにしました。
- 毎日18時に
backup_wsl.shを実行するようにしました。
#!/bin/sh 0 18 * * * root bash /backup_wsl/backup_wsl.sh > /dev/null 2>&1
Google Driveに自動で同期
- 下記公式ツール『バックアップと同期』を使ったらできました。
- Google ドライブをダウンロード
