Ich versuche, einen Verzeichnisbaum zu rekursiv zu kopieren, wobei Hardlinks in die Datei beibehalten werden. Bei Verwendung von gnu cp würde dies mit dem Flag -l funktionieren. cp würde dann die Verzeichnisstruktur neu erstellen, müsste aber nicht den Inhalt jeder Datei kopieren.
Dies ist vorläufig für eine Sicherung. Zuerst möchte ich eine billige (fest verknüpfte) Kopie der vorherigen Sicherung erstellen und dann das Quellverzeichnis über diese Kopie neu synchronisieren. Grob:
cp -r -l yesterdays_backup todays_backup
rsync -a source_dir todays_backup
Leider unterstützt cp von OSX das Flag -l nicht, soweit ich das beurteilen kann, unterstützt cpio kein rekursives Kopieren. Die andere Alternative ist pax, aber das führt dazu, dass die gesamte Verzeichnisstruktur kopiert wird:
pax -rw backups/yesterdays_backup backups/todays_backup
transformiert:
yesterdays_backup
|
\source_dir (...)
zu:
todays_backup
|
\backups
\yesterdays_backup
\source_dir(...)
Es sollte einen einfachen / offensichtlichen Weg geben, dies zu tun, aber ich bin derzeit ratlos ... Gibt es Alternativen zu cpio und pax? Ich möchte vermeiden, gnu cp installieren zu müssen.
Timemachine ist mir bekannt, aber dadurch werden verschlüsselte Verzeichnisse nicht ordnungsgemäß inkrementell gesichert.
Antworten:
Es ist einfach genug, cp von MacPorts zu installieren. Wenn Sie jedoch kein portables Skript erstellen möchten oder haben, haben Sie drei Möglichkeiten:
rsync
cpio
pax
quelle
Es ist einfach, das
coreutils
Paket von MacPorts zu installieren, das dencp
umbenannten GNU- Befehl enthältgcp
.Noch besser ist jedoch, dass neuere Versionen von rsync, einschließlich der Version in OS X 10.5, die Option --link-dest unterstützen, wodurch die Notwendigkeit des anfänglichen cp-al entfallen sollte. Siehe hier . Es wird empfohlen, auch die Option -E zu verwenden, um erweiterte Attribute, ACLs usw. zu kopieren.
quelle
Obwohl
cpio
rekursives Kopieren nicht direkt unterstützt wird, können Sie die genaue Liste der Dateien, die Sie kopieren möchten, in die Standardeingabe einspeisen und den Effekt einer rekursiven Kopie mithilfe vonfind
Piped In erzielencpio
. Dies ist direkt analog zur Verwendung von GNUtar
mit den Optionen-T -
(dh lesen Sie die Liste der Dateien, die von der Standardeingabe gesichert werden sollen).quelle
Ich glaube, was Sie wollen, kann auch mit erreicht werden
ditto yesterdays_backup todays_backup
. Standardmäßigditto
wird eine rekursive Kopie erstellt, bei der feste Links, ACLs und erweiterte Attribute erhalten bleiben.quelle
+1 für Pauls Antwort. Das Gleiche wäre eine Option, aber nur, wenn es in Verbindung mit find verwendet wird - es behält harte Links bei, aber nur innerhalb von Verzeichnissen.
quelle