Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Unsichtbare Ordner mit Subfoldern per AppleScript umbenennen, Lösung gesucht

Unsichtbare Ordner mit Subfoldern per AppleScript umbenennen, Lösung gesucht

ratz-fatz
ratz-fatz28.07.1913:14
Situation:
Resilio Sync legt ein Backup von geänderten und gelöschten Files innerhalb des von Resilio synchronierten Ordners an. Der Pfad sieht so aus:
SynchronisierterOrdner .sync Archive PfadZumOrdnerInDemSichDieDateiGeändertHat GeänderteOderGelöschteDatei

Bei jedem Backup wird .sync (nebst Inhalt, auf den kommt es ja an) mit CCC auf das Backup-Medium gezogen. Dort liegt es dann und kann nur eingesehen werden, wenn man mittels Tastenkombination die Sichtbarkeit von Dateien und Verzeichnissen aktiviert (denn alles mit dem Punkt davor ist ja unsichtbar).

Dummerweise kann Hazel nicht mit unsichtbaren Ordnern arbeiten. Ich würde nämlich gern mit Hazel die .sync Ordner umbenennen und verschieben. Das macht das Backup übersichtlicher.

Jetzt suche ich nach einer Möglichkeit, diese Ordner per Workflow oder Script nach jedem Lauf des Backups von CCC an Ort und Stelle umbenennen zu lassen und Hazel erledigt dann den Rest.

Da sich die .sync Ordner nicht mehr innerhalb der von Resilio überwachten Ordner befinden, sind die darin befindlichen zusätzlichen Dateien (mit denen Resilio sein Sync-Setup konfiguriert) überflüssig und könnten im Rahmen des Scriptes gelöscht werden.

Ideal wäre eine Lösung, die ich einmalig für den entsprechenden Zielpfad konfiguriere und dann an CCC anhänge. Hat jemand eine Idee?
0

Kommentare

Embrace28.07.1913:41
Kannst du mit Hazel nicht auch ein Shellskript laufen lassen? Da einfach den Ordner per mv-Befehl umbenennen und verschieben.
0
ratz-fatz
ratz-fatz28.07.1913:43
Wenn ich wüsste, wie ich einen Shell Script (oder sonst einen anderen Script) schreiben soll, hätte ich mir die Frage hier ganz sicher gespart. ICH KANN DAS NICHT.
0
MikeMuc28.07.1914:12
Ich kann das auch nicht aber ich (und du auch) kennst Google und Google kennt dann ganz viele Lösungen für dein Problem
Leider hast du dich zwar sehr bemüht, deine Ordnerstrukturen zu beschreiben aber es wäre viel besser, wenn du einfach 2 Bildchen machst, in denen die Struktur vorher und "bereinigt" auf dem Backup zu sehen ist. Mußt du halt einmal alles sichtbar machen und per Hand aufräumen.
Ich bin mir sicher, das dann jemand daraus einen Ein- oder Zweizeiler fürs Terminal basteln kann.
CCC-Scripte sind ja nix anderes als eine Textdatei mit einer Headerzeile und dann "ein wenig Intelligenz"
Also erstmal ein Vorher - Nachher Beispiel posten, der Rest ist dann viel einfacher als du dir jetzt denkst.
+1
ratz-fatz
ratz-fatz28.07.1914:37
Kein Problem. So sieht das aktuell aus:


Und so soll das werden:


Alles was ich mit der Suchmaschine gefunden habe, bezieht sich auf AppleScripts, die eine Namensänderung von sichtbaren Ordnern durchführen. Ich mag mich täuschen, aber offensichtlich klappt es nicht, wenn der Ordner im Finder unsichtbar ist, bzw. einen Namen mit dem Punkt am Anfang hat. Und für dieses Problem suche ich nach einer Lösung.

Wenn sich dabei noch die Dateien
ID
IgnoreList
root_acl_entry
StreamsList

löschen lassen, wäre das natürlich der absolute Hammer, denn diese Dateien werden ausserhalb des Syncverzeichnisses nicht mehr gebraucht.
0
ratz-fatz
ratz-fatz28.07.1914:45
Nachtrag: Die Dateien
ID
IgnoreList
root_acl_entry
StreamsList
klammere ich global im Backup von CCC aus, die sind dann auf dem Ziel nicht existent. Dieser Teil des Problems ist somit gelöst, verbleibt die Aufgabe, den unsichtbaren Ordner umzubenennen.
0
MikeMuc28.07.1915:55
Also mit ApplesScript bist du bei CCC auf dem falschen Dampfer unterwegs.CCC will klassische Unix Scripte. Alde bash etc. Vielleicht geht auch Python. Für CCC gibt es einige Beispielscripte, wie man Dinge vor & nach einem Backup erledigen kann. Theoretisch kann man Über solche Scripte auch Applescripte aufrufen, aber das ist eher "durch die Brust ins Aug und dann weiter ins Knie". Hab ich zwar auch schon mal gemacht (ein uraltes Tool von WD welches ein Display einer externen 2,5" Platte angesteuert hat; war nur per UI-Scripting zu erschlagen, dafür zeigt das Display immer das Datum des letzten Backups der Platte an anstatt deren Namen )

Wenn ich das so richtig verstehe, brauch man nur "irgendwas, was in der 3. Ebene den Punkt aus dem einzigen dort liegenden Ordnernamen entfernt". Alternativ könnte man es vielleicht auch so formulieren: Such alle Ordner ".sync" und entferne den Punkt daraus. Kundige Leute sollten das wohl mit 2 Zeilen im Terminal schaffen.
Ergo suchen wir bei Google mal nach "bash find rename" und nehmen den ersten Treffer:

Wenn das abgehandelt für dich im Terminal klappt, ab in eine Textdatei und CCC am Ende machen lassen Notfalls dort fragen, wie du alle Ordner namens ".sync" auf einer externen Platte finden lassen kannst und den Punkt los wirst
0
Embrace28.07.1922:46
Du könntest es mal damit probieren:

#!/bin/bash

find "$2" -maxdepth 1 -type d -print0 |
  while IFS= read -rd '' directory
    do
        if [ -d "$directory/.sync" ]; then
            mv "$directory/.sync" "$directory/NameOhnePunktAmAnfang"
        fi
    done

  • TextEdit öffnen
  • Sicherstellen, dass Format reiner Text ist (falls ein Lineal zu sehen ist: in der Menüleiste Format > In reinen Text umwandeln)
  • Den Code einfügen
  • Sichern als sync.sh
  • In CCC in den erweiterten Einstellungen bei Nach dem Kopieren von Dateien die sync.sh bei Shell-Script ausführen auswählen
  • Klonen und berichten 😅
+1
Embrace29.07.1900:13
Sorry, sehe jetzt erst, dass du ja die .sync-Ordner innerhalb von _CCC SafetyNet ändern willst. Der Code oben macht den .sync-Ordner im Zielverzeichnis sichtbar (nicht im SafetyNet-Ordner).

Der Code muss also noch angepasst werden, damit das was du willst erreicht wird. Das hängt dann davon ab, wann CCC die Verzeichnisse im SafetyNet-Ordner erstellt (vor oder nach dem Skript). Da ich CCC nicht habe und es daher nicht testen kann, hilft bestimmt jemand anderes aus dem Forum.

😊
0
MikeMuc29.07.1908:08
Embrace
Na ich hoffe doch mal ganz stark, das das Nachherscript erst dann ausgeführt wird wenn wirklich alles fertig ist. Und die Saftyordner werden ganz sicher zu zu Begin bzw spätestens dann erstellt, wenn CCC merkt, das es darin Dateien zu erstellen hat
Aber wie beschränkt man nun die Suche auf ein bestimmtes externes Volume?
So wie der Code aussieht, findet er doch überall die unsichtbaren .sync Ordner, auch im Backup?
0
ratz-fatz
ratz-fatz29.07.1908:50
Also zuerst mal herzlichen Dank, @Embrace! Ich werde darauf einfach mal aufsetzen, komme allerdings erst wieder am Wochenende dazu, das auszuprobieren.

Eventuell noch eine hilfreiche Anmerkung an andere, die hier mitlesen. Ich bin derzeit ziemlich erfolgreich mit Resilio Sync als Alternative zur Dropbox unterwegs. Der Sync läuft komplett Inhouse und nur für den Fall, dass ein Mitarbeiter unterwegs Zugriff braucht, wird dafür ein separates Verzeichnis frei geschaltet, dass dann auch über externe Relay- und Tracker Server läuft. Die Lösung ist schnell und unkompliziert zu administrieren. Und sie kostet einmalig um die 90 €, wenn man die Familienlizenz kauft. Was die Performance betrifft, besteht kein Unterschied zur Free-Version. Und gegenüber Dropbox liegt der Performance-Vorteil mindestens beim Faktor 1,5 bis 2. Die Möglichkeit, das auf einem Raspy oder NAS zu installieren, kommt noch hinzu.

Zurück zu meinem „Problem“ – was ja eigentlich keins ist, denn es geht ja „nur“ um die fein säuberliche Ablage der Backups. Der Zugriff auf die Daten besteht ja über den kleinen Umweg, die unsichtbaren Verzeichnisse im Finder (temporär) sichtbar zu machen.

Mit Resilio (nein, bin mit denen nicht verwandt) habe ich die Versionierung und Absicherung einer Time Machine. Dateigrößen, Versionierungsdauer und Datenvolumina kann ich zudem ziemlich fein auf die Aufgabe am Arbeitsplatz abstimmen. Daten aus Windows sind (ohne dabei eine VM als Datenballast mit sich rum zu schleppen) problemlos integrierbar. Es werden die Extended Atributes (xattrs) unterstützt – das macht noch nicht mal die iCloud.

Nachdem ich gestern (mal wieder) eine Mail von Dropbox bekommen habe, in der mir freundlich mitgeteilt wird, dass ich dem Verkauf meiner Daten an Dritte zustimme, ist die Lösung mit Resilio für mich jetzt eine gangbare Alternative geworden. Wie gesagt, man muss sich damit ein wenig beschäftigen – aber für mich als Noob ist das unter dem Strich weniger Stress als das Aufsetzen einer OwnCloud oder was auch immer.

Disclaimer: Alles meine ganz persönliche Meinung.
0
Embrace29.07.1909:35
Wenn das Skript wirklich ganz am Schluss läuft, könnte man es damit umsetzen:

#!/bin/bash

find "$2/_CCC SafetyNet" -maxdepth 2 -type d -print0 |
  while IFS= read -rd '' directory
    do
        if [ -d "$directory/.sync" ]; then
            mv "$directory/.sync" "$directory/NameOhnePunktAmAnfang"
        fi
    done

Ist halt null optimiert 😅. Besser wäre, nur den zuletzt hinzugefügten Ordner im _CCC SafetyNet zu durchlaufen.
+1
MikeMuc29.07.1910:40
Ja, weil bei mir das Script das Volume dann abmeldet / auswirft und noch schnell ne Mail verschickt
Mit dem Script „davor“ lasse ich das externe Volume mounten. Denn so ist die restliche Zeit Ruhe im Karton und die Platte erfordert auch keine Gedenksekunden wenn sie bei einem Speichern unter Dialog meint, erst aufwachen zu müssen
0
Embrace13.08.1914:58
ratz-fatz

Gibt es hier eigentlich ein Update?
0
ratz-fatz
ratz-fatz13.08.1915:00
Ja. Ich habe das mittlerweile mit Hazel gelöst.
+1

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.