Sincronizar carpetas en Linux y Mac OS X con rsync

Rsync es una utilidad que ya viene integrada en Linux y Mac OS X, la cual nos permite sincronizar carpetas en diferentes unidades de nuestro dispositivo y también a través de la red. Esto nos permite tener los datos sincronizados, para realizar diferentes trabajos y como copia de seguridad de nuestros datos.

Una utilidad gratuita que realiza un gran trabajo. Para poder utilizar Rsync, debemos abrir una ventana de la terminal, ya que esta aplicación se utiliza a través de comandos.

Los parámetros más utilizados son:

  • r, este parámetro hará el copiado recursivo de carpetas, es decir, creará toda la estructura de las carpetas que hay dentro de carpeta_origen en carpeta_destino, y copiará todos los archivos que es encuentren dentro de estas.
  • -t, hace que rsync preserve los tiempos de modificación de los archivos que copia desde la carpeta origen, los archivos de la carpeta destino contendrán las mismas fechas.
  • v, significa que la información mostrada durante la ejecución del programa será mucho más detallada, podemos utilizar este parámetro para ver el progreso que esta realizando Rsync.
  • -u, ahorrar ancho de banda y tiempo, evitar copiar archivos que ya tenemos en la carpeta de destino que no has sido modificados en la carpeta de origen.
  • -c, verifica si dos archivos son identicos, y no han cambiado, realizando una comprobación del checksum de cada uno. Esta opción no tiene en cuenta la fecha o tamaño del archivo. Esta opción requiere más proceso de computo de la máquina.
  • p, preserva los permisos del archivo origen en el archivo destino.

El siguiente comando realiza una copia en la unidad “Seguridad“, de la carpeta “Fotos” de la unidad “Macintosh

rsync -rtvu (ruta_origen) (ruta_destino)
rsync -rtvu /Volumes/Macintosh/Fotos /Volumes/Seguridad

En la unidad destino no debemos incluir la carpeta “Fotos“, ya que esta es creada si no existe, en la primera vez que realizamos la sincronización, o si ya existe, la utilizará por defecto. Si en la unidad destino incluimos la carpeta “Fotos“, (/Volumes/Seguridad/Fotos), la sincronización se realizará en (/Volumes/Seguridad/Fotos/Fotos), ya que Rsync entiende que la carpeta destino es allí donde crearemos la copia de seguridad, y añade todas las carpetas de la ruta origen.

Existen multitud de opciones más de esta estupenda herramienta, las puedes consultar introduciendo unicamente rsync en la terminal.



Si encuentras esta noticia interesante la puedes compartir en tus redes sociales, a tus seguidores les puede gustar. Utiliza los botones que tienes más abajo.

Share

Compartir archivos con el protocolo Apple Filing Protocol (AFP), entre Mac OS X y Raspberry Pi

Con la utilidad Netatalk, podemos crear un acceso permanente entre nuestro ordenador Mac y una Raspberry Pi, ello nos permite compartir archivos entre los dos dispositivos de forma rápida.

Antes de realizar la instalación de ningun paquete en la Raspberry Pi es muy aconsejable proceder a su actualización, para ello ejecutamos los siguientes comandos:

sudo apt update
sudo apt upgrade
sudo reboot

Una vez completado el proceso procedemos a instalar Netatalk, con el siguiente comando:

sudo apt-get install netatalk

Una vez completada la instalción, tenemos que configurar el archivo AppleVolumes.default, detenemos el servicio con:

sudo /etc/init.d/netatalk stop

Y ejecutamos el comando:

sudo nano /etc/netatalk/AppleVolumes.default

Añadimos las siguientes lineas:

:DEFAULT: options:upriv,usedots,rw

/       "Directorio Raiz"

Si no deseamos dar acceso a todo el contenido, añadimos los paths a la carpeta o carpetas que queremos hacer visibles. La barra invertida da acceso al directorio raiz. El primer parametro es el path o ruta a la carpeta que queremos publicar, el segundo parametro es informativo.

Guardamos los cambios realizados y lanzamos el servicio:

sudo /etc/init.d/netatalk start

Si todo ha ido bien, veremos en el “Finder“, en el lateral izquierdo, sección “Compartido“, nuestra tarjeta Raspberry Pi, algo similar a la siguiente imagen.

Al seleccionar dicho icono, se mostrará en la parte superior del “Finder“, un botón “Conectar como“, debemos pulsar en dicho botón y poner el usuario y contraseña de nuestra Raspberry Pi para poder conectar. Si los datos son correctos, se producira la conexión y ya tendremos acceso a los datos compartidos.

Las carpetas compartidas tendrán un aspecto similar a este.



Si encuentras esta noticia interesante la puedes compartir en tus redes sociales, a tus seguidores les puede gustar. Utiliza los botones que tienes más abajo.

Share

Como extraer información de archivos de audio, video o imágenes

Exiftool es una aplicación de linea de comando, ejecutada desde la terminal del sistema. Esta disponible para Windows, Mac y Linux. Y es totalmente gratuita.

Esta herramienta nos permite realizar diversas tareas con los archivos de audio, video y fotografía. Una muy interesante, es la de poder conocer todos los datos de los archivos multimedia; audio, video e imágenes.

Exiftool nos permite conocer con todo lujo de detalles todos los datos presentes en los archivos multimedia.

En un archivo de audio, podemos obtener:

  • El codec utilizado.
  • El bitrate.
  • Si la grabación es stereo.
  • Los datos ID3.
  • La duración.
  • Y otros muchos parametros.

Captura de un archivo de audio:

Captura de un archivo de video:

Captura de una fotografía:

Como podemos ver, los datos obtenidos de una fotografía son abrumadores. Tenemos todos los detalles con los que fue capturada la imagen así como las coordenadas donde fue realizada, y la altitud, GPS Altitude: 1367 m Above Sea Level.

Exiftool, no solo nos permite visualizar los datos de los archivos multimedia, sino también, modificar dichos datos. Con el siguiente comando podemos modificar los datos GPS.

exiftool -exif:gpslatitude="40 15" -exif:gpslatituderef=S -exif:gpslongitude="172 129" -exif:gpslongituderef=E ruta_nombre_imagen.jpg

La salida de los datos se puede realizar en multiples formatos; txt, json, html, a una base de datos, una tabla, etc.

Ejemplo para exportar datos a un archivo txt:

exiftool /Volumes/Mac\ HD/imagenes/IMG_1726.JPG -w /Users/darco/Downloads/a%c.txt

Puedes encontrar más información de esta estupenda aplicación en este enlace.



Si encuentras esta noticia interesante la puedes compartir en tus redes sociales, a tus seguidores les puede gustar. Utiliza los botones que tienes más abajo.

Share

Ejecutar scripts al recibir comandos mediante MQTT

MQTT es un protocolo similar a HTTP, pero mucho más liviano, utilizado hoy en día principalmente para el Internet de las cosas.

Vamos a describir un proyecto en el cual se utiliza una Raspberry Pi, la cual esta constantemente monitorizando un servicio de notificaciones, en el cual tenemos una notificación especifica que se lanza cada 15 días, a las 05:00 de la mañana, pero el script que ejecuta la tarea principal esta alojado en otro ordenador.

El ordenador principal realiza a través de una aplicación una serie de informes que una vez completados son enviados a diferentes destinatarios. Este ordenador corre un script a la espera de recibir un comando enviado a través de MQTT.

Cuando la Raspberry Pi lanza la notificación, envía un comando por MQTT, el ordenador principal recibe el comando MQTT, compara la instrucción recibida, y si es correcta, ejecuta un script, el cual se encarga de generar los informes y enviarlos a sus destinatarios.

Para que funcione el protocolo MQTT, se debe instalar en los ordenadores implicados en las tareas.

Antes de instalar el Broken de MQTT (Mosquitto) en nuestra Raspberry Pi, actualizamos los paquetes:

sudo apt update
sudo apt upgrade
sudo reboot

Luego instalamos mosquitto y su software cliente:

sudo apt-get install mosquitto mosquitto-clients

El archivo de configuración generado por defecto (mosquitto.conf) se encuentra en el directorio /etc/mosquitto.

Una vez instalado podemos revisar que se está ejecutando correctamente:

sudo systemctl status mosquitto.service

Para que el servicio se ejecuta cada vez que se inicia la Raspberry Pi, ejecutamos:

sudo systemctl enable mosquitto.service

En nuestro ordenador principal tambien debemos instalar un Broken de MQTT. Si tenemos instalada la aplicación brew, en Mac OS X, la instalación es muy sencilla, ejecutamos:

brew install mosquitto

En la Raspberry Pi, cuando la notificación alcanza la fecha prevista, llamamos a la función:

def Script_Envio_Informes():
    call('mosquitto_pub -h 192.168.1.43 -t script_enviar_informes -m "Realizar"', shell = True)
  • -h, especifica la IP de la máquina destino del mensaje MQTT.
  • -t, topic, es la palabra con la que se publica (el emisor) y se suscribe (el receptor), en como el nombre del canal al que se esta suscrito.
  • -m, es el mensaje que se envía.
  • call, es una función que se ejecuta a traves de la terminal.

El ordenador principal ejecuta en siguiente script:

#!/usr/bin/python

import paho.mqtt.client as mqtt
from captura_web import Explorar
from notifica import notify

broker_address = "localhost"
broker_port = 1883
topic = "script_enviar_informes"

def on_message(client, userdata, message):
    print("Mensaje recibido=", str(message.payload.decode("utf-8")))
    print("Topic=", message.topic)
    print("Nivel de calidad [0|1|2]=", message.qos)
    print("Flag de retención =", message.retain)
    #ejecutamos script, llamamos a la función del script
    if str(message.payload.decode("utf-8")) == "Realizar":
        Explorar()
        notify("MQTT", "Se ha ejecutado el script Envio Informes")

client = mqtt.Client('Cliente1') 
client.on_message = on_message 
client.connect(broker_address, broker_port, 60) 
client.subscribe(topic) # Subscripción al topic
client.loop_forever()

Este script se ejecutar constantemente, está a la espera de recibir algun mensaje.

  • broker_address, ejecuta el broken en el ordenador local.
  • broker_port, es el puerto por defecto utilizado por el broken.
  • topic, es al canal que nos suscribimos. El mismo canal que ha publicado el emisor.
  • if str(message.payload.decode(“utf-8”)) == “Realizar”, si el mensaje recibido es igual a Realizar, se ejecutan las siguientes funciones.
  • Explorar(), esta función genera diferentes informes y realiza los envios a sus destinatarios.
  • notify(“MQTT”, “Se ha ejecutado el script Envio Informes”), crea una notificación en la pantalla del ordenador, informa de las tareas realizadas.

El código de notify es:

import os

def notify(title, text):
    os.system("""
              osascript -e 'display notification "{}" with title "{}"'
              """.format(text, title))

El envío de mensajes a traves de diferentes dispositivos puede servir para realizar las más variadas tareas. Es muy comun su utilización en placas arduino con sensores de temperatura, humedad y presión, u otro tipo de sensores, que mediante el protocolo MQTT va enviando periodicamente los datos que obtiene, a un ordenador que los procesa o almacena, como podria ser una Raspberry Pi.

La comunicación MQTT también se utiliza para la comunicación entre dispositivos Tuya y Smart Life y las aplicaciones que gestionan estos dispositivos.



Si encuentras esta noticia interesante la puedes compartir en tus redes sociales, a tus seguidores les puede gustar. Utiliza los botones que tienes más abajo.

Share

Cambiar la dirección MAC en Mac OS X

Si los datos que manejamos son muy sensibles, es altamente recomendable ir cambiando rutinariamente la dirección MAC de nuestro ordenador, lo ideal es utilizar una VPN, la cual canaliza todas nuestras comunicaciones por una red segura.

La dirección MAC identifica plenamente nuestro dispositivo, ya que este dato no cambia, viene grabado de fabrica en la tarjeta de red del dispositivo. Esto no quiere decir que este dato no pueda ser modificado por el sistema, y mostremos en las conexiones de red una MAC alternativa. Si alguien monitorea la actividad de nuestra red, puede capturar la dirección MAC, que por lo general siempre ira vinculada a un dispositivo en concreto, y de esta forma controlar las actividades producidas en dicho dispositivo.

Cambiando frecuentemente la dirección MAC añadimos una nueva dificultad para la captura de nuestros datos.

Esto se puede hacer de forma sencilla desde la terminal del sistema, con el siguiente comando.

sudo ifconfig en0 ether 20:c4:ac:13:b4:e0
  • en0 – Normalmente es el adaptador de red de cable ethernet (RJ45).
  • en1 – Es el adaptador de la conexión WIFI.
  • 20:c4:ac:13:b4:e0 – Es una dirección MAC inventada, se trata de un grupo formado por 6 valores hexadecimales. Donde los números van del 0 al 9, y las letras de la a hasta la f, cada grupo separado por (:) dos puntos.

Para comprobar realmente nuestras configuraciones de red se utiliza el sigiente comando en la terminal:

ifconfig

En los datos que devuelve se podrán ver los nombres de los adaptadores de red y la direción MAC (ether), así como otros datos.

Si necesitas ver todas las direcciones MAC utilizadas en tu sistema; adaptadores de red, sistemas virtualizados, etc. puedes utilizar el siguiente comando:

ifconfig | grep ether

Mostrará un listado con todas las direcciones MAC.



Si encuentras esta noticia interesante la puedes compartir en tus redes sociales, a tus seguidores les puede gustar. Utiliza los botones que tienes más abajo.

Share