定期的にVMを実行してバックアップ

Immichの画像をAmazonフォトに保存するならVM上のWindowsで公式ツールを実行したほうがよいです。
ただ、ここまでやるならWindows上のWSL2で実行したほうがよい気もしますが。

VMでWindows11をセットアップ

仮想PCはデフォルト設定で。まずISOをコピーしたりします。

sudo mv ~/iso/Win11_25H2_Japanese_x64.iso /var/lib/libvirt/images
sudo mv ~/iso/virtio-win-0.1.285.iso /var/lib/libvirt/images

プールで指定するとエラーになりやすいのでパスで指定。

/var/lib/libvirt/images/

スナップショットなどありますが、初期状態は物理的にコピーしておくと便利。

sudo cp /var/lib/libvirt/images/win11.qcow2 /var/lib/libvirt/images/win11.qcow2-bk

リモートデスクトップ関連の設定

作成した仮想マシンはリモートデスクトップでアクセスしたほうが便利。ただ、Windowsは空のパスワードでのリモート接続は禁止。

空のパスワードを許可する場合

もし空のパスワードを許可するなら。
ポリシーでやる方法。「ファイル名を指定して実行」で下記によりセキュリティポリシーを表示。

secpol.msc

「ローカルポリシー」-「セキュリティオプション」-「アカウント:ローカルアカウントの〜」を「無効」に。

レジストリでやるなら下記。コマンドプロンプトを管理者で実行して入力。

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f

パスワードを設定した場合の自動ログイン

セキュリティを考慮するとパスワードを設定したほうがよいが、その場合、ローカルのログインにもパスワードが必要で面倒。ログインを自動化するなら、コマンドプロンプトを管理者で実行して入力。

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v DevicePasswordLessBuildVersion /t REG_DWORD /d 0 /f

次に、設定画面で設定。

control userpasswords2

Sambaで共有してネットワークドライブとしてマウント

ホスト側のファイルは共有機能を利用してもよいのですが、ゲストがWindowsの場合はSambaを利用したほうが楽。
「//host名/Docker」などでマウントし、あとはAmazonフォトなど公式クライアントで参照。

指定した時間にVMを起動

バックアップ用途で利用するなら

まずVMの正確な名前を確認します。

virsh list --all

名前が確認できたらスケジュール設定に進みます。

crontab -e

以下を追加してください。

# Immich Amazonフォトバックアップ用VM スケジュール
# 毎日深夜2時に起動
0 2 * * * virsh start win11

# 毎日深夜5時にシャットダウン(3時間で同期完了を想定)
0 5 * * * virsh shutdown win11

# 毎日深夜1時にrcloneバックアップ(VM起動前に完了させる)
0 1 * * * /opt/docker/immich/backup-to-cloud.sh

VMより先にrcloneを走らせることで、OneDrive・Googleドライブのバックアップが完了してからAmazonフォトの同期が始まる流れになります。テスト目的であれば手動で確認する方が確実です。

手動起動

virsh start win11

状態確認

virsh list --all

Win11が起動してAmazonフォトクライアントが自動的に同期を開始するか確認してから手動シャットダウン。

virsh shutdown win11

cronのテストをしたい場合は次のような例で。
たとえば13時起動、13時30分シャットダウンなら次のように記述します。

0 13 * * * virsh start win11
30 13 * * * virsh shutdown win11

ただ、起動しているだけだと自動スキャンしてくれないので、何か考える必要がありそうですが。