Ordner mit Tarball vergleichen

Ordner mit Tarball vergleichen

Ich habe eine Verzeichnisstruktur wie diese

Code
├── cse701.tgz
└── cse701
    ├── cse701.md
    ├── CSE701.md
    ├── CSE701_pandoc.md
    ├── cse701.pdf
    ├── cse.pdf
    ├── default.yaml
    ├── html2tex.log
    ├── test.md
    └── missing.md

Und das Tarball hat eine Struktur wie:

drwxrwxr-x zenith/zenith     0 2020-12-02 20:18 cse701/
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/default.yaml
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/CSE701.md
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/CSE701_pandoc.md
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/html2tex.log
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/test.md
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/cse701.pdf
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/cse.pdf
-rw-rw-r-- zenith/zenith     0 2020-12-02 21:19 cse701/cse701.md
tar --diff -zf cse701.tgz  cse701/
tar --compare -zf cse701.tgz  ./cse701/

Die Optionen zum Vergleichen und Vergleichen wie indieser Beitragsollte darauf hinweisen, dass auf der Festplatte eine Datei fehlt, die nicht im Tarball enthalten ist.

AllerdingsGNU Tar-Dokumentegibt an, dass angezeigt wird, ob die Dateien geändert wurden, aber Dateien im Dateisystem ignoriert werden, die keine entsprechenden Mitglieder im Archiv haben. Wenn eine Datei im Archiv dargestellt ist, aber nicht im Dateisystem existiert, meldet tar einen Unterschied.

Wie finde ich heraus, ob dem Ordner nach der Erstellung des Tarballs neue Dateien hinzugefügt wurden?

Antwort1

Dies ist kein Einzeiler, aber es tut, was Sie wollen:

cd /path/to/Code
tar -tf cse701.tgz | sed 's#/$##' >tgz
find cse701 >fs
diff -uw fs tgz
rm fs
rm tgz

Erläuterung:

  • Zunächst wechseln wir in das entsprechende Verzeichnis
  • Dann listen wir den Inhalt von tar.gz auf und entfernen /es am Ende der Zeile ( tar -tfügt sie dort für Verzeichnisse ein).
  • Dann finden wir alle Dateien und Verzeichnisse im entsprechenden Dateisystem-Teilbaum ( findsetztNEIN /es am Ende)
  • Wir vergleichen diese beiden Listen
  • und aufräumen

verwandte Informationen