Me gustaría configurar una forma automatizada para archivar archivos en OS X Lion. Al archivar me refiero a usar la función de compresión HFS + en una carpeta específica, y hacer que cada archivo que muevo a esta carpeta se comprima automáticamente. Estoy pensando en usar esto para archivar archivos grandes que no uso con frecuencia, pero sin tener que crear manualmente archivos comprimidos y tener que extraerlos en caso de que los necesite.
Encontré la herramienta afsctool ( brew install afsctool
), que puede, a través de la línea de comandos, aplicar compresión HFS + a una carpeta y a todos los archivos que contiene . Pero creo que no activa la compresión de futuros archivos movidos a la carpeta.
Mover archivos manualmente y ejecutar una instrucción de línea de comando repetidamente es inconveniente. Por lo tanto, supongo que necesitaría usar el automatizador / AppleScript para ejecutar esto en dos pasos:
- Cree un script que permita mover cualquier archivo a una carpeta específica. Idealmente, una opción llamada Archivo accesible mediante clic derecho en el archivo.
- Ejecute una instrucción de línea de comando
afsctool -c <folder>
para activar la compresión en todos los archivos nuevos que acaba de mover a la carpeta.
No tengo experiencia en el uso de automatizadores o AppleScript, por lo que me gustaría saber por dónde empezar, especialmente con respecto a cómo agregar acciones al Finder y cómo ejecutar una herramienta de línea de comandos desde un script.
Actualizaciones
@kopischke guía funciona bien. El script en sí, lo hice en base a la respuesta de @mark, pero usando afsctool -c <folder>
, en lugar de ditto
. Aquí está el guión: se debe poner en~/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
Dado que afsctool en MobileMe ya no está disponible, hay diimdeep / afsctool en GitHub, actualmente 1.6.4.
También afsctool en MacPorts, donde conocen el problema de MobileMe pero tal vez desconocen la fuente en GitHub.
Respuestas:
Hay dos partes en la respuesta a su pregunta.
Cómo agregar un elemento del menú contextual del Finder a los archivos "Archive": esto es fácil de lograr mediante la creación de un Servicio de Automator (Mac OS X Automation tiene una buena visión general de lo que pueden hacer los servicios de Automator introducidos en OS X 10.6):
~/Library/Services
) como "Archivo".ahora tiene un nuevo menú de servicio y entrada de menú contextual (dependiendo del número de servicios activos: ya sea en el primer nivel de menú o en el submenú "Servicios") llamado "Archivo" que moverá el archivo o carpeta seleccionado a su destino carpeta.
Cómo automatizar la compresión HFS + de los archivos agregados a su carpeta de destino: hay varias formas de lograrlo. Podría, por supuesto, simplemente agregar ese paso a su servicio de archivo. La desventaja de este enfoque es que no se aplicará compresión si los archivos o carpetas se agregan a la carpeta fuera del servicio, por supuesto. Un mejor enfoque sería hacer que todo en la carpeta se comprima automáticamente, sin depender del vector de entrada o la interacción del usuario.
Una forma es, como descubrió, hacer que se ejecute una utilidad de compresión cada vez que se agrega un archivo o carpeta a su carpeta vigilada:
do shell script
comando : consulte la documentación vinculada;adding folder items
, lo que significa que reacciona a los archivos recién agregados; consulte la Guía del lenguaje Applescript para obtener la referencia completa ) . La configuración de Acciones de carpeta se encuentra en el menú de servicios de carpetas en Finder (también en el menú contextual).Una alternativa a todo el enfoque de secuencias de comandos está utilizando de LateNiteSoft Clusters - otro software comercial, que no hace más que aplicar de forma automática (y volver a aplicar, cuando sea necesario) HFS + compresión al contenido de las carpetas controladas.
fuente
@williamvoor: el script falla con las rutas de archivo que contienen espacios, ya
set the file_name to the POSIX path of this_item
que no se escapa correctamente. Corrija la línea apropiada de su código para esto:Explicación : el argumento nombre_archivo de afcstool está rodeado de comillas, las cuales se escapan en el código AppleScript para poder ser entregadas correctamente al entorno de línea de comando.
Metatema : como me faltan puntos de reputación, no pude comentar en la posición adecuada (= a la publicación de @williamvoor), por lo tanto, lo publico como una respuesta propia y le pido que edite el cambio de código en su publicación, y denme me gusta, para que gane suficiente reputación, lo que me permitirá comentar directamente en el futuro. ¡Gracias!
Una vez hecho esto, yo o el administrador podría eliminar mi publicación.
fuente
Este hilo proporciona un applecript para usar como una acción de carpeta que comprime los archivos a medida que se agregan
fuente
--hfsCompression
opción enditto
- ¡buena! Pero su respuesta no responde a la pregunta de OP sobre la integración de un script en movimiento en Finder, mueve los archivos que caen en la carpeta de archivo a otra carpeta (que creo que sería una redirección más de lo que OP planeaba hacer) y solicitará autenticación cada vez (molesto en un contexto de automatización).Racimos
MoreSpace Carpeta de Compresión
Preferencia
De esos dos, encuentro que los Clusters son más maduros y fáciles de usar, probablemente una mejor opción para esta pregunta.
Proceda con precaución
En un caso extremo, se pueden producir datos silenciosos con usos de AppleFSCompression por parte de terceros. Por lo que puedo decir, esto es un error en el sistema operativo, y puede ocurrir solo donde hay una extraordinaria falta de espacio libre. Alimentaré el error a Apple.
fuente