サーバ間でdiffをとる方法

複数サーバ間の設定ファイルを比較したいときはこうすればよいです。
ローカルファイルとリモートサーバのファイルを比較
$ ssh remotename cat /etc/hosts | diff /etc/hosts  - 
こういう書き方もあります。
$ diff <(ssh remotename cat /etc/hosts) /etc/hosts  
リモートサーバ間のファイルを比較
$ diff <(ssh remote1 cat /etc/hosts) <(ssh remote2 cat /etc/hosts)

解説

ssh hostname cat /path/to/file
"cat /path/to/file"というコマンドを別サーバ(hostname)上で実行させて、結果を自マシンの標準出力に出力します。
diff /path/to/file - 
diffで、ファイル名を指定する代わりに「-」と書くと、ファイルの代わりに標準入力を読み込みます。
 <(command)
この書式は「プロセス置換」というもので、コマンドの実行結果をあたかもファイルのように扱うことができます。
cat <(date)
などとしてみるとよくわかると思います。

参考

複数サーバ間でPHPなどの設定を比較,確認したい時のTips - Qiita
カテゴリ:

人気記事