rsyncがうまく動かない

サーバ間でファイルを同期する必要があり、rsyncを使うことにしました。サーバAからサーバBへファイルを定期的に送りつけます。サーバAは他サーバ間ですでにrsyncの動作実績があります。サーバBにrsyncをインストールして動かすとエラーになりました。

bash-2.05$ /usr/local/bin/rsync -auvz -e /usr/local/bin/ssh --delete --rsync-path=/usr/local/bin/rsync /export/hoge/files/* hoge@mail:/usr/local/files
ld.so.1: /usr/local/bin/rsync: fatal: libiconv.so.2: open failed: No such file or directory
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(359)

サーバB側で動作したrsyncがlibiconv.so.2という共有ライブラリが見えないようです。sshで動作させるときに環境変数を設定する必要があるようです。いくつか設定方法はあるようですが、今回は.ssh/environmentファイルを使用する方法を使いました。

sshd_configの設定

サーバBで動作しているsshd環境変数の設定を許すように設定を変更します。/usr/local/etc/sshd_config(デフォルトでは)のPermitUserEnvironmentをyesにします。

PermitUserEnvironment yes

この変更をした上でsshdを再起動。

.ssh/environment

サーバBのsshが動くユーザ(上記の例だとhoge)の.ssh/environmentで環境変数が設定できます。こんなかんじに書きます。

LD_LIBRARY_PATH=/usr/local/lib:/usr/local/ssl/lib:/usr/local/pgsql/lib

libiconv.so.2は/usr/local/libにあるので、それだけで充分です。あとはおまけ。

これでちゃんと動作するようになりました。

参考書はこちら。

実用SSH 第2版―セキュアシェル徹底活用ガイド

実用SSH 第2版―セキュアシェル徹底活用ガイド

87/100

もしも月がなかったら―ありえたかもしれない地球への10の旅

もしも月がなかったら―ありえたかもしれない地球への10の旅

月がなかったら、月がもっと近かったら、太陽がもっと大きかったらなどなど10の「もし」をあげてその場合の地球環境や生物に与える影響などを書いています。
最近50光年の位置に地球型惑星が見つかったって言うニュースがありましたがこれとか、広い宇宙に地球人しか見当たらない50の理由―フェルミのパラドックスなんかを読むと知的生命体が存在する可能性はあまりないように思えてきます。