Jak skopiować elementy folderów na automacie do montażu dysku

2

Chcę automatycznie skopiować elementy określonego folderu, gdy usb zostanie wstawiony w danym momencie. Logika programu:

  1. Gdy usb będzie dostępny
  2. po prostu skopiuj całą zawartość (/ Users / x / Documents / myfolder) do folderu usb, takiego jak (/ Volumes / BOSS / myfolder)
  3. usuwa skopiowaną zawartość z mojego folderu

Jakie oprogramowanie lub skrypty mogą to zrobić?

użytkownik3641241
źródło
Czy możesz edytować swoje ciało, aby wymienić kryteria? Oznaczono to niektórymi opcjami, takimi jak automatyzator, ale nie jest jasne, czy potrzebujesz konkretnego narzędzia, czy byłbyś zadowolony z dowolnego rozwiązania.
bmike
przepraszam za to, każde rozwiązanie byłoby idealne.
user3641241

Odpowiedzi:

1

Jednym ze sposobów na to jest użycie Automatora:

  1. utwórz akcję folderu na / Woluminy
  2. wywoływać skrypt Apple lub skrypt powłoki, gdy nowy dysk jest zamontowany
  3. zrób kopię
  4. napij się kawy (opcjonalnie).

Prawdopodobnie będziesz chciał zeskrobać dane wyjściowe, system_profiler SPUSBDataTypeaby upewnić się, że nie zadzierasz z DMG.

Oooh, opcja 2 z przepełnienia stosu (skopiuj / wklej jako cytat blokowy poniżej):

Możesz użyć do tego celu uruchomionego . Uruchomione można skonfigurować tak, aby automatycznie uruchamiało program po zmodyfikowaniu ścieżki pliku.

Na przykład następujący plist uruchomionej konfiguracji uruchomi program, /usr/bin/loggergdy folder pulpitu mojego konta użytkownika zostanie zmodyfikowany:

<?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">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>logger</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/logger</string>
        <string>path modified</string>
    </array>
    <key>WatchPaths</key>
    <array>
        <string>/Users/sakra/Desktop/</string>
    </array>
</dict>
</plist>

Aby aktywować plist konfiguracji, zapisz go w folderze LaunchAgents w folderze Library jako „logger.plist”.

Z poziomu powłoki możesz następnie użyć polecenia, launchctlaby aktywować logger.plist, uruchamiając:

$ launchctl load ~/Library/LaunchAgents/logger.plist

Folder na pulpicie jest teraz monitorowany. Za każdym razem, gdy jest zmieniany, powinieneś zobaczyć wynik w pliku system.log (użyj Console.app). Aby dezaktywować logger.plist, uruchom:

$ launchctl unload ~/Library/LaunchAgents/logger.plist

W powyższym pliku konfiguracyjnym jest używana WatchPathsopcja. Możesz też użyć tej QueueDirectoriesopcji. Aby uzyskać więcej informacji, zobacz stronę podręcznika uruchomionego .

webmarc
źródło
Nadal mam problem z kodowaniem skryptu za pomocą tej samej logiki dzięki. Nie jestem czarodziejem technologii, więc im więcej szczegółów, tym lepsze dzięki.
user3641241,