UNIXwork

Dateihierarchie-Überprüfung mit mtree

2017-12-18 19:19:03.0

Mit dem BSD-Tool mtree kann eine Datei-Hierarchie mit einer Spezifikation verglichen werden, wobei diese Spezifikation ebenfalls mit mtree erstellt werden kann. So kann man mit mtree geänderte Dateien finden, es ist jedoch auch möglich, Dateien, die nicht der Spezifikation entsprechen, zu löschen oder geänderte Dateirechte wiederherzustellen.

Nehmen wir mal an, man hat ein paar Dateien:

$ find .
.
./file2
./dir
./dir/abc
./dir/ccc
./file1

Bevor man mit mtree etwas vergleichen kann, benötigt man eine Spezifikation der Dateien. Diese erstellen wir mit mtree -c.

$ mtree -c > ../spec
$ cat ../spec
#      user: olaf
#   machine: m2.fritz.box
#      tree: /Users/olaf/Desktop/test
#      date: Mon Dec 18 18:50:28 2017

# .
/set type=file uid=501 gid=20 mode=0644 nlink=1 flags=none
.               type=dir mode=0755 nlink=5 size=160 \
                time=1513618591.304192231
    file1       size=6 time=1513619185.055667000
    file2       size=13 time=1513619203.579709605

# ./dir
dir             type=dir mode=0755 nlink=4 size=128 \
                time=1513618608.749249207
    abc         size=6 time=1513618604.803276546
    ccc         size=5 time=1513618611.066866426
# ./dir
..

..

Nun hat man eine Spezifikation, mit der man später die Dateien vergleichen kann.

$ touch dir/abc
$ echo "Hello World" > file1
$ mtree < ../spec 
dir/abc changed
    modification time expected Mon Dec 18 18:36:44 2017.803276546 found Mon Dec 18 18:56:22 2017.582045000
file1 changed
    size expected 6 found 12
    modification time expected Mon Dec 18 18:46:25 2017.055667000 found Mon Dec 18 18:57:03 2017.596168115

Wie man sieht, werden standardmäßig nur wenige Eigenschaften im der Spezifikation gespeichert, man hat jedoch eine große Auswahl an sogenannten keywords, die pro Datei gespeichert werden sollen. Diese können mit der -K-Option angegeben werden.

$ mtree -c -K sha256digest

Das Tool ist zwar ein BSD-Tool und unter Linux standardmäßig nicht anzutreffen, ich habe aber zumindestens einen Port gefunden. Und unter Ubuntu gibt es das Paket freebsd-buildutils, welches das Tool fmtree enthält.

Autor: Olaf | 0 Kommentare | Tags: bsd, shell

Kommentare


Name
Webseite (optional)
Captcha: 3x=12   x=?
Kommentar