Cómo copiar elementos de carpeta en el automatizador de montaje en disco

quiero copiar automáticamente los elementos de una carpeta específica cuando se inserta un usb en un momento dado. Lógica del programa:

  1. Una vez que el usb esté disponible
  2. simplemente copie todo el contenido de (/Users/x/Documents/myfolder) a una carpeta usb como (/Volumes/BOSS/myfolder)
  3. elimina el contenido copiado de mi carpeta

¿Qué software o scripts podrían hacer esto?

¿Podría editar su cuerpo para enumerar los criterios? Etiquetó esto con algunas opciones como Automator, pero no está claro si necesita una herramienta específica o si estaría satisfecho con alguna solución.
Lo siento por eso, cualquier solución sería perfecta.

Respuestas (1)

Una forma de hacer esto es usar Automator:

  1. crear una acción de carpeta en /Volumes
  2. activar un Applescript o script de shell cuando se monta una nueva unidad
  3. hacer la copia
  4. tomar un café (opcional).

Probablemente querrá raspar la salida de system_profiler SPUSBDataTypepara asegurarse de que no está jugando con los DMG.

Oooh, opción 2 del desbordamiento de pila (copiar/pegar como una cita en bloque a continuación):

Puede usar launchd para ese propósito. Launchd se puede configurar para iniciar automáticamente un programa cuando se modifica la ruta de un archivo.

Por ejemplo, la siguiente lista de configuración de launchd iniciará el programa /usr/bin/loggercuando se modifique la carpeta del escritorio de mi cuenta de usuario:

<?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>

Para activar el plist de configuración, guárdelo en la carpeta LaunchAgents en su carpeta Biblioteca como "logger.plist".

Desde el shell, puede usar el comando launchctlpara activar logger.plist ejecutando:

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

La carpeta del escritorio ahora está siendo monitoreada. Cada vez que se cambie, debería ver una salida en system.log (use Console.app). Para desactivar logger.plist, ejecute:

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

El archivo de configuración anterior usa la WatchPathsopción. Alternativamente, también puede utilizar la QueueDirectoriesopción. Consulte la página man de launchd para obtener más información.

Todavía tengo un problema, ¿qué es la codificación para el script usando específicamente la misma lógica de código, gracias? No soy un mago de la tecnología, así que cuanto más detalle, mejor, gracias.