SSH 経由でローカルとリモートサーバーのファイルの中身を比較する



SSH 経由でローカルサーバーとリモートサーバーのファイルの中身を比較する

ローカルサーバーのファイルとリモートサーバーのファイルとの間の差分をチェックする方法には様々な方法がありますが、ssh コマンドと diff コマンドを使って簡単にファイルの差分をチェックしてみます。

まず最初にローカルサーバーとリモートサーバーの両方に以下のような README.txt ファイルを用意します。3行目だけが異なるようにしています。
[ローカルサーバー]
$ cat README.txt
11111
22222
33333
44444
55555

[リモートサーバー]
$ cat README.txt
11111
22222
99999
44444
55555


両方のサーバーにファイルを作成したら、SSH 経由でローカルサーバーからリモートサーバーの README.txt の中身を見れるか確認します。
$ ssh username@10.10.10.2 'cat /tmp/README.txt'
username@10.10.10.2's password: 
11111
22222
33333
44444
55555


ローカルサーバーのファイルとリモートサーバーのファイルとの間の差分は、次のようにしてチェックします。diff コマンドの比較対象を "-" を指定して、リモートサーバーのファイルの内容を比較対象にしているところがポイントです。
$ ssh username@10.10.10.2 'cat /tmp/README.txt' | diff -u - README.txt
username@10.10.10.2's password: 
--- -   2017-11-01 23:32:46.489667911 +0900
+++ README.txt  2017-11-01 23:29:52.153271108 +0900
@@ -1,6 +1,6 @@
 11111
 22222
-99999
+33333
 44444
 55555

このコマンドを使うことで、正しくローカルサーバーのファイルと、リモートサーバーのファイルを diff コマンドで比較できていることが分かります。