3497 5
3497 5

A raíz del artículo "Copia de seguridad sincronizada de tu biblioteca de iTunes", seguramente habrás pensado cómo crear un script que realice esta tarea automática a un NAS o servidor en la nube. Por ejemplo, que cada día realice la conexión al NAS/servidor mediante login/password y realize la copia con rsync.

Hay varias formas de montar un disco duro de forma automatizada en OS X en función del método que nos interese. La más sencilla de todas es usar Automator y generar una aplicación que monte un disco duro, ejecute un comando de Shell (como por ejemplo, la sincronización con Rsync de la que hablábamos en el artículo) y luego, cuando termine la acción, desmontar el disco. También puedes añadir la unidad de disco, una vez montada, a los Items de arranque de tu usuario. Si no guardas el nombre de usuario y la contraseña en el llavero te los pedirá al arrancar siempre (los del servidor) y si los guardas, intentará montarlo automáticamente. De hecho puedes añadir el disco también al Dock y con un simple clic invocarlo, pero como lo que nos interesa es automatizar toda la tarea con una sola acción de Automator, vamos a ir parte por parte, lo que además, nos hará aprender un buen montón de cosas. 😀

Antes de meternos en la parte “fácil” que es cómo es crear esa aplicación, vamos a centrarnos en cómo se hace esa llamada al servidor para montar el correspondiente disco.

Una de las formas más habituales de conectar a un disco remoto es usando el atajo de teclado Comando + tecla K para invocar el cuadro de diálogo “Conectarse al servidor”. Los dos protocolos más habituales son SAMBA y AFP (Apple file protocol). La sintaxis para ambos es la siguiente:

smb://ip:puerto

afp://ip:puerto

También puedes conectar con un servidor FTP sin problemas:

ftp://ip:puerto

El problema de usar IPs suele ser la morfología de la red. Acostumbrados a usar DHCP (entraba de IPs de forma dinámica) nos podemos encontrar con que al determinar una única IP para conectar a un servidor, esta haya cambiado después, por ejemplo, del reinicio del router o si otro dispositivo se ha añadido a la red. Aunque es factible utilizar IP dina sobre una red DHCP, con mucho y más cómodo es aprovecharnos de las ventajas de Bonjour (si el servidor o dispositivo lo soporta, cosa muy habitual) y usar esos nombres para conectar. Así, la sintaxis para un servidor de nombre “Pike”, por ejemplo, sería:

smb://Pike.local:puerto

afp://Pike.local:puerto

Bajo afp, sin embargo, puedes usar una sintaxis mucho más específica: afpovertcp._tcp.local. El ejemplo sería:

afp://Pike._afpovertcp._tcp.local

Sobre esta sintaxis tenemos que añadir además el nombre de usuario y contraseña. A partir de este punto nos vamos a centrar sobre afp, ya que es el protocolo que nos indica superlativo (y que además es necesario, por ejemplo, para discos remotos que se encargan de las copias de Seguridad de Time Machine). Podemos pasar además la ruta a la carpeta directamente con la URL para que directamente podamos acceder a una ruta concreta (también funciona igual para smb://):

afp://Pike.local:puerto/carpeta

Si usamos el cuadro de diálogo estándar “Conectarse al Servidor”, se nos preguntará el nombre de usuario y contraseña que se almacenará en Acceso a Llaveros (y se usará, consecuentemente, en futuras conexiones) pero podemos pasar ambos parámetros directamente con la URL:

afp://usuario:contraseña@servidor.local

Desde el Terminal, nuestro comando de trabajo para montar un servidor es mount_afp para un servidor de archivos con Apple File Protocol. Para SMB, usaremos mount_smb. Para montar un disco desde el Terminal necesitaremos crear un punto de montaje en /Volumes/ para después montar allí el disco. Así, la sintaxis sería usando un ejemplo:

mkdir /Volumes/Peliculas;mount_afp "afp://usuario:contraseña@Pike.local/Peliculas" /Volumes/Peliculas

Como podéis ver, hemos “enganchado” dos comandos usando “;”. Cuando expulses la carpeta “Películas” (que se montará como un disco duro de red en tu escritorio o el la lista de discos duros) automáticamente el punto de montaje que creaste con mkdir se borrará, así que debes crear el punto de montaje siempre que accedas a montar un volumen desde el Terminal.

Ahora que hemos aprendido la teoría, vamos a ponerla en práctica y vamos a aprovecharnos de Automator para automatizar toda la tarea. Abriremos Automator, selecciona como flujo “Acción de carpeta” y colocaremos las siguientes acciones:

Captura de pantalla 2015-12-26 a las 12.48.40

En el flujo de Automator seleccionaremos primero la carpeta en la parte superior, que será la que sincronicemos con el servidor. Luego añadimos la acción de obtención de la URL del servidor especificado (se la daremos nosotros) y luego la acción para conectarse al servidor. Después he añadido una acción de pausa por una razón muy sencilla: en ocasiones le cuesta mucho conectarse a servidores, ya sea porque nuestra red está muy ocupada, o por que, y es un ejemplo clásico contra un NAS, el servidor está en reposo y necesita unos segundos para despertar y volver a estar activo. Ajusta el tiempo de pausa del script (tendrás que hacer alguna prueba o tomar alguna medición). Después van los comandos de Applescript que hemos aprendido en el anterior artículo para sincronizar los archivos.

Prueba primero el flujo de trabajo antes de guardarlo para que todo funcione correctamente.

Si lo que quieres (o prefieres) es hacer la copia de forma recursiva independientemente de si se añaden archivos a la carpeta o no, en lugar de crear una acción de carpeta en Automator crea una Alarma de Calendario. Luego, en la aplicación Calendario dispara esta acción de Automator a una fecha y hora específica, ya sea puntual o recursivamente para hacer la sincronización.

Categorías para este artículo

Join the Conversation

5 comentarioss

  1. Alquimista

    Voy a ir recopilando estos artículos para que la próxima vez que cambies el servidor no se pierdan como lágrimas en la lluvia.
    Al final tendré un tocho Unix-Automator-AppleScript; para cuando el OS X se idiotice tanto que ya solo quede como el ‘Finder simple’.

  2. drcano

    Para acceder al Time capsule desde otra red o vía 4G? alguna recomendación. de antemano gracias.

  3. Alquimista

    Hola,

    Estoy programando esto para que desde FileMaker Pro -12/14 El Capitan- me monte el volumen remoto mediante el paso de guión ‘Ejecutar AppleScript’ con el comando:

    `do shell script “mkdir /Volumes/server;mount_smb ‘smb://server:xxxx@Server._smb._tcp.local/server’ /Volumes/server”`

    y no funciona; sin embargo este otro comando sí que funciona:

    `do shell script “mkdir /Volumes/server;mount_afp ‘afp://server:xxxx@Server._afpovertcp._tcp.local/server’ /Volumes/server”`

    No consigo ver qué hago mal.

    Y ya de paso, ¿cómo compruebo previamente si el volumen está o no montado?

    Gracias mil.

    1. Carlos Burges Ruiz de Gopegui

      Si intentas montar un servidor que es OS X, comprueba que en ese mac esté activado SMB. Preferencias del Sistema > Compartir > Compartir archivos > Avanzado.

      En cuanto al Applescript de ejemplo:

      property myDisks : {“nombre de disco”, “nombre de disco 2”}

      set mountedDisks to paragraphs of (do shell script “/bin/ls /Volumes”)
      repeat with aDisk in myDisks
      if aDisk is not in mountedDisks then
      mount volume “afp://airport-extreme.local/” & aDisk as user name “myname” with password “mypassword”
      end if
      end repeat

      1. Alquimista

        Por si acaso induce a error el ordenador que hace de servidor es un El Capitan normal, no un OS X Server; lo comprobaré mañana pero supongo que estará activado SMB porque ahora se monta el volumen como smb (lo típico de ir a red, montarlo ponerle el password, etc.).

        La idea es programarlo para asegurarse de que el volumen está montado (a veces el usuario lo expulsa sin querer al querer desmontar un USB, por ejemplo); probaré ese Applescript para smb. A ver qué sale.