abril 06, 2017

Programando sincronización en la nube

Para muchos, la sincronización de datos en los diferentes servicios en la nube se ha vuelto casi imprescindible, pero con la aparición del ransomware, puede ocurrir que este malware tome el control de nuestro PC o servidor y cifre nuestra carpeta de datos administrada por el cliente de estos servicios, y como estas aplicaciones sincronizan todo el tiempo cuando estamos conectados, el ransomware también cifrará toda la información en la nube.
Algo similar puede ocurrir con un archivo o backup, que accidentalmente lo eliminemos, modifiquemos o dañemos; también se replicará instantáneamente en nuestra carpeta en la nube; y si es de gran tamaño, es poco probable que estos servicios, al menos en su versión gratuita, guarden copias de seguridad, por obvias razones de espacio limitado.
Son muchos los escenarios que pueden conducir al caos y pérdida de información, si sincronizamos nuestros en tiempo real. Es por eso que programar las sincronizaciones en la nube eventualmente podría ser una alternativa de solución a este problema, ya que, ante un eventual desastre, solo perderemos las horas de trabajo en que nuestro cliente no sincronizó.
La mayoría de los clientes de estos servicios ofrecen pausar la sincronización y reanudarla cuando queramos, pero (al menos por el momento) solo está disponible en su menú gráfico y no puede ser programada para que pause a una determinada hora y reinicie a otra, sin embargo, a pesar de esta limitante, aún podemos echar manos de otras herramientas para lograr la programación de sincronización de nuestros datos en la nube.
Programando sincronización de Dropbox (Windows y Mac)
Para Windows, pueden encontrar el tutorial en el blog de jsquaredz (igual que para Mac)
Programando sincronización de Dropbox (Ubuntu. Tested on Ubuntu 16.04)
Antes de comenzar es recomendable quitar cualquier versión de Dropbox (si utiliza el mismo método de instalación que a continuación se describira, puede omitir este paso):
sudo apt-get purge dropbox
# Para Escritorio Mate
sudo apt-get purge caja-dropbox
Luego ingrese a su carpeta Home, pulse Ctrl+H y elimine las carpetas .dropbox-dist y .dropbox Instalación:
sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5044912E
sudo sh -c 'echo "deb http://linux.dropbox.com/ubuntu/ $(lsb_release -sc) main" >> /etc/apt/sources.list.d/dropbox.list'
sudo apt-get update && sudo apt-get -y install dropbox && sudo apt-get -f -y install
Al terminar la instalación, iniciará la ventana de descarga y pulsamos Start Dropbox para iniciar la descarga:
Si no inicia la ventana anterior, vamos al menú y pulsamos en el icono de Dropbox y comienza la descarga:
Al concluir la descarga, se abre el navegador y pide autorización para vincular la cuenta:
Finalmente inicia Dropbox y hay que desmarcar la casilla de inicio automático (ya que el comando "dropbox autostart n" en ocasiones no funciona y es mejor asegurarnos).
Copie el siguiente script de arranque y parada de Dropbox en init.d con el nombre de dbox sin extensión.  En la variable MYUSER, reemplace user por su usuario de linux no-root (si no sabe cuál es su usuario, ejecute en el terminal el comando echo $USER)
#!/bin/sh
### BEGIN INIT INFO
# Provides:          dbox
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Dropbox sync schedule
# Description:       Enable service provided by daemon
# By:                Maravento.com and Novatoz.com
### END INIT INFO

MYUSER="user"

case "$1" in
  start)
    echo "Start Dropbox..."
    killall dropbox >/dev/null 2>&1
    sudo -H -u $MYUSER bash -c 'DISPLAY=:0 /usr/bin/dbus-launch dropbox start -i &' >/dev/null 2>&1
    echo "OK"
 exit
 ;;
  stop)
    echo "Stop Dropbox..."
    sudo -H -u $MYUSER bash -c 'dropbox stop'
    # optional
    killall dropbox >/dev/null 2>&1 
    echo "OK"
 exit
 ;;
  *)
    echo "Usage: /etc/init.d/dbox {start|stop}"
 exit 1
    ;;
esac
exit 0
Nota: El comando "killall dropbox >/dev/null 2>&1" se incluye porque en algunos sistemas los comandos de dropbox:
"dropbox stop o dropbox stop -i"
No funcionan correctamente o demoran. Si no sucede en su equipo puede suprimirlos del script.
En Ubuntu Mate, es probable que salga algún error de notificación, debido a que esta distribución utiliza "caja-dropbox".
Programación:
Ahora le damos permisos:
sudo chmod +x /etc/init.d/dbox
Abrimos el crontab y lo programamos en el horario de encendido y apagado que queramos. En el siguiente ejemplo se inicia a las 11:00 PM y se apaga a las 05:00 AM (para que sincronice lo del día).
sudo crontab -e
# Crontab schedule. Example:
00 23 * * * /etc/init.d/dbox start
00 05 * * * /etc/init.d/dbox stop
Programando sincronización en Mega (Ubuntu)
El mismo procedimiento y script aplicado a Dropbox puede ser usado con el cliente MegaSync, de Mega (y en GDrive, si existiera una versión oficial para linux).
Descargamos el cliente vía web o directamente de los repositorios (según la version del SO); nombramos el script como msync (o el nombre que queramos) y lo guardamos en init.d y le damos permisos de ejecución y finalmente lo programamos en el cron de la misma forma que dbox:
#!/bin/sh
### BEGIN INIT INFO
# Provides:          msync
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: MegaSync schedule
# Description:       Enable service provided by daemon
# By:                Maravento.com and Novatoz.com
### END INIT INFO

MYUSER="user"

case "$1" in
  start)
    echo "Start MegaSync..."
    killall megasync >/dev/null 2>&1
    sudo -H -u $MYUSER bash -c 'DISPLAY=:0 /usr/bin/dbus-launch megasync start -i &' >/dev/null 2>&1
    echo "OK"
 exit
 ;;
  stop)
    echo "Stop MegaSync..."
    killall megasync >/dev/null 2>&1 
    echo "OK"
 exit
 ;;
  *)
    echo "Usage: /etc/init.d/msync {start|stop}"
 exit 1
    ;;
esac
exit 0
Pero, a pesar de que programar las sincronizaciones pueden evitarnos muchos dolores de cabeza, en algunos escenarios específicos, lo más recomendable es "no poner todos los huevos en la misma canasta" y diversificar nuestros datos en diferentes tipos de almacenamiento, para no generar una excesiva dependencia de estos servicios cloud (y así no comprometer nuestra privacidad) y en reemplazo utilizar alternativas libres como syncthing, que no solo permite programar nuestras sincronizaciones, sino que transfiere datos entre terminales (nodos) de forma descentralizada y cifrada, sin servidor intermediario, como Dropbox, Mega, Gdrive y otros.
Programando sincronización con Syncthing (Linux. Tested on Ubuntu 16.04)
Use el siguiente script para instalarlo (no-root):
#!/bin/bash
### BEGIN INIT INFO
# Provides:          syncthing install
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Syncthing schedule
# Description:       Enable service provided by daemon.
# By:                Maravento.com
# Script:            syncthing_install.sh
### END INIT INFO

clear
 while true; do
  read -p "Do you want to install Syncthing? (y/n)" answer
   case $answer in
           [Yy]* )
   # execute command yes
  curl -s https://syncthing.net/release-key.txt | sudo apt-key add -
  echo "deb https://apt.syncthing.net/ syncthing stable" | sudo tee /etc/apt/sources.list.d/syncthing.list
  sudo apt update && sudo apt -y install syncthing apt-transport-https
  sudo systemctl enable syncthing@$USER.service && sudo systemctl start syncthing@$USER.service
  echo OK
  echo "Access: https://localhost:8384/"
  sleep 2
    break;;
           [Nn]* )
  # execute command no
    break;;
         * ) echo; echo "Please Answer: YES (y) or NO (n)";;
     esac
 done
Programando en el cron (sudo crontab -e):
### Crontab schedule. Example: ###
00 23 * * * /etc/init.d/syncth start
00 05 * * * /etc/init.d/syncth stop
Y el script para su ejecución (root). Reemplace xuser por su usuario:
#!/bin/sh
### BEGIN INIT INFO
# Provides:          syncthing
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Syncthing schedule
# Description:       Enable service provided by daemon.
# By:                Maravento.com
# Script:            syncth
# Path:              /etc/init.d/
### END INIT INFO

### Replace xuser with your user no-root (echo $USER) ###
MYUSER="xuser"

case "$1" in
  start)
    echo "Start Syncthing..."
 systemctl start syncthing@$MYUSER.service
 echo "OK"
 exit
 ;;
  stop)
    echo "Stop Syncthing..."
 systemctl stop syncthing@$MYUSER.service
 # or
 # killall syncthing >/dev/null 2>&1
 echo "OK"
 exit
 ;;
  *)
    echo "Usage: /etc/init.d/syncth {start|stop}"
 exit 1
    ;;
esac
exit 0
Para Windows, es más cómodo instalar SyncTrayzor (requiere NetFramework 4.5x en adelante) y programar su inicio y parada (en el programador de tareas de windows) con el siguiente bat:
startsync.bat (para iniciar):
@echo off
"C:\Program Files\SyncTrayzor\SyncTrayzor.exe" --start-syncthing
exit
stopsync.bat (para detener):
@echo off
"C:\Program Files\SyncTrayzor\SyncTrayzor.exe" --stop-syncthing
exit
Pero si no queremos trabajar con SyncTrayzor, simplemente descargamos syncthing (x86 o x64), lo descomprimimos en la unidad local (ej: c:\Syncthing), lo configuramos y luego programamos su ejecución en el programador de tareas de windows, con el siguiente script (ej: syncthing.bat reemplace start por stop para detener el aplicativo):
@echo off
start "Syncthing" syncthing.exe -no-console -no-browser
exit

Tutoriales recomendados de syncthing: ConfiguraciónGTKNAS, Windows y AlwaysUp
Maravento, Actualizado en: 16:37
Escrito por: Maravento Studio
 
© 2017 Maravento. All Rights Reserved | Powered by Maravento
Design by Novatoz and Maravento | Bloggerized By LawnyDesignz
# https://github.com/google/code-prettify