Je voudrais mettre en place une méthode automatisée d'archivage des fichiers dans OS X Lion. Par archivage, je veux dire en utilisant la fonction de compression HFS + sur un dossier spécifique et que chaque fichier que je déplace dans ce dossier soit automatiquement compressé. Je pense à l'utiliser pour archiver de gros fichiers que je n'utilise pas souvent, mais sans avoir à créer manuellement des archives compressées et à les extraire au cas où j'en aurais besoin.
Je suis tombé sur l'outil afsctool ( brew install afsctool
), qui peut, via la ligne de commande, appliquer la compression HFS + à un dossier et à tous les fichiers qu'il contient . Mais je crois qu'il n'active pas la compression des futurs fichiers déplacés vers le dossier.
Le déplacement manuel de fichiers et l'exécution répétée d'une instruction de ligne de commande ne sont pas pratiques. Par conséquent, je suppose que j'aurais besoin d'utiliser un automate / AppleScript pour exécuter cela en deux étapes:
- Créez un script qui permet de déplacer n'importe quel fichier vers un dossier spécifique. Idéalement, une option nommée Archive accessible via un clic droit sur le fichier.
- Exécutez une instruction de ligne de commande
afsctool -c <folder>
pour activer la compression sur tous les nouveaux fichiers que vous venez de déplacer dans le dossier.
Je n'ai aucune expérience de l'automatisation ou d'AppleScript, je voudrais donc savoir par où commencer, en particulier en ce qui concerne la façon d'ajouter des actions au Finder et comment exécuter un outil de ligne de commande à partir d'un script.
Mises à jour
Le guide @kopischke fonctionne bien. Le script lui-même, j'ai fait sur la base de la réponse de @mark, mais en utilisant afsctool -c <folder>
, au lieu de ditto
. Voici le script: il devrait être mis~/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
Comme afsctool chez MobileMe n'est plus disponible, il y a diimdeep / afsctool chez GitHub, actuellement 1.6.4.
Aussi afsctool dans MacPorts où ils sont au courant du problème MobileMe mais peut-être pas au courant de la source sur GitHub.
Réponses:
La réponse à votre question comporte deux parties.
Comment ajouter un élément de menu contextuel du Finder aux fichiers «Archive»: cela est facile à réaliser en créant un service Automator (Mac OS X Automation a une bonne vue d' ensemble de ce que les services Automator introduits dans OS X 10.6 peuvent faire):
~/Library/Services
) sous «Archive».vous avez maintenant un nouveau menu de service et une entrée de menu contextuel (en fonction du nombre de services actifs: soit au premier niveau de menu, soit dans le sous-menu "Services") appelé "Archive" qui déplacera le fichier ou le dossier sélectionné vers votre cible dossier.
Comment automatiser la compression HFS + des fichiers ajoutés à votre dossier cible: il existe plusieurs façons d'y parvenir. Vous pouvez bien sûr simplement ajouter cette étape à votre service d'archivage. L'inconvénient de cette approche est qu'aucune compression ne sera appliquée si des fichiers ou des dossiers sont ajoutés au dossier en dehors du service, bien sûr. Une meilleure approche serait de tout compresser automatiquement dans le dossier, sans dépendre du vecteur d'entrée ou de l'interaction de l'utilisateur.
Une façon consiste, comme vous l'avez découvert, à exécuter un utilitaire de compression chaque fois qu'un fichier ou un dossier est ajouté à votre dossier surveillé:
do shell script
commande - voir la documentation liée;adding folder items
- ce qui signifie qu'il réagit aux fichiers nouvellement ajoutés; voir le Guide du langage Applescript pour la référence complète ) . La configuration des actions sur les dossiers se trouve dans le menu des services des dossiers du Finder (dans le menu contextuel également).Une alternative à toute l'approche de script consiste à utiliser les clusters de LateNiteSoft - un autre logiciel commercial, qui ne fait qu'appliquer automatiquement (et réappliquer , si nécessaire) la compression HFS + au contenu des dossiers surveillés.
la source
@williamvoor: Le script échoue avec les chemins de fichier qui contiennent des espaces, car
set the file_name to the POSIX path of this_item
il ne s'échappe pas correctement. Corrigez la ligne appropriée de votre code à ceci:Explication : l'argument nom_fichier d'afcstool est entouré de guillemets, qui eux-mêmes dans le code AppleScript sont échappés afin d'être correctement transmis à l'environnement de ligne de commande.
Méta-sujet : Comme je manque de points de réputation, je ne pouvais pas commenter à la position appropriée (= au propre message de @williamvoor), donc je le poste comme une propre réponse et je vous demande de modifier le changement de code dans votre message, et donnez-moi un coup de pouce, afin que je gagne assez de réputation, me permettant de commenter directement à l'avenir. Merci!
Après cela, moi ou l'administrateur et je pourrais supprimer mon message.
la source
Ce fil donne un applescript à utiliser comme une action de dossier qui compressera les fichiers au fur et à mesure qu'ils sont ajoutés
la source
--hfsCompression
optionditto
- bonne! Mais votre réponse ne répond pas à la question d'OP concernant l'intégration d'un script mobile dans le Finder, elle déplace les fichiers déposés dans le dossier d'archive vers un autre dossier (ce qui, je pense, serait une redirection de plus que OP prévoyait de le faire) et il demandera l'authentification à chaque fois (ennuyeux dans un contexte d'automatisation).Clusters
Compression de dossiers MoreSpace
Préférence
De ces deux, je trouve les clusters plus matures et plus faciles à utiliser - probablement un meilleur choix pour cette question.
Procéder avec prudence
Dans un cas de bord, une perte de données silencieuse peut se produire avec des utilisations tierces d'AppleFSCompression. D'après ce que je peux dire, c'est un bug dans le système d'exploitation, et peut se produire uniquement lorsqu'il y a un manque extraordinaire d'espace libre. Je vais transmettre le bug à Apple.
la source