Verschieben Sie Dateien automatisch auf ein externes Laufwerk, wenn sie verfügbar sind

1187
Evan

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

1
Ich habe mit [Hazel] (http://www.noodlesoft.com/hazel.php) herumgespielt 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 vor 13 Jahren 0

1 Antwort auf die Frage

2
Scott

Wenn Sie die launchdÜberwachung /Volumesals WatchPath festlegen, kann jedes Mal ein Skript ausgeführt werden, wenn ein Laufwerk bereitgestellt wird. Machen Sie dieses Skript einfach zu einem Skript, das prüft, ob Ihr Airport Extreme-Laufwerk gemountet ist, und führt dann die Kopie aus, falls vorhanden. Zum Beispiel:

#!/bin/bash  if [ -e /Volumes/AirportExtremeDriveName ] rsync -aE /a/specific/folder/ /Volumes/AirportExtremeDriveName/another/specific/folder/ fi 

Ich schlage vor rsync, es ist intelligent genug, um Dateien zu kopieren, die in Quelle und Ziel nicht gleich sind, was die Dinge ohne Ende beschleunigen wird. Wenn Sie das -deleteArgument hinzufügen, werden alle Dateien, die nicht mehr in der Quelle 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 wird entladen, wenn Sie sich abmelden.