回答:
別のオプションとして、rsyncを実行するホストで、ssh構成ファイルにポートを設定します。
cat ~/.ssh/config
Host host
Port 2222
次に、sshを介したrsyncがポート2222と通信します。
rsync -rvz --progress --remove-sent-files ./dir user@host:/path
rsync
奇妙なポートに何度もアクセスする必要があるが、そのたびに構文を忘れてしまうほど十分に広がっている人にとっては、私がそれをこれまでで最高のものと呼ぶほどひどいとは思わないでしょう。
コマンドラインは次のようになります。
rsync -rvz -e 'ssh -p 2222' --progress ./dir user@host:/path
これは正常に機能します。新しいファイアウォールルールを必要とせずに常に使用しています。SSHコマンド自体が引用符で囲まれていることに注意してください。
user@host:/path
特定のSSHポートを介してファイルを送信する必要がある場合:
rsync -azP -e "ssh -p PORT_NUMBER" source destination
例
rsync -azP -e "ssh -p 2121" /path/to/files/source user@remoteip:/path/to/files/destination
「rshオプション」を使用します。例えば:
rsync -avz --rsh='ssh -p3382' root@remote_server_name:/opt/backups
参照:http : //www.linuxquestions.org/questions/linux-software-2/rsync-ssh-on-different-port-448112/
少し話題外ですが、誰かを助けるかもしれません。パスワードとポートを渡す必要がある場合は、sshpass
パッケージの使用をお勧めします。コマンドラインコマンドは次のようになります。
sshpass -p "password" rsync -avzh -e 'ssh -p PORT312' root@192.xx.xxx.xxx:/dir_on_host/
私はこの解決策をMike Hike Hostetlerのサイトで見つけました。
# rsync -avz -e "ssh -p $portNumber" user@remoteip:/path/to/files/ /local/path/
正しい構文は、RsyncにカスタムSSHコマンド(-p 2222を追加)を使用するように指示することです。これにより、SSHを使用してリモート側へのセキュアなトンネルが作成され、localhost:873を介して接続されます。
rsync -rvz --progress --remove-sent-files -e "ssh -p 2222" ./dir user @ host / path
RsyncはTCPポート873でデーモンとして実行されますが、これは安全ではありません。
Rsync manから:
プッシュ:rsync [オプション...] SRC ... [ユーザー@]ホスト:デスト
これは人々にこれを試すように誤解させます:
rsync -rvz --progress --remove-sent-files ./dir user @ host:2222 / path
ただし、それはそこにないポート2222でRsyncデーモンに接続するように指示しています。