Mover automaticamente os arquivos para uma unidade externa quando ela estiver disponível

1

Eu tenho uma unidade de rede conectada a um Airport Extreme, por isso está disponível sempre que eu estou na minha rede wifi doméstica. Gostaria de mover automaticamente os arquivos de uma pasta específica para uma pasta específica na unidade em rede quando estiver disponível. Qual é a melhor maneira de automatizar isso?

    
por Evan 18.11.2010 / 06:06

1 resposta

2

Se você definir launchd para monitorar /Volumes como um WatchPath, ele poderá executar um script toda vez que uma unidade for montada. Basta criar um script que verifique se sua unidade Airport Extreme está montada e, em seguida, executa a cópia, se for. Por exemplo:

#!/bin/bash

if [ -e /Volumes/AirportExtremeDriveName ]
    rsync -aE /a/specific/folder/ /Volumes/AirportExtremeDriveName/another/specific/folder/
fi

Sugiro rsync , pois é inteligente o suficiente para não copiar arquivos que são os mesmos tanto na origem quanto no destino, o que acelerará as coisas sem problemas. Se você adicionar o argumento -delete , todos os arquivos que não existirem mais na origem serão excluídos do destino.

Sem custo extra, aqui está o script launchd . Salve o seguinte em ~/Library/LaunchAgents/some.meaningful.name.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<dict>
    <key>Label</key>
    <string>some.meaningful.name</string>

    <key>LowPriorityIO</key>
    <true/>

    <key>ProgramArguments</key>
    <array>
        <string>/where/you/saved/your/script.sh</string>
    </array>

    <key>WatchPaths</key>
    <array>
        <string>/Volumes</string>
    </array>
</dict>
</plist>

Em seguida, carregue o trabalho launchd com:

launchctl load ~/Library/LaunchAgents/some.meaningful.name.plist

Ele será carregado automaticamente quando você fizer login e descarregar quando sair.

    
por 19.11.2010 / 11:34