PowerShell wsl環境でのrsync同期
はじめに
Linux環境の便利なファイル同期ツール「rsync」は、Windows Subsystem for Linux(WSL)を使うことでWindowsからも活用できます。本記事では、WSLを使ってリモートマシン(Raspberry Pi)へ効率的にファイルを同期する方法を紹介します。rsyncを活用することで、手動でファイルをコピーする手間を省き、変更があったファイルのみを転送できるため、作業の効率が大幅に向上します。
rsyncの基本コマンド
rsync
は、ファイルのコピー・同期を高速かつ柔軟に行えるツールです。例えば、以下のコマンドを実行すると、カレントディレクトリのファイルを Raspberry Pi に転送できます。
rsync -auvz --exclude-from=exclude.txt \
./ tansan@raspberrypi.local:~/project_folder/
コマンドオプションの説明
オプション | 説明 |
---|---|
-a |
アーカイブモード(パーミッションやタイムスタンプを保持) |
-u |
送信先のファイルが新しい場合は上書きしない |
-v |
詳細な出力を表示(進行状況を確認) |
-z |
転送データを圧縮(通信を効率化) |
--exclude-from=exclude.txt |
指定したファイルリスト内のファイル・フォルダを除外 |
また、ファイルの転送にはSSHを利用するため、暗号化された安全な通信を確保しながら作業を行うことが可能です。
応用テクニック
1. 削除も含めた同期
送信元にないファイルを削除したい場合は --delete
オプションを追加します。
rsync -auvz --delete --exclude-from=exclude.txt \
./ tansan@raspberrypi.local:~/project_folder/
このオプションを使用すると、転送先のディレクトリに残った不要なファイルを削除することができ、クリーンな状態を維持できます。ただし、誤って必要なファイルを削除しないよう注意が必要です。
2. プログレスバーを表示
転送状況をより詳しく確認したい場合、--progress
を追加します。
rsync -auvz --progress --exclude-from=exclude.txt \
./ tansan@raspberrypi.local:~/project_folder/
これにより、ファイルの転送進捗や転送速度をリアルタイムで確認することができ、大量のデータを転送する際に便利です。
3. SSHポートを指定
SSHのデフォルトポート(22)ではない場合、-e
オプションで指定可能です。
rsync -auvz -e "ssh -p 2222" --exclude-from=exclude.txt \
./ tansan@raspberrypi.local:~/project_folder/
SSHのポート番号が変更されている環境では、上記のようにポート番号を明示的に指定することで通信を確立できます。特に、セキュリティ強化のために標準ポート以外を使用している場合に有効です。
4. 同期後に自動通知
転送が完了したら、通知を送るように設定することも可能です。例えば、Linuxの notify-send
コマンドを使えば、rsync完了後にデスクトップ通知を表示できます。
rsync -auvz --progress --exclude-from=exclude.txt ./ \
tansan@raspberrypi.local:~/project_folder/ && notify-send "rsync 完了!"
また、Slackやメール通知を組み合わせることで、リモートサーバーとのファイル同期状況をリアルタイムで監視できます。
まとめ
WSL上で rsync
を使えば、WindowsからLinux環境(Raspberry Piなど)へのファイル転送がスムーズに行えます。用途に応じてオプションを調整し、効率的なファイル同期を実現しましょう!
特に、rsync
はデータの変更を最小限の転送で反映できるため、ネットワークの帯域を節約しながら効率よく作業を進めることができます。日々のバックアップやプロジェクトファイルの管理に役立つため、ぜひ活用してみてください。
Discussion