Blog のバックアップデータを定期的にローカル HDD に scp で保存したいと思った。 こういうのは cron で行うのが普通だが Windows だと ***.bat ファイルを書いてタスクスケジューラに登録するというのが面倒くさい。 ということで Windows 10 上で駆動する Linux 環境である WSL を導入した。

インストール

WSL2(Windows Subsystem for Linux)導入手順の通りやったらできた。 作業途中で WslRegisterDistribution failed with error: 0x800701bc というエラーが表示されたので、こちらはググって Linux カーネルの更新プログラムをインストールして解決。 Linux ディストリビューションは記事と同様に私が慣れている Ubuntu 20.04 LTS を選択。

cron

起動時に cron が起動していないので WSL2 で cron を有効にして OpenSSH server を走らせるを参考に Windows 起動時にバッチファイルをキックして cron を起動するように設定。 sudo visudo で慣れない nano が起動して操作が分からなくて手間取ってしまった……。 今回は scp でデータバックアップを取得するという想定なので公開鍵認証を設定しておく。 このあたりは SSH公開鍵認証で接続するまでを参照した。

例えば d ドライブの backup ディレクトリにバックアップファイルをコピーする処理は以下となる:

scp (ホスト名):(バックアップディレクトリ)/* /mnt/d/backup

と思ったが最新のものが欲しいだけなので rsync でいいだろうと思った。 毎回 scp してしまうとオーバーヘッドがひどい。

rsync -avh (ホスト名):(バックアップディレクトリ) /mnt/d/backup/