Inhaltsverzeichnis
Hier werden Werkzeuge und Tipps zur Verwaltung von Binär- und Textdateien auf einem Debian-System beschrieben.
![]() |
Warnung |
---|---|
Nicht-koordinierte zeitgleiche Schreibzugriffe auf Geräte und Dateien durch
mehrere Prozesse sind nicht erlaubt, da dadurch eine Race Condition (Wettlaufsituation um
konkurrierende Zugriffe auf die Ressource) entstehen könnte. Dies kann über
einen File locking-Mechanismus mittels
|
Die Sicherheit der Daten und deren kontrolliertes Austauschen mit anderen hat verschiedene Aspekte:
Erzeugung von Datenarchiven;
Fern-Speicherzugriff;
Vervielfältigung;
Nachverfolgung der Änderungshistorie;
Erleichterung des Tauschens von Daten;
Verhinderung von unerlaubten Dateizugriffen;
Erkennung von unerlaubten Dateiveränderungen.
Diese können über die Verwendung einer Kombination von Werkzeugen realisiert werden:
Archivierungs- und Kompressionswerkzeuge
Kopier- und Synchronisationswerkzeuge
Netzwerk-Dateisysteme;
Wechseldatenträger;
Secure Shell;
Authentifizierungssysteme;
Versionskontrollsysteme;
Hash- und kryptographische Verschlüsselungswerkzeuge.
Hier eine Zusammenfassung von Archivierungs- und Kompressionswerkzeugen im Debian-System:
Tabelle 10.1. Liste von Archivierungs- und Kompressionswerkzeugen
Paket | Popcon | Größe | Erweiterung | Befehl | Erläuterung |
---|---|---|---|---|---|
tar
|
V:914, I:999 | 3152 | .tar |
tar (1) |
Standard-Archivierungs-Programm (De-Facto-Standard) |
cpio
|
V:489, I:998 | 1144 | .cpio |
cpio (1) |
Unix-Archivier-Programm im System-V-Stil, zu verwenden mit
find (1) |
binutils
|
V:164, I:673 | 97 | .ar |
ar (1) |
Archivier-Programm zur Erstellung von statischen Bibliotheken |
fastjar
|
V:2, I:25 | 183 | .jar |
fastjar (1) |
Archivier-Programm für Java (zip-artig) |
pax
|
V:12, I:24 | 170 | .pax |
pax (1) |
neues POSIX-Archivier-Programm, Kompromiss zwischen tar
und cpio |
gzip
|
V:891, I:999 | 242 | .gz |
gzip (1), zcat (1), … |
GNU LZ77-Kompressionswerkzeug (De-Facto-Standard) |
bzip2
|
V:147, I:973 | 122 | .bz2 |
bzip2 (1), bzcat (1), … |
Burrows-Wheeler
Block-Sorting Kompressions-Werkzeug mit höherem
Kompressionsverhältnis als gzip (1) (langsamer als
gzip mit ähnlicher Syntax) |
lzma
|
V:2, I:27 | 149 | .lzma |
lzma (1) |
LZMA compression utility with higher compression
ratio than gzip (1) (deprecated) |
xz-utils
|
V:453, I:980 | 612 | .xz |
xz (1), xzdec (1), … |
XZ-Kompressionswerkzeug mit höherem
Kompressionsverhältnis als bzip2 (1) (langsamer als
gzip , aber schneller als bzip2 ;
ersetzt das LZMA-Kompressionswerkzeug) |
zstd
|
V:4, I:24 | 1902 | .zstd |
zstd (1), zstdcat (1), … |
Zstandard fast lossless compression utility |
p7zip
|
V:79, I:454 | 987 | .7z |
7zr (1), p7zip (1) |
7-Zip-Dateiarchivier-Programm mit hohem Kompressionsverhältnis (LZMA-Kompression) |
p7zip-full
|
V:102, I:469 | 4664 | .7z |
7z (1), 7za (1) |
7-Zip-Dateiarchivier-Programm mit hohem Kompressionsverhältnis (LZMA- und andere Kompressionsalgorithmen) |
lzop
|
V:10, I:85 | 164 | .lzo |
lzop (1) |
LZO-Kompressionswerkzeug mit höherer
Kompressions- und Dekompressionsgeschwindigkeit als
gzip (1) (niedrigeres Kompressionsverhältnis als
gzip mit ähnlicher Syntax) |
zip
|
V:49, I:427 | 623 | .zip |
zip (1) |
InfoZIP: DOS-Archivierungs- und Kompressionswerkzeug |
unzip
|
V:132, I:792 | 385 | .zip |
unzip (1) |
InfoZIP: DOS-Dearchivierungs- und Dekompressionswerkzeug |
![]() |
Warnung |
---|---|
Setzen Sie nicht die " |
Ein gezipptes tar
(1)-Archiv verwendet die
Dateierweiterung ".tgz
" oder
".tar.gz
".
Ein xz-komprimiertes tar
(1)-Archiv verwendet die
Dateierweiterung ".txz
" oder
".tar.xz
".
Die Popularität der Kompressionsmethoden in FOSS-Programmen wie tar
(1) hat sich
mit der Zeit wie folgt verschoben: gzip
→
bzip2
→ xz
.
cp
(1), scp
(1) und
tar
(1) könnten Einschränkungen bei speziellen Dateien
haben. cpio
(1) ist dabei erheblich vielseitiger.
cpio
(1) wurde entwickelt, um zusammen mit
find
(1) und anderen Befehlen verwendet zu werden und ist
geeignet, Backup-Skripte zu erstellen, da der Teil des Skriptes zur
Dateiauswahl eigenständig getestet werden kann.
Die interne Struktur von Libreoffice-Dateien entspricht der von
".jar
"-Dateien, die auch mit unzip
geöffnet werden können.
Das de-facto plattform-übergreifende Archivwerkzeug ist
zip
. Benutzen Sie es in der Art "zip
-rX
", um maximal mögliche Kompatibilität zu erreichen. Verwenden
Sie auch die Option "-s
", wenn die maximale Dateigröße
bei Ihnen relevant ist.
Hier eine Zusammenfassung von einfachen Kopier- und Backup-Werkzeugen im Debian-System:
Tabelle 10.2. Liste von Kopier- und Synchronisationswerkzeugen
Paket | Popcon | Größe | Werkzeug | Funktion |
---|---|---|---|---|
coreutils
|
V:901, I:999 | 17478 | GNU cp | Dateien und Verzeichnisse lokal kopieren (verwenden Sie
"-a " für rekursive Operationen) |
openssh-client
|
V:809, I:997 | 4298 | scp | Dateien und Verzeichnisse von fern kopieren (Client, verwenden Sie
"-r " für rekursive Operationen) |
openssh-server
|
V:701, I:844 | 1567 | sshd | Dateien und Verzeichnisse von fern kopieren (ferner Server) |
rsync
|
V:311, I:564 | 677 | 1-Weg-Synchronisation und -Backup von fern | |
unison
|
V:3, I:16 | 14 | 2-Wege-Synchronisation und -Backup von fern |
Das Kopieren von Dateien mit rsync
(8) bietet mehr
Funktionalitäten als mit anderen Werkzeugen:
Delta-Transfer-Algorithmus, der nur die Unterschiede zwischen Quelle und Ziel überträgt;
schneller Prüf-Algorithmus, der (standardmäßig) nach Dateien sucht, die sich in Größe oder Änderungs-Zeitstempel verändert haben;
die Optionen "--exclude
" und
"--exclude-from
", vergleichbar mit denen von
tar
(1);
die Syntax des Schrägstrichs hinter dem Quellverzeichnis, die verhindert, dass eine zusätzliche Verzeichnisebene auf dem Zielort erstellt wird.
![]() |
Tipp |
---|---|
Versionskontrollsysteme (VCS) wie die in Tabelle 10.14, „List of other version control system tools“ können ebenfalls als Mehrwege-Kopier- und Synchronisationswerkzeuge dienen. |
Hier finden Sie mehrere Wege, um den kompletten Inhalt des Verzeichnisses
"./source
" mit verschiedenen Werkzeugen zu archivieren
oder dearchivieren.
GNU tar
(1):
$ tar -cvJf archive.tar.xz ./source $ tar -xvJf archive.tar.xz
Alternativ auch:
$ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -F -
cpio
(1):
$ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio $ zcat archive.cpio.xz | cpio -i
Hier finden Sie mehrere Wege, um den kompletten Inhalt des Verzeichnisses
"./source
" mit verschiedenen Werkzeugen zu kopieren.
Lokale Kopie: "./source
"-Verzeichnis →
"/dest
"-Verzeichnis
Kopie auf einen fernen Rechner: "./source
"-Verzeichnis
auf dem lokalen Rechner → "/dest
"-Verzeichnis auf dem
Rechner "user@host.dom
"
rsync
(8):
# cd ./source; rsync -aHAXSv . /dest # cd ./source; rsync -aHAXSv . user@host.dom:/dest
Sie können auch die Syntax mit Schrägstrich am Ende des Zielverzeichnisses nutzen:
# rsync -aHAXSv ./source/ /dest # rsync -aHAXSv ./source/ user@host.dom:/dest
Alternativ auch:
# cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest
GNU cp
(1) und openSSH scp
(1):
# cd ./source; cp -a . /dest # cd ./source; scp -pr . user@host.dom:/dest
GNU tar
(1):
# (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - ) # (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'
cpio
(1):
# cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest
Sie können in allen Beispielen, die einen ".
" enthalten,
diesen ".
" durch "foo
" ersetzen, um
Dateien aus dem Verzeichnis "./source/foo
" in das
Verzeichnis "/dest/foo
" zu kopieren.
Auch kann in allen Beispielen, die einen ".
" enthalten,
dieser ".
" durch einen absoluten Pfad wie
"/pfad/zu/source/foo
" ersetzt werden, damit kann dann auf
"cd ./source;
" verzichtet werden. Dadurch werden,
abhängig von den verwendeten Werkzeugen, die Dateien an unterschiedliche
Orte kopiert:
bei rsync
(8), GNU cp
(1) und
scp
(1): nach "/dest/foo
";
bei GNU tar
(1) und cpio
(1): nach
"/dest/pfad/zu/source/foo
".
![]() |
Tipp |
---|---|
|
find
(1) wird verwendet, um Dateien für Archivierungs- und
Kopierbefehle auszuwählen (lesen Sie Abschnitt 10.1.3, „Aufrufe für Archivierungsoperationen“ und Abschnitt 10.1.4, „Aufrufe für Kopieroperationen“) oder xargs
(1) (Näheres
in Abschnitt 9.4.9, „Einen Befehl wiederholt mit einer Schleife über verschiedene Dateien
ausführen“). Dies kann mit
deren Befehlsargumenten noch erweitert werden.
Die grundsätzliche Syntax von find
(1) kann wie folgt
zusammengefasst werden:
Seine bedingten Argumente werden von links nach rechts ausgewertet.
Die Auswertung wird beendet, sobald ihr Resultat ermittelt wurde.
Ein "logisches ODER" (definiert über
"-o
" zwischen den Bedingungen) hat eine niedrigere
Priorität als ein "logisches UND" (das
über "-a
" oder nichts zwischen den Bedingungen definiert
wird).
Ein "logisches NICHT" (definiert über
"!
" vor der Bedingung) hat eine höhere Priorität als ein
"logisches UND".
"-prune
" liefert immer ein logisches WAHR zurück und, falls es ein Verzeichnis ist, wird
die Suche nach Dateien an diesem Punkt beendet.
"-name
" findet Dateien über den Anfang des Dateinamens
mittels Shell-Glob-Suchmuster (lesen Sie dazu Abschnitt 1.5.6, „Shell-Glob“), findet sie aber über Metazeichen wie
"*
" und "?
" auch bei einem führenden
".
" (neue POSIX-Funktionalität).
"-regex
" findet Dateien mit vollständigem Pfad
standardmäßig über Emacs-artige reguläre Ausdrücke (BRE, nähere Infos finden Sie in Abschnitt 1.6.2, „Reguläre Ausdrücke“).
"-size
" findet Dateien basierend auf der Dateigröße (mit
einem "+
" vor dem Wert für größer, mit einem
"-
" für kleiner).
"-newer
" findet Dateien, die neuer sind als in dem
Argument angegeben.
"-print0
" liefert immer ein logisches WAHR zurück und gibt den kompletten Dateinamen
(abgeschlossen durch ein Nullzeichen)
auf der Standardausgabe aus.
find
(1) wird oft in einem idiomatischen Stil verwendet,
wie hier:
# find /path/to \ -xdev -regextype posix-extended \ -type f -regex ".*\.cpio|.*~" -prune -o \ -type d -regex ".*/\.git" -prune -o \ -type f -size +99M -prune -o \ -type f -newer /path/to/timestamp -print0
Das bedeutet folgendes:
nach allen Dateien suchen, beginnend in "/pfad/zu
";
die Suche global auf das Dateisystem beschränken, in dem sie begonnen wurde, und stattdessen reguläre Ausdrücke (ERE, lesen Sie dazu Abschnitt 1.6.2, „Reguläre Ausdrücke“) verwenden;
Dateien ausschließen, auf die die regulären Ausdrücke
".*\.cpio
" oder ".*~
" zutreffen, indem
die Suche abgebrochen wird;
Verzeichnisse ausschließen, auf die der reguläre Ausdruck
".*/\.git
" zutrifft, indem die Suche abgebrochen wird;
Dateien ausschließen, die größer als 99 Megabyte (1048576 Byte) sind, indem die Suche abgebrochen wird;
Dateinamen ausgeben, die obige Suchkriterien erfüllen und neuer als
"/path/to/timestamp
" sind.
Bitte beachten Sie die idiomatische Verwendung von "-prune
-o
", um in obigen Beispielen Dateien auszuschließen.
![]() |
Anmerkung |
---|---|
Auf Unix-artigen Nicht-Debian-Systemen
werden einige Optionen von |
Wenn Sie Speichermedien für die Sicherung wichtiger Daten suchen, sollten Sie sorgfältig deren Einschränkungen abwägen. Für eine kleine persönliche Datensicherung verwende ich CD-R und DVD-R von einem Markenhersteller und lagere die Disks in einer kühlen, dunklen, trockenen und sauberen Umgebung. (Für die professionelle Nutzung scheinen Tapes (Speicherbänder) zur Archivierung sehr beliebt zu sein.)
![]() |
Anmerkung |
---|---|
Ein feuerbeständiger Tresor ist gedacht für Dokumente in Papierform. Jedoch haben die meisten Speichermedien eine niedrigere Temperaturtoleranz als Papier. Ich baue auf mehrere sicher verschlüsselte Kopien, die an verschiedenen sicheren Orten aufbewahrt werden. |
Optimistische Angabe der Lebensdauer von Speichermedien, gefunden im Internet (überwiegend Herstellerangaben):
100 Jahre und mehr: säurefreies Papier mit Tinte;
100 Jahre: Optische Speichermedien (CD/DVD, CD-R/DVD-R);
30 Jahre: Magnetische Speichermedien (Bänder, Disketten);
20 Jahre: Optische Medien basierend auf Phasenänderung (CD-RW).
Hierbei sind keine mechanischen Ausfälle durch Handhabung usw. berücksichtigt.
Optimistische Angabe von Schreibzyklen der Speichermedien, gefunden im Internet (überwiegend Herstellerangaben):
250000 Zyklen und mehr: Festplattenlaufwerk;
10000 Zyklen und mehr: Flash-Speicher;
1000 Zyklen: CD-RW/DVD-RW;
1 Zyklus: CD-R/DVD-R, Papier.
![]() |
Achtung |
---|---|
Die obigen Angaben zu Lebensdauer und Schreibzyklen sollten nicht für Entscheidungen bezüglich kritischer Datenspeicherung herangezogen werden. Bitte konsultieren Sie in diesem Fall die spezifischen Produktinformationen des Herstellers. |
![]() |
Tipp |
---|---|
Da CD-R/DVD-R und Papier nur einmal beschrieben werden können, schützen sie von Natur aus vor dem versehentlichen Datenverlust durch Überschreiben. Dies ist ein Vorteil! |
![]() |
Tipp |
---|---|
Wenn Sie eine schnelle und wiederholte Sicherung großer Datenmengen benötigen, könnte eine Festplatte in einem fernen Rechner, verbunden über eine schnelle Internetverbindung, die einzige realistische Option sein. |
Wechseldatenträger können folgende Geräte sein:
USB-Flash-Speicher (USB-Stick);
Optisches Laufwerk (CD/DVD/BD);
Digitalkamera;
Digitaler Mediaplayer.
Sie können über eine dieser Möglichkeiten verbunden sein:
Moderne Arbeitsplatzumgebungen wie GNOME und KDE können diese
Wechseldatenträger auch ohne einen entsprechenden
"/etc/fstab
"-Eintrag automatisiert einbinden.
![]() |
Tipp |
---|---|
Automatisch eingebundene Geräte haben eventuell die mount-Option
" |
![]() |
Tipp |
---|---|
In modernen Arbeitsplatzumgebungen funktioniert das automatische Einbinden
von Laufwerken nur, wenn diese Geräte nicht in
" |
Mount point under modern desktop environment is chosen as
"/media/username/disk_label
" which
can be customized by the following.
mlabel
(1) bei FAT-Dateisystemen;
genisoimage
(1) mit der Option "-V
" bei
ISO9660-Dateisystemen;
tune2fs
(1) mit der Option "-L
" bei
ext2-/ext3-/ext4-Dateisystemen.
![]() |
Tipp |
---|---|
Die verwendete Zeichenkodierung muss unter Umständen als mount-Option angegeben werden (lesen Sie dazu Abschnitt 8.1.3, „Dateinamenkodierung“). |
![]() |
Tipp |
---|---|
Die Verwendung des grafischen GUI-Menüs zur Trennung eines eingebundenen
Dateisystems könnte auch dessen dynamisch erzeugte Gerätedatei
(z.B. " |
Um Daten mit anderen Systemen über Wechseldatenträger auszutauschen, sollten Sie diese mit einem Dateisystem formatieren, das von beiden Systemen unterstützt wird.
Tabelle 10.3. Liste von Dateisystemen für Wechseldatenträger mit typischen Anwendungsszenarien
filesystem name | typical usage scenario |
---|---|
FAT12 | Plattformübergreifender Datenaustausch mittels Diskette (<32 MiB) |
FAT16 | Plattformübergreifender Datenaustausch mittels kleiner festplatten-ähnlicher Geräte (<2 GiB) |
FAT32 | Plattformübergreifender Datenaustausch mittels großer festplatten-ähnlicher Geräte (<8 TiB, unterstützt von Systemen neuer als MS Windows95 OSR2) |
exFAT | cross platform sharing of data on the large hard disk like device (<512TiB, supported by WindowsXP, Mac OS X Snow Leopard 10.6.5, and Linux kernel since 5.4 release) |
NTFS | Plattformübergreifender Datenaustausch mittels großer festplatten-ähnlicher Geräte (nativ unterstützt von MS Windows NT und späteren Versionen, außerdem unterstützt durch NTFS-3G via FUSE unter Linux) |
ISO9660 | Plattformübergreifender Austausch statischer Daten mittels CD-R und DVD+/-R |
UDF | inkrementelles Schreiben von Daten auf CD-R und DVD+/-R (neu) |
MINIX | speicherplatz-effizientes Ablegen von Unix-Daten auf Diskette |
ext2 | Datenaustausch mit älteren Linux-Systemen auf festplatten-ähnlichen Geräten |
ext3 | Datenaustausch mit älteren Linux-Systemen auf festplatten-ähnlichen Geräten |
ext4 | Datenaustausch mit aktuellen Linux-Systemen auf festplatten-ähnlichen Geräten |
btrfs | sharing of data on the hard disk like device with current Linux systems with read-only snapshots |
![]() |
Tipp |
---|---|
Details zum plattformübergreifenden Datenaustausch mit Verschlüsselung auf Geräteebene finden Sie in Abschnitt 9.9.1, „Verschlüsselung von Wechseldatenträgern mit dm-crypt/LUKS“. |
Das FAT-Dateisystem wird von nahezu allen modernen Dateisystemen unterstützt und ist für den Datenaustausch über Wechseldatenträger sehr nützlich.
Wenn Sie Geräte wie externe Festplatten für den plattformübergreifenden Datenaustausch mit dem FAT-Dateisystem formatieren, sollten die folgenden Varianten eine sichere Wahl sein:
Partitionieren Sie das Medium mit fdisk
(8),
cfdisk
(8) oder parted
(8) (lesen Sie
dazu Abschnitt 9.6.2, „Konfiguration der Plattenpartitionen“) mit einer einzigen
primären Partition und markieren Sie sie wie folgt:
Typ "6" (FAT16) für Medien kleiner als 2 GB;
Typ "c" (FAT32, LBA) für größere Medien.
Formatieren der primären Partition mit mkfs.vfat
(8) wie
folgt:
einfach über den Gerätenamen, z.B. "/dev/sda1
" für FAT16;
über die explizite Option und den Gerätenamen, z.B. "-F 32
/dev/sda1
" für FAT32.
Wenn das FAT- oder ISO9660-Dateisystem für den Dateiaustausch verwendet wird, sollte folgendes eine sichere Variante sein:
archivieren der Dateien in eine Archivdatei mittels
tar
(1) oder cpio
(1), um die langen
Dateinamen, symbolischen Links, originalen Unix-Dateiberechtigungen und
Benutzerinformationen zu erhalten;
splitten der Archivdatei in Stücke kleiner als 2 GiB mittels
split
(1), um so die Beschränkung der Dateigröße zu
umgehen;
verschlüsseln der Archivdatei, um den Inhalt vor unberechtigtem Zugriff zu schützen.
![]() |
Anmerkung |
---|---|
Bei dem FAT-Dateisystem liegt, begründet durch sein Design, die maximale
Dateigröße bei |
![]() |
Anmerkung |
---|---|
Microsoft selbst empfiehlt FAT nicht für Laufwerke oder Partitionen über 200 MB Größe. Microsoft hebt die Nachteile wie ineffiziente Speicherplatznutzung in seiner "Übersicht über die Dateisysteme FAT, HPFS und NTFS" hervor. Natürlich sollten wir für Linux normalerweise das ext4-Dateisystem nutzen. |
![]() |
Tipp |
---|---|
Mehr Informationen über Dateisysteme und Dateisystemzugriffe finden Sie im "Filesystems HOWTO". |
Wenn Sie Daten mit anderen Systemen über das Netzwerk austauschen, sollten Sie allgemein gängige Dienste verwenden. Hier einige Hinweise:
Tabelle 10.4. Liste von Netzwerkdiensten mit typischen Anwendungsszenarien
Netzwerkdienst | Beschreibung des typischen Anwendungsszenarios |
---|---|
SMB/CIFS - über Netzwerk mit Samba eingebundenes Dateisystem | Datenaustausch über "Microsoft Windows Network", Näheres in
smb.conf (5) und The Official Samba 3.x.x HOWTO and
Reference Guide oder im samba-doc -Paket |
NFS - über Netzwerk mittels Linux-Kernel eingebundenes Dateisystem | Datenaustausch über "Unix/Linux Network", Näheres in
exports (5) und im Linux
NFS-HOWTO |
HTTP-Dienst | Datenaustausch zwischen Web-Server/-Client |
HTTPS-Dienst | Datenaustausch zwischen Web-Server/-Client mit verschlüsseltem Secure Sockets Layer (SSL) oder Transport Layer Security (TLS) |
FTP-Dienst | Datenaustausch zwischen FTP-Server/-Client |
Obwohl Dateisysteme, die über solche Netzwerk-gestützten Transfermethoden eingebunden sind, für den Datenaustausch sehr praktisch sind, könnten Sie unsicher sein. Die genutzte Netzwerkverbindung muss wie folgt abgesichert sein:
Lesen Sie auch Abschnitt 6.5, „Weitere Netzwerkanwendungs-Server“ und Abschnitt 6.6, „Weitere Netzwerkanwendungs-Clients“.
Wir alle wissen, dass Computer manchmal defekt sein können oder menschliche Fehler System- und Datenausfälle verursachen. Aktionen zur Datensicherung und -wiederherstellung sind unverzichtbarer Teil einer erfolgreichen Systemadministration. Alle möglichen Fehlervarianten werden Sie eines Tages ereilen.
![]() |
Tipp |
---|---|
Halten Sie Ihr Datensicherungssystem einfach und führen Sie häufig Sicherungen durch. Aktuelle Sicherungen von seinen Daten zu haben ist wichtiger als die technische Qualität der Sicherungsmethodik. |
Es gibt drei Schlüsselfaktoren, die letztendig die Sicherungs- und Wiederherstellungsstrategie bestimmen:
Zu wissen, was man sichern und wiederherstellen muss:
Daten, die direkt von Ihnen selbst erstellt wurden: Daten in
"~/
";
Daten, die von Anwendungen, die Sie verwenden, erstellt wurden: Daten in
"/var/
" (außer "/var/cache/
",
"/var/run/
" und "/var/tmp/
");
Systemkonfigurationsdateien: Daten in "/etc/
";
Lokale Software: Daten in "/usr/local/
" oder
"/opt/
";
Informationen zur Systeminstallation: Aufzeichnungen über wichtige Schritte (Partitionierung, …) in einfacher Textform;
Daten, von denen Sie wissen, dass sie wichtig sind, bestätigt durch im Vornherein versuchsweise durchgeführte Wiederherstellungsoperationen.
Wissen, wie Sie Daten sichern und wiederherstellen:
Sicheres Speichern von Daten: geschützt vor Überschreiben und Systemausfällen;
Häufige Datensicherungen: Sicherungen planen;
Redundante Datensicherungen: Spiegeln der Sicherungsdateien;
Idiotensicheres Vorgehen: Sicherung durch einen einfachen Befehl.
Bewertung der entstehenden Risiken und Kosten:
Wert der Daten, falls sie verloren gehen;
Für die Sicherung benötigte Ressourcen: Personen, Hardware, Software, …;
Mögliche Ausfälle und deren Wahrscheinlichkeit.
![]() |
Anmerkung |
---|---|
Machen Sie keine Sicherungen von den Pseudo-Dateisystemen in
|
Aus Gründen der sicheren Speicherung sollten die Daten zumindest auf verschiedenen Festplattenpartitionen, bevorzugt sogar auf separaten Festplatten und Rechnern abgelegt werden, um Beschädigungen von Dateisystemen standzuhalten. Wichtige Daten werden am besten auf Medien gespeichert, die nur einmal beschrieben werden können (wie CD-R/DVD-R), um versehentliches Überschreiben auszuschließen. (In Abschnitt 9.8, „Binärdaten“ lesen Sie, wie Sie von der Befehlszeile aus auf die Speichermedien schreiben können. Die grafische Oberfläche der GNOME-Arbeitsplatzumgebung bietet Ihnen auch einen einfachen Weg über das Menü: "Orte→CD/DVD-Ersteller".)
![]() |
Anmerkung |
---|---|
Sie sollten eventuell einige Anwendungs-Daemons wie den MTA (lesen Sie dazu Abschnitt 6.2.4, „Mail Transfer Agent (MTA)“) beenden, während Sie die Datensicherung durchführen. |
![]() |
Anmerkung |
---|---|
Besondere Sorgfalt bei Sicherung und Wiederherstellung sollte
Identitäts-bezogenen Dateien gelten, wie
" |
![]() |
Anmerkung |
---|---|
Wenn Sie einen Cron-Job als Benutzerprozess ausführen, müssen Sie die
Dateien im Verzeichnis " |
Hier eine Auswahl erwähnenswerter, im Debian-System verfügbarer Datensicherungsprogramme:
Tabelle 10.5. Liste von Datensicherungsprogrammen
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
dump
|
V:1, I:6 | 352 | 4.4bsd dump (8)- und
restore (8)-Programm für ext2/ext3/ext4-Dateisysteme |
xfsdump
|
V:0, I:9 | 854 | dump (Abbilderstellung) und restore (Wiederherstellung) mit
xfsdump (8) und xfsrestore (8) für das
XFS-Dateisystem unter GNU/Linux und IRIX |
backupninja
|
V:3, I:4 | 367 | ressourcenschonendes, erweiterbares Meta-Backup-System |
bacula-common
|
V:10, I:14 | 2158 | Bacula: Datensicherung, -wiederherstellung und -verifizierung über das Netzwerk - gemeinsame Hilfsdateien |
bacula-client
|
I:3 | 183 | Bacula: Datensicherung, -wiederherstellung und -verifizierung über das Netzwerk - Client-Metapaket |
bacula-console
|
V:1, I:4 | 107 | Bacula: Datensicherung, -wiederherstellung und -verifizierung über das Netzwerk - Textkonsole |
bacula-server
|
I:1 | 183 | Bacula: Datensicherung, -wiederherstellung und -verifizierung über das Netzwerk - Server-Metapaket |
amanda-common
|
V:1, I:2 | 10030 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Netzwerk-Backup-System - Bibliotheken) |
amanda-client
|
V:1, I:2 | 1088 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Netzwerk-Backup-System - Client) |
amanda-server
|
V:0, I:0 | 1075 | Amanda: Advanced Maryland Automatic Network Disk Archiver (Netzwerk-Backup-System - Server) |
backup-manager
|
V:1, I:1 | 571 | befehlszeilen-basiertes Datensicherungs-Werkzeug |
backup2l
|
V:0, I:1 | 114 | wartungsarmes Sicherungs-/Wiederherstellungsprogramm für mount-fähige Medien (festplatten-basiert) |
backuppc
|
V:3, I:3 | 3183 | BackupPC ist ein hochleistungsfähiges System der Enterprise-Klasse zur Datensicherung von PCs (festplatten-basiert) |
duplicity
|
V:9, I:19 | 1834 | Inkrementelles Backup (auch von fern) |
flexbackup
|
V:0, I:0 | 243 | Inkrementelles Backup (auch von fern) |
rdiff-backup
|
V:6, I:14 | 733 | Inkrementelles Backup (auch von fern) |
restic
|
V:1, I:4 | 22540 | Inkrementelles Backup (auch von fern) |
slbackup
|
V:0, I:0 | 151 | Inkrementelles Backup (auch von fern) |
Datensicherungs-Werkzeuge haben alle ihren speziellen Fokus:
Mondo Rescue ist ein Backup-System, das die schnelle Wiederherstellung eines vollständigen Systems von CD/DVD ermöglicht, ohne dass dabei die normalen Systeminstallations-Prozesse durchlaufen werden müssen.
Bacula, Amanda und BackupPC sind voll ausgestattete Backup-Lösungen, die auf die regelmäßige Datensicherung über Netzwerk fokussiert sind.
Regular backups of user data can be realized by a simple script (Abschnitt 10.2.2, „Personal backup“).
Grundlegende Werkzeuge (in Abschnitt 10.1.1, „Archivierungs- und Kompressionswerkzeuge“ und Abschnitt 10.1.2, „Kopier- und Synchronisationswerkzeuge“ beschrieben) können verwendet werden, um Systemdatensicherungen über eigene Skripte durchzuführen. Solche Skripte können wie folgt erweitert werden:
Das restic
-Paket ermöglicht inkrementelle
Datensicherungen (auch auf ferne Rechner).
Auch das rdiff-backup
-Paket ermöglicht inkrementelle
Datensicherungen (ebenfalls auf ferne Rechner).
Das dump
-Paket hilft bei der inkrementellen und
effizienten Archivierung und Wiederherstellung eines kompletten
Dateisystems.
![]() |
Tipp |
---|---|
Lesen Sie " |
For a personal Debian desktop system running testing
suite, I only need to protect personal and critical data. I reinstall
system once a year anyway. Thus I see no reason to backup the whole system
or to install a full featured backup utility.
At the same time, it is very valuable to have frequent recent snapshots of personal data and system configuration, and occasional full backups of personal data.
I usually make these snapshots and backups with a simple shell script bss. This script is a short shell which uses standard
utilities: btrfs subvolume snapshot
,
rsync
, cp
.
![]() |
Tipp |
---|---|
Sie können die debconf-Konfigurationsdaten mit
" |
Die Sicherheitsinfrastruktur für Ihre Daten wird durch eine Kombination verschiedener Programme gewährleistet: Verschlüsselungswerkzeug, Message-Digest-Werkzeug und Signaturwerkzeug.
Tabelle 10.6. Liste von Werkzeugen für die Datensicherheits-Infrastruktur
Paket | Popcon | Größe | Befehl | Beschreibung |
---|---|---|---|---|
gnupg
|
V:498, I:942 | 864 | gpg (1) |
GNU Privacy Guard - OpenPGP Verschlüsselungs- und Signaturwerkzeug |
gpgv
|
V:890, I:999 | 882 | gpgv (1) |
GNU Privacy Guard - Werkzeug zur Verifizierung von Signaturen |
paperkey
|
V:1, I:13 | 58 | paperkey (1) |
lediglich die geheimen Informationen aus geheimen OpenPGP-Schlüsseln extrahieren |
cryptsetup
|
V:41, I:77 | 407 | cryptsetup (8), … |
utilities for dm-crypt block device encryption supporting LUKS |
coreutils
|
V:901, I:999 | 17478 | md5sum (1) |
MD5-Message-Digest (Prüfsummen) berechnen und überprüfen |
coreutils
|
V:901, I:999 | 17478 | sha1sum (1) |
SHA1-Message-Digest (Prüfsummen) berechnen und überprüfen |
openssl
|
V:814, I:994 | 1465 | openssl (1ssl) |
Message-Digest mit "openssl dgst " berechnen (OpenSSL) |
See Abschnitt 9.9, „Tipps zur Datenverschlüsselung“ on dm-crypt and ecryptfs which implement automatic data encryption infrastructure via Linux kernel modules.
Hier einige Befehle für die grundlegende Schlüsselverwaltung mit GNU Privacy Guard:
Tabelle 10.7. Liste von GNU Privacy Guard-Befehlen für die Schlüsselverwaltung
Befehl | Beschreibung |
---|---|
gpg --gen-key |
einen neuen Schlüssel generieren |
gpg --gen-revoke meine_Nutzer_ID |
einen Widerrufschlüssel (revoke key) für meine_Nutzer_ID generieren |
gpg --edit-key Nutzer_ID |
Schlüssel interaktiv editieren, "help" eingeben für weitere Hilfe |
gpg -o datei --export |
alle Schlüssel in datei exportieren |
gpg --import datei |
alle Schlüssel aus datei importieren |
gpg --send-keys Nutzer_ID |
Schlüssel von Nutzer_ID zum Schlüsselserver übertragen |
gpg --recv-keys Nutzer_ID |
Schlüssel von Nutzer_ID vom Schlüsselserver empfangen |
gpg --list-keys Nutzer_ID |
Schlüssel von Nutzer_ID auflisten |
gpg --list-sigs user_ID |
Signaturen von Nutzer_ID auflisten |
gpg --check-sigs Nutzer_ID |
Signaturen von Nutzer_ID überprüfen |
gpg --fingerprint Nutzer_ID |
Fingerabdruck von Nutzer_ID überprüfen |
gpg --refresh-keys |
lokalen Schlüsselring aktualisieren |
Hier die Bedeutung des Vertrauenscodes:
Tabelle 10.8. Liste der Bedeutungen des Vertrauenscodes
Code | Beschreibung des Vertrauenscodes |
---|---|
- |
Kein Besitzervertrauen zugewiesen / noch nicht berechnet |
e |
Vertrauensberechnung fehlgeschlagen |
q |
nicht genügend Informationen für Berechnung |
n |
diesem Schlüssel niemals vertrauen |
m |
gerade noch vertrauenswert |
f |
voll vertrauenswert |
u |
absolut vertrauenswert |
Folgendes lädt meinen Schlüssel "1DD8D791
" auf den
populären Schlüsselserver "hkp://keys.gnupg.net
" hoch:
$ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791
Ein gutes Standard-Schlüsselserver-Setup in
"~/.gnupg/gpg.conf
" (oder dem alten Ort
"~/.gnupg/options
") enthält folgendes:
keyserver hkp://keys.gnupg.net
Mit dem folgenden Befehl beziehen Sie unbekannte Schlüssel vom Schlüsselserver:
$ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\ cut -d ':' -f 5| sort | uniq | xargs gpg --recv-keys
Es gab einen Fehler in OpenPGP Public
Key Server (Versionen vor 0.9.6), durch den Schlüssel mit mehr als
zwei Unterschlüsseln korrumpiert wurden. Das neue
gnupg
-Paket (>1.2.1-2) kann mit diesen korrumpierten
Unterschlüsseln umgehen. Lesen Sie in gpg
(1) den
Abschnitt zur Option "--repair-pks-subkey-bug
".
Hier einige Beispiele für die Verwendung von GNU Privacy Guard mit Dateien:
Tabelle 10.9. Liste von GNU Privacy Guard-Befehlen mit Dateien
Befehl | Beschreibung |
---|---|
gpg -a -s datei |
Signieren von datei in die ASCII-bewehrte datei.asc |
gpg --armor --sign datei |
" |
gpg --clearsign datei |
Signieren einer Nachricht mit Klartextsignatur |
gpg --clearsign datei|mail foo@example.org |
Versenden einer Nachricht mit Klartextsignatur an
foo@example.org |
gpg --clearsign --not-dash-escaped patch-datei |
Klartext-signieren von patch-datei |
gpg --verify datei |
eine klartextsignierte datei verifizieren |
gpg -o datei.sig -b datei |
Erzeugen einer losgelösten Signatur |
gpg -o datei.sig --detach-sig datei |
" |
gpg --verify datei.sig datei |
Verifizieren von datei mit datei.sig |
gpg -o crypt_datei.gpg -r name -e datei |
Verschlüsselung mit öffentlichem Schlüssel für name von datei in Binärdatei crypt_datei.pgp |
gpg -o crypt_datei.gpg --recipient name --encrypt datei |
" |
gpg -o crypt_datei.asc -a -r name -e datei |
Verschlüsselung mit öffentlichem Schlüssel für name von datei in ASCII-bewehrte Datei crypt_datei.pgp |
gpg -o crypt_datei.gpg -c datei |
symmetrische Verschlüsselung von "datei" in crypt_datei.gpg |
gpg -o crypt_datei.gpg --symmetric datei |
" |
gpg -o crypt_datei.asc -a -c datei |
symmetrische Verschlüsselung für name von datei in ASCII-bewehrte Datei crypt_datei.asc |
gpg -o datei -d crypt_datei.gpg -r name |
Entschlüsselung |
gpg -o datei --decrypt crypt_datei.gpg |
" |
Fügen Sie Folgendes zu "~/.muttrc
" hinzu, um zu
verhindern, dass das langsame GnuPG automatisch gestartet wird, während es
durch Drücken von "S
" im Indexmenü händisch gestartet
werden kann:
macro index S ":toggle pgp_verify_sig\n" set pgp_verify_sig=no
The gnupg
plugin let you run GnuPG transparently for
files with extension ".gpg
", ".asc
",
and ".ppg
".[4]
$ sudo aptitude install vim-scripts $ echo "packadd! gnupg" >> ~/.vim/vimrc
md5sum
(1) enthält ein Werkzeug, um über die in RFC1321 beschriebene Methode eine Digest-Datei zu
erzeugen und jede Datei darüber zu verifizieren:
$ md5sum foo bar >baz.md5 $ cat baz.md5 d3b07384d113edec49eaa6238ad5ff00 foo c157a79031e1c40f85931829bc5fc552 bar $ md5sum -c baz.md5 foo: OK bar: OK
![]() |
Anmerkung |
---|---|
Die Berechnung der MD5-Prüfsumme ist weniger CPU-intensiv als die für die krypthographische Signatur durch GNU Privacy Guard (GnuPG). Üblicherweise ist nur die Digest-Datei der obersten Ebene (z.B. das Wurzelverzeichnis eines Verzeichnisbaums) kryptographisch signiert, um die Datenintegrität sicherzustellen. |
Es gibt viele Werkzeuge für die Zusammenführung von Quellcode. Folgende Befehle haben meine Aufmerksamkeit erregt:
Tabelle 10.10. Liste von Werkzeugen zur Quellcode-Zusammenführung
Paket | Popcon | Größe | Befehl | Beschreibung |
---|---|---|---|---|
patch
|
V:123, I:721 | 248 | patch (1) |
eine diff-Datei auf ein Original anwenden |
vim
|
V:102, I:404 | 3286 | vimdiff (1) |
zwei Dateien nebeneinander in vim vergleichen |
imediff
|
V:0, I:0 | 170 | imediff (1) |
interaktives Zwei-/Dreiwege-Zusammenführungs-Werkzeug mit Vollbildschirmmodus |
meld
|
V:14, I:38 | 3065 | meld (1) |
vergleichen und zusammenführen von Dateien (GTK) |
wiggle
|
V:0, I:0 | 174 | wiggle (1) |
zurückgewiesene Patches anwenden |
diffutils
|
V:883, I:993 | 1598 | diff (1) |
Dateien Zeile für Zeile vergleichen |
diffutils
|
V:883, I:993 | 1598 | diff3 (1) |
drei Dateien Zeile für Zeile vergleichen und zusammenführen |
quilt
|
V:3, I:32 | 788 | quilt (1) |
Serien von Patches verwalten |
wdiff
|
V:8, I:69 | 644 | wdiff (1) |
Wort-für-Wort-Unterschiede zwischen Textdateien anzeigen |
diffstat
|
V:14, I:146 | 81 | diffstat (1) |
eine Grafik der Veränderungen für eine diff-Datei erstellen |
patchutils
|
V:16, I:143 | 232 | combinediff (1) |
einen kumulativen Patch aus zwei inkrementellen Patches erzeugen |
patchutils
|
V:16, I:143 | 232 | dehtmldiff (1) |
ein Diff aus einer HTML-Seite extrahieren |
patchutils
|
V:16, I:143 | 232 | filterdiff (1) |
Diffs aus einer Diff-Datei extrahieren oder entfernen |
patchutils
|
V:16, I:143 | 232 | fixcvsdiff (1) |
von CVS erstellte Diff-Dateien, die patch (1) falsch
interpretiert, reparieren |
patchutils
|
V:16, I:143 | 232 | flipdiff (1) |
die Reihenfolge zweier Patches ändern |
patchutils
|
V:16, I:143 | 232 | grepdiff (1) |
anzeigen, welche Dateien von einem Patch entsprechend einem regulären Ausdruck modifiziert werden |
patchutils
|
V:16, I:143 | 232 | interdiff (1) |
Unterschiede zwischen zwei Unified-Diff-Dateien anzeigen |
patchutils
|
V:16, I:143 | 232 | lsdiff (1) |
zeigen, welche Dateien von einem Patch verändert werden |
patchutils
|
V:16, I:143 | 232 | recountdiff (1) |
Zähler und Offsets in vereinheitlichten Context-Diffs neu berechnen |
patchutils
|
V:16, I:143 | 232 | rediff (1) |
Offsets und Zähler eines hand-editierten Diffs bereinigen |
patchutils
|
V:16, I:143 | 232 | splitdiff (1) |
inkrementelle Patches aussortieren |
patchutils
|
V:16, I:143 | 232 | unwrapdiff (1) |
Patches von fehlerhaften Zeilenumbrüchen befreien |
dirdiff
|
V:0, I:2 | 166 | dirdiff (1) |
Unterschiede zwischen Verzeichnissen anzeigen und zusammenführen |
docdiff
|
V:0, I:0 | 555 | docdiff (1) |
zwei Dateien Wort-für-Wort / Buchstabe-für-Buchstabe vergleichen |
makepatch
|
V:0, I:0 | 102 | makepatch (1) |
erweiterte Patch-Dateien erzeugen |
makepatch
|
V:0, I:0 | 102 | applypatch (1) |
erweiterte Patch-Dateien anwenden |
Die folgenden Prozeduren extrahieren die Unterschiede zwischen zwei
Quelldateien und erzeugen vereinheitlichte Diff-Dateien
"file.patch0
" bzw. "file.patch1
",
abhängig vom Speicherort der Dateien:
$ diff -u file.old file.new > file.patch0 $ diff -u old/file new/file > file.patch1
Die Diff-Datei (alternativ auch Patch-Datei genannt) wird genutzt, um eine Programmaktualisierung zu senden. Die Seite, die die Änderungen empfängt, wendet die Aktualisierung wie folgt an:
$ patch -p0 file < file.patch0 $ patch -p1 file < file.patch1
If you have two versions of a source code, you can perform 2-way merge
interactively using imediff
(1) by the following.
$ imediff -o file.merged file.old file.new
If you have three versions of a source code, you can perform 3-way merge
interactively using imediff
(1) by the following.
$ imediff -o file.merged file.yours file.base file.theirs
Git is the tool of choice these days for the version control system (VCS) since Git can do everything for both local and remote source code management.
Debian stellt freie Git-Dienste über Debian Salsa bereit. Dokumentation finden Sie unter https://wiki.debian.org/Salsa.
Here are some Git related packages.
Tabelle 10.11. Liste von zu Git gehörigen Paketen und Befehlen
Paket | Popcon | Größe | Befehl | Beschreibung |
---|---|---|---|---|
git
|
V:312, I:494 | 36515 | git (7) |
Git, das schnelle, skalierbare, verteilte Versionsverwaltungssystem |
gitk
|
V:5, I:41 | 1749 | gitk (1) |
grafische Browser-Oberfläche mit Historie für Git-Depots |
git-gui
|
V:1, I:23 | 2343 | git-gui (1) |
grafische Oberfläche (ohne Historie) für Git |
git-email
|
V:0, I:11 | 993 | git-send-email (1) |
eine Patch-Sammlung aus Git als E-Mail versenden |
git-buildpackage
|
V:1, I:11 | 4187 | git-buildpackage (1) |
das Debian-Paketieren mit Git automatisieren |
dgit
|
V:0, I:1 | 496 | dgit (1) |
git interoperability with the Debian archive |
imediff
|
V:0, I:0 | 170 | git-ime (1) |
interactive git commit split helper tool |
stgit
|
V:0, I:0 | 603 | stg (1) |
Aufsatz für Git (Python) |
git-doc
|
I:14 | 12063 | Nicht verfügbar | offizielle Dokumentation für Git |
gitmagic
|
I:1 | 721 | Nicht verfügbar | "Git Magic", eine einfacher verständliche Anleitung für Git |
Sie möchten vielleicht wie folgt verschiedene globale Konfigurationsoptionen
in "~/.gitconfig
" zur Verwendung durch Git setzen,
z.B. Name und E-Mail-Adresse:
$ git config --global user.name "Name Surname" $ git config --global user.email yourname@example.com
You may also customize the Git default behavior by the following.
$ git config --global init.defaultBranch main $ git config --global pull.rebase true $ git config --global push.default current
Wenn Sie an CVS- oder Subversion-Befehle gewohnt sind, können Sie wie hier auch folgende Befehls-Alias setzen:
$ git config --global alias.ci "commit -a" $ git config --global alias.co checkout
Sie können wie folgt Ihre globale Konfiguration kontrollieren:
$ git config --global --list
Git operation involves several data.
The working tree which holds user facing files and you make changes to them.
The changes to be recorded must be explicitly selected and staged to the
index. This is git add
and git rm
commands.
The index which holds staged files.
Staged files will be committed to the local repository upon the subsequent
request. This is git commit
command.
The local repository which holds committed files.
Git records the linked history of the committed data and organizes them as branches in the repository.
The local repository can send data to the remote repository by git
push
command.
The local repository can receive data from the remote repository by
git fetch
and git pull
commands.
The git pull
command performs git
merge
or git rebase
command after git
fetch
command.
Here, git merge
combines two separate branches of history
at the end to a point. (This is default of git pull
without customization and may be good for upstream people who publish branch
to many people.)
Here, git rebase
creates one single branch of sequential
history of the remote branch one followed by the local branch one. (This is
pull.rebase true
customization case and may be good for
rest of us.
The remote repository which holds committed files.
The communication to the remote repository uses secure communication protocols such as SSH or HTTPS.
The working tree is files outside of the .git/
directory. Files inside of the .git/
directory hold the
index, the local repository data, and some git configuration text files.
Here is an overview of main Git commands.
Tabelle 10.12. Main Git commands
Git command | Funktion |
---|---|
git init |
ein (lokales) Depot erstellen |
git clone URL |
clone the remote repository to a local repository with the working tree |
git pull origin main |
update the local main branch by the remote repository
origin |
git add . |
add file(s) in the working tree to the index for pre-existing files in index only |
git add -A . |
add file(s) in the working tree to the index for all files including removals |
git rm filename |
remove file(s) from the working tree and the index |
git commit |
commit staged changes in the index to the local repository |
git commit -a |
add all changes in the working tree to the index and commit them to the local repository (add + commit) |
git push -u origin branch_name |
update the remote repository origin by the local
branch_name branch (initial invocation) |
git push origin branch_name |
update the remote repository origin by the local
branch_name branch (subsequent invocation) |
git diff treeish1 treeish2 |
show difference between treeish1 commit and treeish2 commit |
gitk |
GUI display of VCS repository branch history tree |
Here are some Git tips.
Tabelle 10.13. Git tips
Git command line | Funktion |
---|---|
gitk --all |
see complete Git history and operate on them such as resetting HEAD to another commit, cheery-picking patches, creating tags and branches ... |
git stash |
get the clean working tree without loosing data |
git remote -v |
check settings for remote |
git branch -vv |
check settings for branch |
git status |
show working tree status |
git config -l |
list git settings |
git reset --hard HEAD; git clean -x -d -f |
revert all working tree changes and clean them up completely |
git rm --cached filename |
revert staged index changed by git add filename |
git reflog |
get reference log (useful for recovering commits from the removed branch) |
git branch new_branch_name HEAD@{6} |
create a new branch from reflog information |
git remote add new_remote URL |
add a new_remote remote repository pointed by URL |
git remote rename origin upstream |
rename the remote repository name from origin to
upstream |
git branch -u upstream/branch_name |
set the remote tracking to the remote repository upstream
and its branch name branch_name . |
git remote set-url origin https://foo/bar.git |
change URL of origin |
git remote set-url --push upstream DISABLED |
disable push to upstream (Edit
.git/config to re-enable) |
git checkout -b topic_branch ; git push -u topic_branch
origin |
make a new topic_branch and push it to
origin |
git branch -m oldname newname |
rename local branch name |
git push -d origin branch_to_be_removed |
remove remote branch (new method) |
git push origin :branch_to_be_removed |
remove remote branch (old method) |
git checkout --orphan unconnected |
create a new unconnected branch |
git rebase -i origin/main |
reorder/drop/squish commits from origin/main to clean
branch history |
git reset HEAD^; git commit --amend |
squash last 2 commits into one |
git checkout topic_branch ; git merge --squash topic_branch
|
squash entire topic_branch into a commit |
git fetch --unshallow --update-head-ok origin
'+refs/heads/*:refs/heads/*' |
convert a shallow clone to the full clone of all branches |
git ime |
split the last commit into a series of file-by-file smaller commits
etc. (imediff package required) |
git repack -a -d; git prune |
repack the local repository into single pack (this may limit chance of lost data recovery from erased branch etc.) |
![]() |
Warnung |
---|---|
Nutzen Sie in der Tag-Zeichenkette keine Leerzeichen, auch wenn Werkzeuge
wie |
![]() |
Achtung |
---|---|
If a local branch which has been pushed to remote repository is rebased or
squashed, pushing this branch has risks and requires
|
![]() |
Achtung |
---|---|
Der direkte Aufruf eines |
![]() |
Tipp |
---|---|
If there is a executable file |
Hier finden Sie weitere Informationen:
Handbuchseite: git(1)
(/usr/share/doc/git-doc/git.html
)
git-Benutzerhandbuch (engl.)
(/usr/share/doc/git-doc/user-manual.html
)
gittutorial: Einführung in git
(engl.) (/usr/share/doc/git-doc/gittutorial.html
)
gittutorial-2: Einführung in
git - Teil 2 (engl.)
(/usr/share/doc/git-doc/gittutorial-2.html
)
Everyday GIT With 20 Commands
Or So (/usr/share/doc/git-doc/giteveryday.html
)
Git Magic
(/usr/share/doc/gitmagic/html/index.html
)
The version control systems (VCS) is sometimes known as the revision control system (RCS), or the software configuration management (SCM).
Here is a summary of the notable other non-Git VCS on the Debian system.
Tabelle 10.14. List of other version control system tools
Paket | Popcon | Größe | Werkzeug | VCS-Typ | Erläuterung |
---|---|---|---|---|---|
mercurial
|
V:6, I:44 | 1053 | Mercurial | verteilt | DVCS in Python und ein bisschen C |
darcs
|
V:0, I:7 | 23159 | Darcs | verteilt | DVCS mit schlauer Algebra von Patches (langsam) |
bzr
|
V:1, I:15 | 28 | Bazaar | verteilt | DVCS influenced by tla written in Python (historic) |
tla
|
V:0, I:2 | 1011 | GNU arch | verteilt | DVCS mainly by Tom Lord (historic) |
subversion
|
V:18, I:104 | 4873 | Subversion | fern | "CVS done right", newer standard remote VCS (historic) |
cvs
|
V:4, I:38 | 4620 | CVS | fern | previous standard remote VCS (historic) |
tkcvs
|
V:0, I:1 | 1498 | CVS, … | fern | GUI-Oberfläche von VCS-Depots (CVS, Subversion, RCS) |
rcs
|
V:3, I:19 | 562 | RCS | lokal | "Unix SCCS done right" (historic) |
cssc
|
V:0, I:2 | 2044 | CSSC | lokal | clone of the Unix SCCS (historic) |