Я хотел бы настроить автоматический способ архивирования файлов в OS X Lion. Под архивированием я подразумеваю использование функции сжатия HFS + в определенной папке и автоматически сжимаю каждый файл, который я перемещаю в эту папку. Я думаю об использовании этого для архивирования больших файлов, которые я не использую часто, но без необходимости вручную создавать сжатые архивы и извлекать их в случае необходимости.
Я наткнулся на инструмент afsctool ( brew install afsctool
), который может через командную строку применять сжатие HFS + к папке и всем файлам в ней. Но я считаю, что это не активирует сжатие будущих файлов, перемещенных в папку.
Перемещение файлов вручную и многократное выполнение команды командной строки неудобно. Поэтому я предполагаю, что мне нужно было бы использовать automator / AppleScript, чтобы выполнить это в два этапа:
- Создайте скрипт, который позволяет перемещать любой файл в определенную папку. В идеале опция с именем Archive доступна посредством щелчка правой кнопкой мыши по файлу.
- Запустите инструкцию командной строки
afsctool -c <folder>
, чтобы активировать сжатие для всех новых файлов, только что перемещенных в папку.
У меня нет опыта использования Automator или AppleScript, поэтому я хотел бы знать, с чего начать, особенно в отношении того, как добавить действия в Finder и как запустить инструмент командной строки из сценария.
Обновления
@kopischke руководство работает хорошо. Сам скрипт я сделал исходя из ответа @mark, но используя afsctool -c <folder>
вместо ditto
. Вот сценарий: он должен быть вставлен в~/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
Поскольку afsctool на MobileMe больше не доступен, на GitHub есть diimdeep / afsctool , в настоящее время 1.6.4.
Также в MacPorts, где они знают о проблеме MobileMe, но, возможно, не знают об источнике на GitHub.
Ответы:
Ответ на ваш вопрос состоит из двух частей.
Как добавить пункт контекстного меню Finder в «Архивные» файлы: этого легко достичь, создав службу Automator (Mac OS X Automation имеет хороший обзор того, что могут делать службы Automator, представленные в OS X 10.6):
~/Library/Services
) как «Архив».Теперь у вас есть новое сервисное меню и пункт контекстного меню (в зависимости от количества активных сервисов: либо на первом уровне меню, либо в подменю «Сервисы») под названием «Архив», который переместит выбранный файл или папку к вашей цели. папка.
Как автоматизировать сжатие файлов HFS +, добавленных в целевую папку: для этого есть несколько способов. Конечно, вы можете просто добавить этот шаг в службу архивации. Недостатком этого подхода является то, что сжатие не будет применяться, если, конечно, файлы или папки будут добавлены в папку вне службы. Лучшим подходом было бы, чтобы все в папке сжималось автоматически, не полагаясь на вектор ввода или взаимодействие с пользователем.
Как вы обнаружили, один из способов - запускать утилиту сжатия при каждом добавлении файла или папки в отслеживаемую папку:
do shell script
команда - см. связанную документацию;adding folder items
- то есть он реагирует на вновь добавленные файлы; полный справочник см. В Руководстве по языку Applescript ). , Конфигурация действий с папками находится в сервисном меню папок в Finder (тоже в контекстном меню).Альтернатива всему скриптового подход использует LateNiteSoft в Кластеры - другое коммерческое программное обеспечение, который ничего не делает , но автоматически применять (и повторно применять, в случае необходимости) HFS + сжатие содержимого отслеживаемых папок.
источник
@williamvoor: Сценарий завершается ошибкой с путями к файлам, которые содержат пробелы, так как
set the file_name to the POSIX path of this_item
не выполняются должным образом. Исправьте соответствующую строку вашего кода следующим образом:Объяснение : аргумент имя_файла afcstool заключен в кавычки, которые сами в коде AppleScript экранируются для правильной передачи в среду командной строки.
Мета-тема : из-за недостатка репутации я не смог прокомментировать соответствующую позицию (= к собственному сообщению @williamvoor), поэтому я публикую его как собственный ответ и прошу вас отредактировать изменение кода в своем сообщении, и побалуйте меня, чтобы я приобрел достаточно репутации, чтобы я мог прямо прокомментировать в будущем. Спасибо!
После этого я или администратор могут удалить мой пост.
источник
Этот поток дает appleScript для использования в качестве действия папки, которое будет сжимать файлы по мере их добавления
источник
--hfsCompression
варианте вditto
- хороший! Но ваш ответ не отвечает на вопрос OP об интеграции движущегося скрипта в Finder, он перемещает файлы, сброшенные в папку архива, в другую папку (что, я думаю, было бы более перенаправлением, чем планировалось OP), и запрашивает аутентификацию. каждый раз (раздражает в контексте автоматизации).Кластеры
Сжатие папок MoreSpace
предпочтение
Из этих двух я считаю кластеры более зрелыми и более простыми в использовании - возможно, лучше подходят для этого вопроса.
Действовать с осторожностью
В крайнем случае тихая потеря данных может произойти при использовании AppleFSCompression третьей стороной. Из того, что я могу сказать, это ошибка в ОС, которая может возникать только в случае чрезвычайной нехватки свободного места. Я передам ошибку Apple.
источник