Lösung 1:
Aus der man-Seite von diff:
Wenn sowohl from-file als auch to-file Verzeichnisse sind, vergleicht diff entsprechende Dateien in beiden Verzeichnissen in alphabetischer Reihenfolge; dieser Vergleich ist nicht rekursiv, es sei denn, die Option -r oder --recursive ist angegeben. diff vergleicht niemals den tatsächlichen Inhalt eines Verzeichnisses, als wäre es eine Datei. Die vollständig angegebene Datei ist möglicherweise keine Standardeingabe, da die Standardeingabe namenlos ist und der Begriff „Datei mit demselben Namen“ nicht zutrifft.
Also Verzeichnisse vergleichen:diff --brief -r dir1 dir2
Um Dateien nebeneinander zu vergleichen:diff --side-by-side file1 file2
Lösung 2:
Angenommen:
- wir sind am
www1
, verglichen mit entferntemwww2
- Es ist eine Authentifizierung mit öffentlichem SSH-Schlüssel vom lokalen
www1
konfiguriert zum entferntenwww2
- Wir vergleichen als derselbe Benutzer auf lokalem
www1
und Fernbedienungwww2
find /var/www/html/ -name "*" -exec md5sum -b {} \; | grep -v "/var/www/html/exclude_this dir" > local.md5 ssh www2 "find /var/www/html/ -name '*' -exec md5sum -b {} \; | grep -v /var/www/html/exclude_this dir > remote.md5" scp www2:remote.md5 . diff local.md5 remote.md5
Lösung 3:
Sie möchten wirklich die Kraft von rsync
kombinieren um den Bandbreitenverbrauch mit der Leistung von diff
zu reduzieren um Ihnen flexible, na ja, Unterschiede zu geben.
Also etwa so:
cp -R $local $bak
rsync $server:$remdir/* $local/
rsync $local/ $server:$remdir/*
diff -wur $local $bak
Ich schätze, Sie könnten dies ein wenig optimieren, wenn Sie es häufig tun würden, indem Sie rsync
verwenden statt cp
in der ersten Zeile - offensichtlich haben Sie in der letzten Zeile die volle Kraft von diff
zu formatieren, wie Sie möchten. Wahrscheinlich mit y im OPs-Fall
Der Nachteil dieses Ansatzes ist, dass Sie am Ende doppelt so viel lokalen Speicherplatz verbrauchen, aber für weniger als 1 $/Gigabit, wen interessiert das schon?