Dateibäume vollständig kopieren

Verschiedene Methoden, um Dateibäume möglichst frei von Informationsverlust zu kopieren.

cp

cp ist das Standard CLI Tool unter Linux/Unix zum Kopieren von Dateien. Die folgende Kommandozeile bezieht sich auf cp aus den GNU Coreutils 8.5

cp -a --sparse=auto

Dabei steht -a für: -R —no-dereference —preserve=all
(all = mode, ownership, timestamps, context, links, xattr).

--sparse=auto erkennt ob Quelle sparse-Dateien enthält und macht die entsprechenden Ziel-Dateien ebenfalls sparse. Die Angabe auto ist eine Heuristik; es kann sein, dass das Ziel sparse-amer ist als die Quelle.

Die Manpage macht keine Angaben darüber, ob cp auch mit ACLs umgehen kann.

rsync

rsync ist ein leistungsfähiges Tool zum effizienten unidirektionalen Abgleich von Dateibäumen. Die folgende Kommandozeile bezieht sich auf rsync version 3.0.7 protocoll version 30.

rsync -aHAXS --delete --numeric-ids

Die Option -a ist eine Abkürzung für -rlptgoD.
r = rekursiv, l = symlinks-as-symlinks, p = preserve permisions, t = preserve times, g = preserve group, o = preserve owner, D = preserve devices+specials.

Folgende Optionen sind in -a nicht enthalten, da sie die Performance beeinträchtigen und nicht immer nötig sind:

H = preserve hard links
A = preserve ACLs
X = preserve extended attributes
S = handle sparse files efficiently

--delete bedeutet: Dateien, die im Quellbaum nicht existieren, werden im Zielbaum gelöscht.
--numeric-ids bedeutet, dass kein Mapping der uids/gids mit den passwd/group Maps stattfindet.

tar

Die folgenden Infos beziehen sich auf GNU tar 1.23.

tar cvzf file.tar.gz --preserve --numeric-owner -S

--preserve ist eine Kurzform für -p und -s.
p = preserve permissions (default für root)
s = preserve order
S = handle sparse files efficiently

Die Manpage macht keine Angaben darüber, ob tar mit xattrs und ACLs umgehen kann.