PR

突如発生したrsyncのエラー調査

1. はじめに

rsyncを使ってリモートサーバーからバックアップデータを取得していたのだが何が原因なのか、今まで普通に動いていたのが動かなくなっていたので調査。結果の覚書。

2. 確認を行ったコマンドと結果

実行を行ったコマンドは以下の通り。

rsync -auz -e \"ssh -i ~/aaa.pem\" user@host:remotedir/remotefile localdir

結果は以下の通り。

Unexpected remote arg: user@host:remotedir/remotefile
rsync error: syntax or usage error (code 1) at main.c(1201) [sender=3.0.6]

下記のコマンドだとssh接続できるので鍵やサーバーに問題はなさそう。

ssh -i ~/aaa.pem user@host

3. 更なる検証

ssh の部分をシングルクォーテーションで囲むとどうなるか検証。

rsync -auz -e 'ssh -i ~/aaa.pem' user@host:remotedir/remotefile localdir

以下のエラーが発生。

Connection to host closed by remote host.
rsync: connection unexpectedly closed (0 bytes received so far) [receiver]
rsync error: unexplained error (code 255) at io.c(600) [receiver=3.0.6]

シングルクォーテーションだとダメっぽい?

いろいろと試した結果、rsyncのバージョンを[Receiver=3.1.3] だとシングルクォーテーションで取得できました。
バージョン違いによる問題?もしくはOSが古すぎたことが原因か?

4. SSH のバージョンを上げずに解決する方法

IPQoSの設定を追加することで解決。

rsync -auz -e \"ssh -o IPQoS=0 -i ~/aaa.pem\" user@host:remotedir/remotefile localdir

ネットの環境が変わったことで発生したエラーだったようです。

5. まとめ

今まで普通に動いていたrsyncが動かなくなったので調査した結果の覚書。
何もしていないのに突然動かなくなるわけはなく、ネット環境の変化が原因だったようです。

今回の記事も、Github Copilot が7割くらい書いてくれました。

A. 参考サイト

IPoEなどの回線で、sshでログインはできるのにrsyncが通らない場合の対処。
IPQoSの設定を変えたらDS-Lite接続でもSSHができるようになった

B. 参考書籍

コメント