cp, dd, ditto, rsync - Wo ist der Unterschied

martinibook

martinibook

Aktives Mitglied
Thread Starter
Dabei seit
20.08.2005
Beiträge
8.730
Reaktionspunkte
350
Hallo,

Momentan klone ich meine Festplatte mit rsync, das geht sehr schnell, jedoch kopiert rsync immer ._xy.jpg Dateien, welche eigentlich nur auftauchen, wenn man HFS+ verlässt. Da beide Platten aber HFS+ sind, sollten diese ja nicht auftauchen.

Jemand anderes benutzt ditto, das kommt anscheinend damit klar. Wieder jemand empfahl dd.

Wo ist also der Unterschied zwischen cp, dd, ditto und rsync?
 
Muß der Klon bootfähig sein?
 
Ja, das sollte er schon sein. Das mache ich dann aber nachher mit bless:

Code:
bless -folder $ziel/System/Library/CoreServices
 
dd macht dir halt eine block kopie, während cp, ditto und rsync file basiert arbeiten...
mit cp müsstest du -dpR verwenden...
ditto versteht sich mit file forks und metadaten besser als cp...
 
Okay, heißt dd kann man aber dann nicht Dateibasiert anwenden?

Und was wäre dann für mein Backup besser geeignet als rsync? ditto?
 
rsync hat den Vorteil z.B. gelöschte Dateien explizit im Backup noch aufzuheben. Das kann ein Vorteil sein. Ditto kenn ich nicht. Mit dd erstellst Du eine Image-Datei die Du erst wieder auf eine Platte zurückschreiben mußt um auf Dateien zugreifen zu können.
 
Gelöschte Dateien möchte ich nicht, die habe ich auf meiner Time Machine, der Klon soll nicht zugemüllt werden :)

So sieht das momentan aus, und bis auf diese ._ Dateien funktioniert das auch super:

Code:
/usr/bin/time /usr/bin/rsync -avE --delete --exclude-from "/Library/Application Support/backup_exclude.txt" $* $quelle $ziel/ > $pord/protokoll.log
 
welche rsync version hast du denn überhaupt?
meine macports version 3.0.6 sagt:
Capabilities:
64-bit files, 32-bit inums, 32-bit timestamps, 64-bit long ints,
socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
append, ACLs, xattrs, iconv, symtimes, file-flags
 
Die, die bei OS X dabei ist, müsste gleich mal nachschauen, wenn ich wieder unter OS X bin.
 
Momentan klone ich meine Festplatte mit rsync, das geht sehr schnell, jedoch kopiert rsync immer ._xy.jpg Dateien, welche eigentlich nur auftauchen, wenn man HFS+ verlässt. Da beide Platten aber HFS+ sind, sollten diese ja nicht auftauchen.
Das diese kopiert werden, willst du ja, oder nicht? Oder befinden sich am Zielort dann lauter ._-Dateien, die da nicht hingehören? Eigentlich sollten die am Ziel wieder korrekt zusammengesetzt sein, rsync scheint den Daten- und Resourcefork aber getrennt zu kopieren.

Solange Quelle und Ziel am Ende aber identisch sind, hast du ja was du willst.
 
Was mich nur nervt ist, dass rsync den Resourcefork aller Dateien jedes mal kopiert, das nervt ein klein wenig. Auf der Festplatte habe ich noch nicht geschaut, aber ich meine, dass die weg wären.
 
vielleicht solltest du mal wirklich rsync > 3.0 benutzen, weil es dann halt support für die xattr usw hat...
 
Code:
rsync --version
rsync  version 2.6.9  protocol version 29

MacPorts bekomme ich das her? Oder ist das bei Snow Leo dabei?
 
dd macht dir halt eine block kopie, während cp, ditto und rsync file basiert arbeiten.....
Unter linux/unix ist fast alles ein file, daraus folgt auch das sich cp, dd, cat wenn man sie ohne Parameter verwendet gleich verhalten. Beide nutze die selben POSIX-funktionen open(), read(), write() und close().
Genauso könnte man auch cat nutzen.

dd if=/dev/hda of=hda.dump
cp /dev/hda hda.dump
dd </dev/hda >hda.dump
cat </dev/hda >hda.dump

Alle vier Zeilen machen exakt das gleiche.
Der Unterschied von dd zu den anderen ist das dd auch aus Datenströmen ausschneiden kann, also sowas wie byte x bis byte y.
rsync ist dann eine nandere Baustelle wie hier aber schon genaug ausgeführt wurde.

Alles nachzulesen im sourcecode, oder einfach bei wikipedia wo ich jetzt auch mal auf die schnelle die 4 Bleistiftszeilen hergenommen habe.
http://de.wikipedia.org/wiki/Dd_(Unix)

Für einen echten klone kann mal also cat,cp oder dd nehmen. Das bleibt sich dann alles gleich.
 
Zurück
Oben Unten