Erstellen eines automatisierten HFS + -komprimierten Ordners


17

Ich möchte einen automatisierten Weg für die Archivierung von Dateien in OS X Lion einrichten. Unter Archivierung verstehe ich die Verwendung der HFS + -Komprimierungsfunktion für einen bestimmten Ordner und mache jede Datei, die ich in diesen Ordner verschiebe, automatisch komprimiert. Ich denke darüber nach, damit große Dateien zu archivieren, die ich nicht oft verwende, ohne jedoch komprimierte Archive manuell erstellen und bei Bedarf extrahieren zu müssen.

Ich bin auf das Tool afsctool ( brew install afsctool) gestoßen , das über die Befehlszeile die HFS + -Komprimierung auf einen Ordner und alle darin enthaltenen Dateien anwenden kann. Aber ich glaube, es aktiviert nicht die Komprimierung zukünftiger Dateien, die in den Ordner verschoben werden.

Das manuelle Verschieben von Dateien und das wiederholte Ausführen einer Befehlszeile ist unpraktisch. Aus diesem Grund würde ich vermutlich Automator / AppleScript benötigen, um dies in zwei Schritten auszuführen:

  1. Erstellen Sie ein Skript, mit dem Sie jede Datei in einen bestimmten Ordner verschieben können. Idealerweise eine Option namens Archiv, auf die Sie über einen Rechtsklick auf die Datei zugreifen können.
  2. Führen Sie eine Befehlszeilenanweisung aus afsctool -c <folder>, um die Komprimierung für alle neuen Dateien zu aktivieren, die gerade in den Ordner verschoben wurden.

Ich habe keine Erfahrung mit Automator oder AppleScript. Daher möchte ich wissen, wo ich anfangen soll, insbesondere, wie Aktionen zum Finder hinzugefügt werden und wie ein Befehlszeilentool über ein Skript ausgeführt wird.


Aktualisierung

@kopischke guide funktioniert gut. Das Skript selbst habe ich basierend auf der Antwort von @mark gemacht, aber mit afsctool -c <folder>, anstatt ditto. Hier ist das Skript: Es sollte eingefügt werden~/Library/Scripts/Folder Action Scripts

on adding folder items to this_folder after receiving these_items
repeat with i from 1 to number of items in these_items
    try
        set this_item to item i of these_items
        tell application "Finder"
            set the file_name to the POSIX path of this_item
        end tell
        set cmd to "/usr/local/bin/afsctool -c " & file_name
        do shell script cmd
    on error the error_message number the error_number
        display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1

    end try
end repeat
end adding folder items to

Da afsctool bei MobileMe nicht mehr verfügbar ist, gibt es diimdeep / afsctool bei GitHub, derzeit 1.6.4.

Auch afsctool in MacPorts, wo sie das MobileMe-Problem kennen, aber möglicherweise die Quelle bei GitHub nicht kennen.


Gute Frage. Welche Kompressionsraten sind davon zu erwarten?
n1000

Antworten:


6

Die Antwort auf Ihre Frage besteht aus zwei Teilen.

  1. So fügen Sie ein Finder-Kontextmenüelement zu "Archiv" -Dateien hinzu: Dies ist einfach durch Erstellen eines Automator-Dienstes zu erreichen (Mac OS X Automation bietet einen guten Überblick über die Funktionen der in OS X 10.6 eingeführten Automator-Dienste):

    • Starten Sie Automator und wählen Sie "Service", wenn Sie zur Eingabe des zu erstellenden Workflows aufgefordert werden.
    • Wählen Sie im Dropdown-Menü "Dienst erhält" die Option "Dateien oder Ordner" aus (ungefähre Übersetzungen - ich arbeite auf einem deutschen System). Optional können Sie die Dropdown-Liste "In" auf "Finder" setzen.
    • Fügen Sie eine Aktion "Ausgewählte Finder-Objekte abrufen" hinzu.
    • Fügen Sie darunter eine Aktion "Finder-Objekte verschieben" hinzu und legen Sie sie in Ihrem Zielordner fest.
    • Speichern Sie Ihren Dienst am Standardspeicherort ( ~/Library/Services) als "Archiv".

    Sie haben jetzt ein neues Dienstmenü und einen neuen Kontextmenüeintrag (abhängig von der Anzahl der aktiven Dienste: entweder in der ersten Menüebene oder im Untermenü "Dienste") namens "Archiv", mit denen die ausgewählte Datei oder der ausgewählte Ordner auf Ihr Ziel verschoben wird Mappe.

  2. So automatisieren Sie die HFS + -Komprimierung von Dateien, die zu Ihrem Zielordner hinzugefügt wurden: Es gibt verschiedene Möglichkeiten, dies zu erreichen. Sie können diesen Schritt natürlich auch einfach zu Ihrem Archivierungsservice hinzufügen. Der Nachteil dieses Ansatzes ist natürlich, dass keine Komprimierung angewendet wird, wenn Dateien oder Ordner zu einem Ordner außerhalb des Dienstes hinzugefügt werden. Ein besserer Ansatz wäre, alles im Ordner automatisch komprimieren zu lassen, ohne auf den Eingabevektor oder die Benutzerinteraktion angewiesen zu sein.

    Wie Sie festgestellt haben, können Sie ein Komprimierungsprogramm jedes Mal ausführen lassen, wenn eine Datei oder ein Ordner zu Ihrem überwachten Ordner hinzugefügt wird:

    • Der Weg, ein Shell-Dienstprogramm in AppleScript zu starten, ist der do shell scriptBefehl - siehe die verknüpfte Dokumentation;
    • Die integrierte Möglichkeit, Dateisystemereignisse in einem AppleScript zu nutzen , besteht in der Verwendung von Ordneraktionen , mit denen AppleScripts bei Änderungen in einem überwachten Ordner aufgerufen werden. Auf welche Ereignisse das Skript reagiert, wird vom Skript selbst über die von ihm bereitgestellten Handler festgelegt (beispielsweise hat das Skript in Marks Antwort einen Handler für adding folder items- das heißt, es reagiert auf neu hinzugefügte Dateien; die vollständige Referenz finden Sie im Applescript Language Guide ). . Die Konfiguration der Ordneraktionen finden Sie im Dienste-Menü der Ordner im Finder (auch im Kontextmenü).
    • Eine turbogeladene Alternative zu Folder Actions ist Paul Kims Hazel (kommerzielle Software), die eine regelbasierte Verarbeitung und eine Vielzahl von Kriterien für die Ereignisbehandlung im Dateisystem hinzufügt, die weit über das hinausgehen, was Sie mit einfachen Folder Actions erreichen können Planen Sie, mehr oder komplexere Aufgaben entsprechend Ihrer aktuellen Planung auszuführen.

    Eine Alternative zum gesamten Skriptansatz ist die Verwendung von LateNiteSofts Clustern - einer anderen kommerziellen Software, die nichts anderes tut, als die HFS + -Komprimierung automatisch auf den Inhalt überwachter Ordner anzuwenden (und bei Bedarf erneut anzuwenden).


Danke für deine Antwort. Ich werde versuchen, ein AppleScript als Ordneraktion auszuführen. Ich bin mir der Cluster bewusst, und was ich versuche zu erreichen, ist genau das (die Cluster eines armen Mannes);)
Boj

@williamvoor: Freut mich wenn helfen könnte. Würde es Ihnen etwas ausmachen, die Antwort zu akzeptieren? Das ist das Häkchen :).
kopischke

Die Ordner-Aktionsskriptlösung funktioniert. Das Drehbuch selbst habe ich auf die Frage geklebt.
Boj

5

@williamvoor: Das Skript schlägt mit Dateipfaden, die Leerzeichen enthalten, fehl, da set the file_name to the POSIX path of this_itemes nicht richtig maskiert wird. Korrigieren Sie die entsprechende Codezeile:

set cmd to "/Users/sn/bin/bin/afsctool -c \"" & file_name & "\""

Erläuterung : Das Argument dateiname von afcstool ist in Anführungszeichen gesetzt, die im AppleScript-Code selbst mit einem Escapezeichen versehen sind, um korrekt an die Befehlszeilenumgebung übergeben zu werden.

Meta-Topic : Da mir Reputationspunkte fehlen, konnte ich an der entsprechenden Stelle (= zu @williamvoors eigenem Posting) keinen Kommentar abgeben. Deshalb poste ich diesen als eigene Antwort und bitte Sie, den Code in Ihrem Posting zu ändern. und gib mir einen Daumen hoch, damit ich genug Ansehen bekomme und in Zukunft direkt kommentieren kann. Vielen Dank!

Danach konnte ich oder und admin meinen Beitrag löschen.


3

Dieser Thread gibt ein Applescript an, das als Ordneraktion verwendet wird und Dateien beim Hinzufügen komprimiert

on adding folder items to thisFolder after receiving theseItems
    set destinationPath to "/POSIX path/to/destination/folder"
    repeat with thisItem in theseItems
        set cmd to "ditto --hfsCompression " & quoted form of POSIX path of thisItem & " " & destinationPath
        do shell script cmd with administrator privileges
    end repeat
end adding folder items to

Wusste nicht über die --hfsCompressionOption in ditto- gut! Ihre Antwort beantwortet jedoch nicht die Frage von OP nach der Integration eines sich bewegenden Skripts in Finder, sondern verschiebt Dateien, die im Archivordner abgelegt wurden, in einen anderen Ordner (was meiner Meinung nach eine Umleitung mehr wäre, als OP geplant hatte) und fordert zur Authentifizierung auf jedes Mal (ärgerlich in einem Automatisierungskontext).
kopischke

0

Cluster

… Nutzt die Dateikomprimierungstechnologie von Mountain Lion, Lion und Snow Leopard…

MoreSpace-Ordner-Komprimierung

… Die HFS + -Komprimierung wirkt sich am besten auf nicht komprimierte Dateiformate wie Text- und Datendokumente, Datenbanken und Postfächer aus. Eine typische Mail-Mailboxgröße kann um bis zu 50% reduziert werden. …

Präferenz

Von diesen beiden finde ich Cluster ausgereifter und benutzerfreundlicher - wahrscheinlich besser für diese Frage geeignet.


Mit Vorsicht fortfahren

In einem Edge-Fall kann es bei der Verwendung von AppleFSCompression durch Dritte zu unbeaufsichtigten Datenverlust kommen. Soweit ich weiß, handelt es sich um einen Fehler im Betriebssystem, der möglicherweise nur dort auftritt, wo außergewöhnlich wenig freier Speicherplatz vorhanden ist. Ich werde den Fehler an Apple weiterleiten.


1
Beide scheinen jetzt eingestellt worden zu sein.
EpicVoyage
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.