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 (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 sin sudo el comando echo $USER)
#!/bin/sh
### Replace "user" with your user no-root (echo $USER)
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" 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.
Error Notificación Ubuntu Mate
En Ubuntu Mate, es probable que salga algún error de notificación, debido a que esta distribución utiliza "caja-dropbox".
También podemos agregar una variable al script apuntando a la carpeta local donde tenemos alojado Dropbox. Esto es muy útil si manejamos varias cuentas de Dropbox en el mismo terminal, para iniciarlas todas.
MY_FOLDER_DBOX=$HOME/Dropbox
MY_FOLDER2_DBOX=$HOME/ANOTHER_PATH/Dropbox
sudo -H -u $MYUSER bash -c 'DISPLAY=:0 $MY_FOLDER_DBOX /usr/bin/dbus-launch dropbox start -i &' >/dev/null 2>&1
sudo -H -u $MYUSER bash -c 'DISPLAY=:0 $MY_FOLDER2_DBOX /usr/bin/dbus-launch dropbox start -i &' >/dev/null 2>&1
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 (Tested on Ubuntu 16.04)
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
### Replace "user" with your user no-root (echo $USER)
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 (Tested on Ubuntu 16.04)
Use los siguientes comandos para instalarlo (no-root):
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
Ahora acceda por https://localhost:8384/. Y el script para su ejecución (root). Reemplace user por su usuario:
#!/bin/sh
### Replace "user" with your user no-root (echo $USER)
MYUSER="user"

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
Es importante que cada ves que actualicemos syncthing es necesario recargar al rey de los demonios "systemctl" (systemctl daemon-reload) o sino saldrá el siguiente mensaje:
Warning: syncthing@user.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Programando en el cron (sudo crontab -e):
### Crontab schedule. Example: ###
00 23 * * * /etc/init.d/syncth start
00 05 * * * /etc/init.d/syncth stop
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ónGTKNASWindows y AlwaysUp
Programando sincronización con pCloud (Tested on Ubuntu 16.04)
pCloud es quizás uno de los mejores servicios que actualmente existen en la nube y su uso es muy sencillo, ya que no requiere de instalación, por ser una AppImage (similar a un portable en Windows). Simplemente descargamos el archivo AQUI y lo guardamos en cualquier parte. Para efectos de este tutorial lo guardaremos en Home. Ahora lo ejecutamos por primera vez para ingresar en nuestra cuenta. Normalmente crea una carpeta en Home llamada pCloudDrive, donde montará el disco virtual.
Para programar su inicio y apagado, use el siguiente script y ejecútelo con privilegios. Si utilizó otra ubicación para guardar el programa, modifique la variable pcloudpath:
#!/bin/sh
### Replace "user" with your user no-root (echo $USER)
MYUSER="user"
pcloudpath="/home/$MYUSER/pcloud"

case "$1" in
  start)
    echo "Start pCloud..."
    sudo -H -u $MYUSER bash -c 'DISPLAY=:0 /usr/bin/dbus-launch '"$pcloudpath"' start -i &' >/dev/null 2>&1
    exit
 ;;
  stop)
    echo "Stop pCloud..."
    killall pcloud
 ;;
  *)
    echo "Usage: pcloud {start|stop}"
 exit 1
    ;;
esac
exit 0
Podemos utilizar pCloud para guardar copias de seguridad de nuestros archivos directamente en la nube, sin pasar por el disco duro, lo cual es beneficioso si tenemos un disco SSD. Con el siguiente script guardamos estos archivos comprimidos (ya que la versión gratuita solo ofrece 10GB) aunque se puede modificar para que los guarde normalmente. Se utiliza de la misma manera que los scripts de syncthing, dropbox y mega, explicados anteriormente. Modifique la variable $bk y cambie la ruta del directorio y/o archivos que va a respaldar
#!/bin/sh
### Replace "user" with your user no-root (echo $USER)
MYUSER="user"
pcloudd="/home/$MYUSER/pCloudDrive"
ZIPNAME="backup_$(date +%Y%m%d_%H%M).zip"
bk="/my_folder_backup/*"
date=`date +%d/%m/%Y" "%H:%M:%S`
sudouser="sudo -i -u $MYUSER"
log="/var/log/syslog"

case "$1" in
  'start')
 $sudouser zip -r $pcloudd/$ZIPNAME $bk
        echo "Backup Start $date" >> $log
 ;;
  'stop')
 ;;
  *)
 echo "Usage: $0 { start | stop }"
 ;;
esac
exit 0
Nota: Si va a respaldar directorios o archivos que no requieren de privilegios, entonces elimine la variable $sudouser y modifique la ruta de la variable $log a un path que no requiera privilegios (ej: Home).
pCloud normalmente se monta en un directorio temporal (ej: /tmp/.mount_pcloudjUJB13 al directorio en la carpeta /home/user/pCloudDrive) pero existe una versión en línea de comandos llamada pcloudcom, que es más flexible y nos permite montar en el directorio de nuestra elección.
Con la tecnología de Blogger.