• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Ordner kopieren

Blotto-Nim

Granny Smith
Registriert
27.03.11
Beiträge
16
Hey,

Ich würde gerne in definierten Zeitabständen einen Ordner kopieren und ihn an einem anderen Ort speichern.

Da dachte ich Applescript wäre doch dafür sicher ne tolle Sache. Bin bislang noch sehr unerfahren im Umgang damit, aber habe mal ein sehr minimalistisches Script zusammengeschustert, um zu sehen ob es überhaupt funktioniert.
Dabei bin ich auf ein unvorhergesehenes Problem gestoßen:

Das Script macht an sich was es soll: Alle Inhalte des Ordners werden kopiert. Wird der Vorgang allerdings wiederholt kommt der Fehler:

"An dieser Stelle existiert bereits ein Ordner mit diesem Namen"

on idle
tell application "Finder"
set sourceFolder to "Macintosh HD:Users: xx : xxx : xxxx : xxxxx:"
set targetFolder to "Macintosh HD:Users:yyy:yyyy:yyyyy:yyyyyyy:"
duplicatesourceFoldertotargetFolder
end tell
return 600
end idle

Vielleicht gibt es hierfür ja eine Lösung, wie: Ordnerinhalte vergleichen und nur Abweichende Dateien kopieren (wäre natürlich sehr elegant) oder einfach automatisch alles überschreiben was schon da ist (wäre für mich völlig ausreichend)

Vielen Dank für eure Hilfe
 
Ich habe keine Ahnung vom Scrip-Schreiben, denke mir aber, dass der Befehl in einer bestimmten Phase "ersetze" lauten sollte.
Also vielleicht "kopiere und ersetze …"
Den Automator (Programmordner) hast du dir angesehen?
Salome, quakt hier ohne Sachkenntnis.
 
Das könnte funktionieren, wenn Du statt
Code:
duplicate sourceFolder to targetFolder
Code:
duplicate sourceFolder to targetFolder [B]with[/B] replacing
einsetzt. Dies allerdings under der Vorraussetzung, dass sich sourceFolder und targetFolder nicht auf dem selben Volume befinden, da sonst nicht kopiert sondern verschoben wird. Siehe auch: Apple hilfe

Viel Erfolg

Wiebke
 
Ich persönlich würde mir wohl eher ein Shellscript mit einem einzigen rsync-Aufruf basteln, das nicht immer den kompletten Ordner neu kopiert, sondern nur die Differenzen.
Dieses könnte man als Cronjob (bzw. unter OS X besser als launchd-Agent) zu bestimmten Zeitpunkten automatisiert starten lassen.
 
Vielen Dank für eure Antworten!

Ich hab jetzt noch einmal ein bischen daran rumgespielt und gKArs Idee mehr oder minder umgesetzt.
Hab im Applescript den "do shell script" Befehl verwendet. Das ganze sieht jetzt wie unten gezeigt aus und reicht für meine Bedürfnisse völlig: Es kopiert immer alle 10 min die geänderten Dateien in den anderen Ordner (Natürlich muss man das Script hierzu als Programm speichern, das sich nicht sofort automatisch beendet.
Für Verbesserungsvorschläge bin ich natürlich offen ;)

on idle -- um den return-Befehl nutzen zu können und so in periodischen Abständen die Befehle im idle zu wiederholen
do shell script "rsync -a --delete <Quell-Ordner(in der Form: User/Ordner/)> <Ziel-Ordner>"
-- die option "--delete" sorgt dafür, dass auch dateien gelöscht werden, die im Quell-Ordner gelöscht werden
return 600 -- Zeit in sec, die bsi zur nächsten Wiederholing verstreichen
end idle
 
Mit rsync würde ich es auch machen. Wenn du als Parameter "-au" verwendest, werden nur neuere / veränderte Dateien kopiert, was das alles sehr beschleunigt.