今回はrsyncの使い方についてです。
ちなみに僕は今回のこの検証はBash on ubuntu on windowsでやっているので、Bash on ubuntu on windows使ってる人でも問題なく使えます。
[xserver]でやろうと思ってたのですが、後述のバグのせいでできなかったので、最近契約して全然弄ってない[conoha]でやってみたいと思います。
Contents
- 1 rsyncの使い方
- 2 conohaのVPSにrsyncする
- 3 xserverにrsyncする
- 4 エラー1:Permission denied (publickey,gssapi-keyex,gssapi-with-mic). rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]
- 5 エラー2:protocol version mismatch — is your shell clean?
rsyncの使い方
リモートのsrc配下をローカルのdstに同期
$ rsync -av -e ssh [user]@[host]:./src/ dst
ローカルのsrc配下をリモートdstに同期
$ rsync -av -e ssh ./src/ [user]@[host]:dst
conohaのVPSにrsyncする
こんな感じでできます。
rsync -av -e "ssh" -r "/mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/" root@YOUIPADDR:/root/lib/contacam
ちなみにこの例では、contacamで撮影された動画を自動でサーバーにアップロードする、という想定です。
侵入者がパソコンを壊したとか、火事でパソコンも燃えちゃったとかでも、あとで動画が確認できるわけです。安心。
:~/lib# ls contacam/2018/01/31/確認済み/
det_2018_01_31_08_23_53.gif det_2018_01_31_08_24_12.gif det_2018_01_31_08_26_38.gif det_2018_01_31_08_28_57.gif rec_2018_01_31_16_17_52.mp4
det_2018_01_31_08_23_53.mp4 det_2018_01_31_08_24_12.mp4 det_2018_01_31_08_26_38.mp4 det_2018_01_31_08_28_57.mp4
はい、ちゃんとフォルダもファイルもバックアップされていますね。
xserverにrsyncする
rsync -av -e "ssh -p 10022 -i ~/.ssh/yuis.key" -r "/mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/01/31" yuis@sv2031.xserver.jp:/home/yuis/yuis.xsrv.jp/public_html/contacam/
成功していないのでできないかもしれません。たぶできます。.bashrcがごちゃごちゃしていなければ。
エラー1:Permission denied (publickey,gssapi-keyex,gssapi-with-mic). rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]
Permission denied (publickey,gssapi-keyex,gssapi-with-mic). rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]
このエラーの原因は、SSH接続の設定がちゃんとできていないことにあるようです。
例えば、ポートが22ではなく10022なのに、それを設定していなかったり、秘密鍵ファイルが必要なのに設定していなかったり。
僕は[xserver]を使っているので、xserverを例にして説明すると、xserverはポート10022で、公開鍵暗号方式です。
なので、rsyncのコマンドはこんな感じになります。
rsync -av -e "ssh -p 10022 -i ~/.ssh/yuis.key" -r "/mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/01/31" yuis@sv2031.xserver.jp:/home/yuis/yuis.xsrv.jp/public_html/contacam/
これだと前述のエラーがでます。
rsync -av -e "ssh" -r "/mnt/c/ContaCam/Logicool HD Pro Webcam C920/2018/01/31" yuis@sv2031.xserver.jp:/home/yuis/yuis.xsrv.jp/public_html/contacam/
エラー2:protocol version mismatch — is your shell clean?
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(180) [sender=3.0.7]
このエラーの原因は、.bashrc
です。
(根本的な解決策は)ないです。
解決策としては、以下を参考にして、どうぞ。
rsyncは.bashrcファイルを持つリモートサーバでは動作しません。
ローカルクライアントでは、rsyncを実行すると次のようになります。
protocol version mismatch — is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(180) [sender=3.0.7].bashrc出力テキストのコマンドを削除するか、出力を/ dev / nullにパイプすることで、これを修正できます。
読んでわかるように、.bashrcを削除するか、無駄なコードを削除してみるか、/dev/nullにパイプ(よくわからない)すればいいらしいです。
僕はこれが全部やりたくなかったので、仕方なくconohaを使いました。