ファイル転送¶
win-sshpass は複数のファイル転送方法を提供します:直接 SFTP、SCP スタイル、Rsync スタイル、インタラクティブシェルでの rz/sz。
直接 SFTP 転送¶
ファイルのアップロード¶
# 単一ファイルのアップロード
win-sshpass -h host -p 'pass' -local ./file.txt -remote /tmp/file.txt
# 複数ファイルのアップロード(カンマ区切り)
win-sshpass -h host -p 'pass' -local "a.txt,b.txt,c.txt" -remote /tmp/
# 複数ファイルのアップロード(スペース区切り、シンプルなパスのみ)
win-sshpass -h host -p 'pass' -local "a.txt b.txt c.txt" -remote /tmp/
# ディレクトリのアップロード(自動再帰)
win-sshpass -h host -p 'pass' -local ./dist -remote /var/www/html
ファイルのダウンロード¶
# ファイルのダウンロード
win-sshpass -h host -p 'pass' -d -remote /tmp/file.txt -local ./file.txt
# ディレクトリのダウンロード
win-sshpass -h host -p 'pass' -d -remote /var/log/nginx -local ./logs
プログレスバー¶
SFTP 転送時には自動的にプログレスバーが表示されます:
SCP スタイル転送¶
標準の scp コマンド構文と互換性があります:
# ファイルのアップロード
win-sshpass -p 'pass' scp ./file.txt user@host:/tmp/
# ディレクトリのアップロード(-r で再帰)
win-sshpass -p 'pass' scp -r ./dist user@host:/var/www/html
# ポートの指定(-P、大文字に注意)
win-sshpass -p 'pass' scp -P 2222 ./file.txt user@host:/tmp/
# ファイルのダウンロード
win-sshpass -p 'pass' scp user@host:/tmp/file.txt ./
# ディレクトリのダウンロード
win-sshpass -p 'pass' scp -r user@host:/var/log/nginx ./logs
Rsync スタイル転送¶
rsync コマンド構文と互換性があります:
# アップロード
win-sshpass -p 'pass' rsync -avz ./ user@host:/backup/
# ダウンロード
win-sshpass -p 'pass' rsync -avz user@host:/data/ ./local-data/
# ポートの指定
win-sshpass -p 'pass' rsync --port=2222 -avz ./ user@host:/backup/
シェル内 rz/sz 転送¶
インタラクティブシェルでは、rz と sz コマンドでファイル転送が可能です — リモートサーバーにソフトウェアをインストールする必要はありません。
# まずインタラクティブシェルを開く
win-sshpass -p 'pass' ssh user@host
# リモートシェルで:
rz # ファイルをアップロード(ファイルピッカーを開く)
rz /local/path/to/file # 特定のローカルファイルをアップロード
sz /remote/path/to/file # ファイルをダウンロード(保存ダイアログを開く)
sz /remote/path/to/file /local # 特定のローカルパスにダウンロード
仕組み¶
リモートシェルが rz/sz: command not found を報告すると、win-sshpass はエラーを傍受し、代わりに SFTP で転送を実行します。ファイルとディレクトリの両方をサポートし、プログレスバーが表示されます。
リモートへのインストール不要
rz/sz 転送は SFTP を使用して実装されているため、リモートサーバーに lrzsz パッケージをインストールする必要はありません。
Git Bash パスの注意¶
Git Bash 使用時、/ で始まるリモートパスは自動的に Windows パスに変換されます。// プレフィックスを使用して回避:
# 間違い:/tmp は Windows パスに変換されます
win-sshpass ... -remote /tmp/file.txt
# 正しい:二重スラッシュを使用
win-sshpass ... -remote //tmp/file.txt
次のステップ¶
- SCP と Rsync - SCP/Rsync の詳細な使用方法
- インタラクティブシェル - シェルモードの全機能