SSHトンネル&rsyncでWindowsとLinux間を安全に同期する方法

はじめに

Windows PCのフォルダーを定期的にLinuxサーバーへバックアップしたいとき、セキュリティと効率性の両立が課題になります。
単純なファイルコピーでは時間がかかりますし、公開鍵認証を使わないSSH接続はセキュリティ上リスクが残ります。

そこで今回は、SSHトンネルを利用して安全な通信経路を確保し、rsyncで効率的に差分同期する方法を解説します。


rsyncとは?

rsyncはファイルの差分だけを転送する高効率な同期ツールです。

特徴:

  • 差分転送で効率的(更新分のみ送信)
  • SSHと組み合わせて暗号化通信が可能
  • バックアップ用途に最適

Linuxには標準搭載されていることが多く、Windowsからも利用できます。


Windowsで必要な準備

WindowsからLinuxへrsyncするためには、以下の環境を整えます。

1. Git for Windows または cwRsync の導入

  • Git for Windows をインストールすると rsyncssh が利用可能になります。
    例: C:\Program Files\Git\usr\bin\rsync.exe

2. SSH公開鍵認証を設定

Linuxサーバーに安全に接続するため、パスワードではなく公開鍵認証を使います。

  1. Windowsで鍵ペアを作成 ssh-keygen -t ed25519 -C "backup@windows"C:\Users\ユーザー名\.ssh\id_ed25519.pub が生成される
  2. 公開鍵をLinuxへ登録
    Linux側の ~/.ssh/authorized_keys に公開鍵を追記します。
  3. パーミッションを調整 chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh

SSHトンネルを使った接続

SSHトンネルを経由することで、通信を安全にカプセル化できます。
例えば、WindowsからLinuxサーバーに直接接続できない場合に有効です。

例:Windows → (踏み台サーバー) → Linuxターゲットサーバー

ssh -L 2222:target-linux:22 user@bastion-server

上記でローカルポート 2222 にLinuxサーバーのSSHを転送できます。

その後、rsyncは以下のように実行します

rsync -avz -e "ssh -p 2222" /c/Users/USER/Documents/ backupuser@localhost:/home/backupuser/windows_backup/

WindowsからLinuxへの同期コマンド例

基本的なrsyncコマンド

rsync -avz -e "ssh" /c/Users/USER/Documents/ backupuser@linux-server:/home/backupuser/windows_backup/
  • -a : アーカイブモード(パーミッション・シンボリックリンク保持)
  • -v : 詳細表示
  • -z : 圧縮転送

除外指定を入れる例

rsync -avz --exclude="*.tmp" --exclude="node_modules/" /c/Users/USER/Projects/ backupuser@linux-server:/srv/backup/projects/

定期的な自動実行(Windowsタスクスケジューラ)

バックアップを自動化するには、Windowsのタスクスケジューラを使います。

  1. 「タスクスケジューラ」を開く
  2. 新しいタスクを作成
  3. トリガー:毎日/毎時など設定
  4. 操作:プログラムに以下を指定 "C:\Program Files\Git\usr\bin\bash.exe" 引数: -c "rsync -avz -e 'ssh' /c/Users/USER/Documents/ backupuser@linux-server:/home/backupuser/windows_backup/"

これで定期バックアップが自動実行されます。


セキュリティ強化のポイント

  • SSHポートをデフォルトの22から変更
  • Fail2Banで不正アクセス対策
  • Linuxサーバー側のrsync専用ユーザーを作成し、必要最小限の権限に制御

まとめ

  • rsyncで効率的に差分バックアップ可能
  • SSH公開鍵認証+トンネルでセキュリティを強化
  • Windowsタスクスケジューラで自動化すれば手間いらず

業務用PCや自宅のWindowsからLinuxサーバーに安全にバックアップを取りたい場合、この方法は非常に実用的です。

タイトルとURLをコピーしました