Okay, der Titel ist vielleicht etwas verwirrend. Aber es gibt eine Sängerin Beth Ditto die u.a. Frontsängerin der Band Gossip war. Aber Ditto unter macOS ist einfach das Beste! Ich schwöre!

Wie bin ich überhaupt auf die Idee gekommen, dass ich über ein Terminal kopieren möchte? Nun, ich hatte ein manuelles Backup meiner wichtigsten Dateien anlegen wollen und einige Gigabyte an Daten auf meine externe Festplatte schieben. Drag & Drop, Copy & Paste, Ausschneiden usw. funktioniert natürlich super im Finder – bis auf eine kleine Kleinigkeit.

Ich habe eine relativ große und ausgeprägte Sample-Bibliothek die ich für meine Musikproduktionen unter Ableton Live nutze. Das sind einzelne Audio-Dateien mit Kicks, Hithats, Claps aber auch Bassounds, Loops, Synthesizer-Presets/Sounds usw. Sehr kleine Audio-Dateien mit Dateigrößen zwischen wenigen KB und mehreren MB, davon aber (sehr) viele. Knapp 260.000 Dateien liegen in meinem Sample-Ordner.

Diesen einfach mit „Drag & Drop“ oder „Auschneiden und Einfügen“ im Finder zu kopieren war leider nicht möglich, denn nach knapp 20 Minuten wurde der Kopiervorgang abgebrochen, weil wohl eine Datei so kaputt war, dass einfach abgebrochen wurde. Ich muss eigentlich auch nicht wissen, welche Datei betroffen ist, ich möchte einfach nur das ganze Verzeichnis so einfach wie möglich von A nach B bewegen. Ohne einzelne Ordner anpacken zu müssen.

Geholfen hat mir das Terminal und der Befehl „ditto“:

Usage: ditto [ <options> ] src [ ... src ] dst

    <options> are any of:
    -h                         print full usage
    -v                         print a line of status for each source copied
    -V                         print a line of status for every file copied
    -X                         do not descend into directories with a different device ID

    -c                         create an archive at dst (by default CPIO format)
    -x                         src(s) are archives
    -z                         gzip compress CPIO archive
    -j                         bzip2 compress CPIO archive
    -k                         archives are PKZip
    --keepParent               parent directory name src is embedded in dst_archive
    --arch archVal             fat files will be thinned to archVal
                               multiple -arch options can be specified
                               archVal should be one of "ppc", "i386", etc
    --bom bomFile              only objects present in bomFile are copied
    --norsrc                   don't preserve resource data
    --noextattr                don't preserve extended attributes
    --noqtn                    don't preserve quarantine information
    --noacl                    don't preserve ACLs
    --sequesterRsrc            copy resources via polite directory (PKZip only)
    --nocache                  don't use filesystem cache for reads/writes
    --hfsCompression           compress files at destination if appropriate
    --nopreserveHFSCompression don't preserve HFS+ compression when copying files
    --zlibCompressionLevel num use compression level 'num' when creating a PKZip archive
    --password                 request password for reading from encrypted PKZip archive
mika@Mikas-MBP ~ % 

Die Hilfe lässt sich einfach mit dem Befehl „ditto“ aufrufen. Aber im Kern ist es:

ditto [options] <quelle> <ziel>

Mit „ditto“ können auch Verzeichnisse zusammengeführt werden, Metadaten extrahiert werden und viele weitere tolle Dinge, aber für mich was es sehr hilfreich, dass der Kopiervorgang nicht abgebrochen wurde und ich zu jeder Datei auch – wenn gewünscht – eine Log bekomme z.B. mit dem Parameter „-V“:

ditto -V <quelle> <ziel>

Sollten Ordner kopiert werden, wo Administratorberechtigungen benötigt werden, setzt ein „sudo“ davor und tragt das entsprechende Passwort ein.

Natürlich kann man auch mit „cp“ oder auch „rsync“ arbeiten, aber für mich war „ditto“ die Lösung. Nutze ich gerne und daher den kleinen aber feinen Tipp von mir…