Linuxでのリモート越しの差分チェック(diff)色々

今さっき、サクッと書き殴ったワンライナーなので突っ込みどころはあると思いますが、汚いのを承知の上で備忘録的に公開してみようと思う。ポータビリティ重視。

※ ちなみにノンパス設定している環境です(^^;)。必要に応じて各種パラメータを書き換えて実行してください。

ローカルの1ファイルと、リモートサーバにある1ファイルの差分チェック

$ ssh 192.168.1.1 "cat /usr/local/apache2/conf/extra/httpd-mpm.conf" | diff - ./httpd-mpm.conf

これは基本。ユーザ名を付ける時は、"username@192.168.0.1"とか指定してください。(><)

ローカルの1ファイルと、複数のリモートサーバそれぞれにある1ファイルの差分をチェック

$ for i in `seq 1 10`; do IP=192.168.1.${i}; echo "-----${IP}-----"; ssh ${IP} "cat /usr/local/apache2/conf/extra/httpd-mpm.conf" | diff -c - ./httpd-mpm.conf; done

ローカルに存在する httpd-mpm.conf と、192.168.1.1 〜 192.168.1.10のサーバに存在する /usr/local/apache2/conf/extra/httpd-mpm.conf を diff -c で比較。

ローカルにある特定ディレクトリの複数ファイル(一部除外)と、リモートサーバの特定ディレクトリに存在する複数ファイルにおいて、各ファイルの差分をチェック

$ for p in `find ./ -name '*.conf.20*' -prune -o -type f -print`; do echo "-----${p}-----"; ssh 192.168.1.1 "cat /usr/local/apache2/conf/${p}" | diff -c - ${p}; done

ローカルに存在するカレントディレクトリ(./)に存在する複数ファイル('*.conf.20*'のルールを除く全ファイル)と、192.168.1.1 のサーバに存在する /usr/local/apache2/conf/ ディレクトリ以下の複数ファイルそれぞれとの差分を diff -c でチェック。