Verschieben Sie Dateien automatisch auf ein externes Laufwerk, wenn es verfügbar ist

1

Ich habe ein Netzwerklaufwerk, das mit einem Airport Extreme verbunden ist. Es ist also immer verfügbar, wenn ich in meinem Heim-WLAN-Netzwerk bin. Ich möchte automatisch Dateien aus einem bestimmten Ordner in einen bestimmten Ordner auf dem Netzwerklaufwerk verschieben, wenn dieser verfügbar ist. Wie lässt sich dies am besten automatisieren?

Evan
quelle
Ich habe mit Hazel rumgespielt und es funktioniert, aber es wird ein Growl-Fehler angezeigt, wenn versucht wird, Dateien zu verschieben, wenn das externe Laufwerk nicht verfügbar ist.
Fideli

Antworten:

2

Wenn Sie die launchdÜberwachung /Volumesals WatchPath festlegen, kann jedes Mal, wenn ein Laufwerk bereitgestellt wird, ein Skript ausgeführt werden. Stellen Sie dieses Skript einfach so ein, dass überprüft wird, ob Ihr Airport Extreme-Laufwerk aktiviert ist, und führen Sie dann die Kopie aus, falls dies der Fall ist. Zum Beispiel:

#!/bin/bash

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

Ich schlage vor rsync, dass es klug genug ist, keine Dateien zu kopieren, die sowohl in der Quelle als auch im Ziel identisch sind, was die Dinge ohne Ende beschleunigen wird. Wenn Sie das -deleteArgument hinzufügen , werden alle Dateien, die in der Quelle nicht mehr vorhanden sind, vom Ziel gelöscht.

Ohne zusätzliche Kosten, hier ist das launchdSkript. Speichern Sie das Folgende in~/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>

Laden Sie dann den launchdJob mit:

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

Es wird automatisch geladen, wenn Sie sich anmelden und entladen, wenn Sie sich abmelden.

Scott
quelle