Gostaria de configurar uma maneira automatizada de arquivar arquivos no OS X Lion. Ao arquivar, quero dizer usando o recurso de compactação HFS + em uma pasta específica e fazer com que todos os arquivos que eu movo para essa pasta sejam compactados automaticamente. Estou pensando em usar isso para arquivar arquivos grandes que não uso com frequência, mas sem precisar criar manualmente arquivos compactados e extraí-los caso precise deles.
Encontrei a ferramenta afsctool ( brew install afsctool
), que pode, via linha de comando, aplicar a compactação HFS + a uma pasta e a todos os arquivos nela. Mas acredito que não ativa a compactação de arquivos futuros movidos para a pasta.
Mover arquivos manualmente e executar uma instrução de linha de comando repetidamente é inconveniente. Portanto, acho que precisaria usar o automator / AppleScript para executar isso em duas etapas:
- Crie um script que permita mover qualquer arquivo para uma pasta específica. Idealmente, uma opção chamada Archive acessível através do botão direito do mouse no arquivo.
- Execute uma instrução de linha de comando
afsctool -c <folder>
para ativar a compactação em todos os novos arquivos recém-movidos para a pasta.
Não tenho experiência no uso do automator ou do AppleScript, portanto, gostaria de saber por onde começar, principalmente sobre como adicionar ações ao Finder e como executar uma ferramenta de linha de comando a partir de um script.
Atualizações
O guia @kopischke funciona bem. O script em si, eu fiz com base na resposta de @mark, mas usando afsctool -c <folder>
, em vez de ditto
. Aqui está o script: deve ser colocado em~/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
Como o afsctool no MobileMe não está mais disponível, há diimdeep / afsctool no GitHub, atualmente 1.6.4.
Também o afsctool no MacPorts, onde eles conhecem o problema do MobileMe, mas talvez não tenham conhecimento da fonte no GitHub.
Respostas:
Existem duas partes na resposta à sua pergunta.
Como adicionar um item de menu de contexto do Finder aos arquivos "Arquivar": é fácil obter isso criando um Serviço de Automator (o Mac OS X Automation tem uma boa visão geral do que os serviços do Automator introduzidos no OS X 10.6 podem fazer):
~/Library/Services
) como “Arquivar”.agora você tem um novo menu de serviço e uma entrada no menu de contexto (dependendo do número de serviços ativos: no primeiro nível do menu ou no submenu "Serviços") chamado "Arquivo" que moverá o arquivo ou a pasta selecionada para o seu destino pasta.
Como automatizar a compactação de arquivos HFS + adicionados à sua pasta de destino: existem várias maneiras de conseguir isso. Obviamente, você pode simplesmente adicionar essa etapa ao seu serviço de arquivamento. A desvantagem dessa abordagem é que nenhuma compactação será aplicada se arquivos ou pastas forem adicionados à pasta fora do serviço, é claro. Uma abordagem melhor seria compactar tudo na pasta automaticamente, sem depender do vetor de entrada ou da interação do usuário.
Uma maneira é, como você descobriu, executar um utilitário de compactação sempre que um arquivo ou pasta for adicionado à sua pasta monitorada:
do shell script
comando - consulte a documentação vinculada;adding folder items
- o que significa que ele reage aos arquivos adicionados recentemente; consulte o Applescript Language Guide para obter a referência completa ) . A configuração de Ações da Pasta é encontrada no menu de serviços das pastas no Finder (também no menu de contexto).Uma alternativa para toda a abordagem de script é usar os Clusters do LateNiteSoft - outro software comercial que não faz nada além de aplicar automaticamente (e reaplicar, quando necessário) a compactação HFS + ao conteúdo das pastas monitoradas.
fonte
@ williamvoor: o script falha com caminhos de arquivo que contêm espaços, pois
set the file_name to the POSIX path of this_item
não escapa corretamente. Corrija a linha apropriada do seu código para isso:Explicação : O argumento file_name do afcstool é cercado por aspas, que no código AppleScript são escapadas para serem corretamente entregues ao ambiente da linha de comandos.
Meta-tópico : como não tenho pontos de reputação, não pude comentar na posição apropriada (= na própria postagem de @williamvoor), portanto, eu a envio como uma resposta própria e solicite que você edite a alteração de código em sua postagem, e me dê um joinha, para que eu ganhe reputação suficiente, o que me permite comentar diretamente no futuro. Obrigado!
Depois disso, eu ou admin poderíamos excluir minha postagem.
fonte
Esse segmento fornece um AppleScript para usar como uma ação de Pasta, que comprimirá os arquivos à medida que forem adicionados
fonte
--hfsCompression
opçãoditto
- boa! Mas sua resposta não aborda a pergunta do OP sobre a integração de um script em movimento no Finder, move os arquivos soltos na pasta de arquivamento para outra pasta (que eu acho que seria mais um redirecionamento do que o OP estava planejando) e solicitará autenticação sempre (irritante em um contexto de automação).Clusters
Compressão de pasta MoreSpace
Preferência
Desses dois, acho que os Clusters são mais maduros e mais fáceis de usar - provavelmente um melhor ajuste para essa pergunta.
Prossiga com cuidado
Em um caso extremo, o dataloss silencioso pode ocorrer com usos de AppleFSCompression de terceiros. Pelo que posso dizer, é um bug no sistema operacional e pode ocorrer apenas quando há uma extraordinária falta de espaço livre. Vou alimentar o bug para a Apple.
fonte