edo1z blog

プログラミングなどに関するブログです

Windows10 - WSLのバックアップファイルを毎日自動でGoogle Driveに保存する

バックアップの作成方法

参考

作成方法概要

  • 基本的に、上記参考サイトのやり方でやります。
  • 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!!'

github.com

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に自動で同期

設定画面

Image from Gyazo