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.
Eine tar-Datei besteht immer aus 512 Bytes großen Blöcken. Jede Datei im Archiv hat einen Header-Block gefolgt von weiteren Blöcken für den Dateiinhalt. Verzeichnisse oder Links haben logischerweise keine Content-Blöcke sondern nur den Header-Block. Am Ende des Archivs werden dann zwei 512 Bytes Blöcke mit Null-Bytes angehängt, die das Ende markieren.
Der Header besteht fast nur aus Plain-Text, nur ein paar Null-Bytes kommen vor. Integer-Werte werden als Oktal-Strings gespeichert. Auch sind alle Felder des Headers an fixen Adressen, was das parsen vereinfacht. Eine Beschreibung des Headers findet sich auf der Open Group Webseite.
Da der Header nur begrenzt viel Platz hat, hat das Original UStar-Format (Unix Standard TAR) ein paar Limitierungen. Z.B. können Dateinamen oder Pfade nicht beliebig lang sein. Auch die Größe einzelner Dateien ist durch die spezielle Kodierung auf 8 Gb begrenzt. Erweiterungen dieses Formats, wie das neue POSIX Format pax oder auch GNU tar und star, haben diese Begrenzung nicht.
Wer tar-Dateien im alten UStar-Format in seinem eigenen Programm erstellen will, für den habe ich dieses Beispielprogramm, welches als Argument ein oder mehrere Dateipfade erwartet und dann eine tar-Datei daraus erstellt, die auf stdout ausgegeben wird.
Es ist manchmal ein Trauerspiel mit Linux. Viel zu oft hab ich schon nerviges Tearing erlebt, mit verschiedenen Ursachen. Aktuell mit Intel iGPU und der Gnome Shell. Ich bin mir nicht sicher, ob das Problem auch mit anderen GPUs auftritt. Sicher bin ich mir dabei, dass bei mir die Gnome Shell der Schuldige ist.
Daher hier ein (temporärer) Fix für eins der vielen Tearing-Probleme.
-
Öffnen des Gnome Shell Debugger (Looking Glass): Drücke Alt-F2 und gib lg ein
-
Dort muss folgender Befehl eingegeben werden:
Meta.disable_unredirect_for_screen(global.screen)
Eine Alternative ist diese Gnome Extension.
Wer unter macOS den Debugger gdb benötigt, muss ein paar Hindernisse überwinden. Zur Zeit meiner ersten Bekanntschaft mit OS X war gdb noch bei Xcode dabei, dieser wurde dort jedoch durch lldb ersetzt.
Installieren kann man gdb am einfachsten mit Homebrew.
$ brew install gdb
Das Sicherheitssystem in macOS erlaubt es gdb jedoch nicht, seine Aufgabe zu erfüllen, daher muss man gdb erst noch signieren und die System Integrity Protection muss deaktiviert werden.
Da ich nicht einfach die Anleitung, die ich selber befolgt habe, klauen möchte, verlinke ich einfach darauf.
Eine neue stabile Version von TrueOS, einem FreeBSD-basierenden Betriebsystem, wurde veröffentlicht.
Ursprünglich war TrueOS ein etwas nutzerfreundliches FreeBSD, mit einem einfacheren Installer, der ein benutzbares Desktop-OS installiert und grafische Tools für die Paketverwaltung bereitstellt. Die Entwickler haben aber daran gearbeitet, sich durch besondere Features von FreeBSD hervorzuheben. So kommt im Unterschied zu FreeBSD das OpenRC Init-System zum Einsatz. TrueOS hat auch seinen eigenen auf Qt basierten Desktop, nämlich Lumina. Zu den weiteren besonderen TrueOS Features zählen ein überarbeitetes Package-Management und die eigene SysAdm Remote Management API.
Zu den Neuerungen von 17.12 zählen:
- Basiert auf FreeBSD 12.0-CURRENT
- Verbesserung der OpenRC-Integration mit über 1100 OpenRC Services für 3rd-party Pakete
- Update des Lumina-Desktops
- Automounter-Service um entfernbare Geräte zu verwalten
- Unterstützung von bhyve, dem BSD Hypervisor
- Separate Installations-Images für Desktop und Server
Offizielle Release-Ankündigung
Kommentare
Andreas | Artikel: Datenanalyse in der Shell Teil 1: Basis-Tools
Einfach und cool!
Danke Andreas
Rudi | Artikel: Raspberry Pi1 vs Raspberry Pi4 vs Fujitsu s920 vs Sun Ultra 45
Peter | Artikel: XNEdit - Mein NEdit-Fork mit Unicode-Support
Damit wird Nedit durch XNedit ersetzt.
Danke!
Olaf | Artikel: XNEdit - Mein NEdit-Fork mit Unicode-Support
Anti-Aliasing hängt von der Schriftart ab. Mit einem bitmap font sollte die Schrift klassisch wie in nedit aussehen.
Einfach unter Preferences -> Default Settings -> Text Fonts nach einer passenden Schriftart suchen.
Peter | Artikel: XNEdit - Mein NEdit-Fork mit Unicode-Support
Mettigel | Artikel: Raspberry Pi1 vs Raspberry Pi4 vs Fujitsu s920 vs Sun Ultra 45
Ich hatte gedacht, dass der GX-415 im s920 deutlich mehr Dampf hat als der Raspi4.
Mein Thinclient verbraucht mit 16 GB RAM ~11 W idle, das ist das Dreifache vom RP4. Das muss man dem kleinen echt lassen... Sparsam ist er.
Olaf | Artikel: Raspberry Pi1 vs Raspberry Pi4 vs Fujitsu s920 vs Sun Ultra 45
Ergebnisse von der Ultra 80 wären natürlich interessant, insbesondere im Vergleich mit dem rpi1.
kosta | Artikel: Raspberry Pi1 vs Raspberry Pi4 vs Fujitsu s920 vs Sun Ultra 45
ich hätt hier zugriff auf Ultra-80 4CPU 4GB 2x Elite3D.