Mantener sitios web remotos con Sitecopy en Ubuntu 18.04

Sitecopy es una herramienta para copiar sitios web almacenados localmente a un servidor web remoto (mediante FTP o WebDAV). Te ayuda a mantener el sitio remoto sincronizado con tu copia local, subiendo los archivos locales modificados y eliminando los archivos remotos borrados en el ordenador local. Este tutorial te muestra cómo gestionar tu sitio remoto desde tu escritorio local de Ubuntu 18.04 con Sitecopy.

1 Nota preliminar

Estoy utilizando el nombre de usuario till en mi escritorio local de Ubuntu (he iniciado sesión en mi escritorio local de Linux como ese usuario – por favor, no inicies sesión como root). Los archivos del sitio web remoto example.com se almacenan en el directorio /home/till/sites/example.com/ en el ordenador local. La raíz del documento remoto es /var/www/ejemplo.com/web/.

Puedes utilizar sitecopy con FTP y WebDAV, así que debes tener una cuenta FTP o WebDAV en el servidor remoto. Aquí estoy utilizando el nombre de usuario FTP defaulttill y la contraseña howtoforge.

El sitio web remoto que utilizo para estos ejemplos ha sido creado con ISPConfig. Pero cualquier sitio al que tengas acceso FTP o WebDAV funcionará.

2 Instalar sitecopy

Sitecopy se puede instalar en el escritorio local de la siguiente manera (necesitamos privilegios de root, por lo que usamos sudo):

sudo apt-get -y install sitecopy

Ahora deberías echar un vistazo a la página man de sitecopy para familiarizarte con sus opciones:

man sitecopy

3 Configurar sitecopy

Ve a tu directorio principal en el escritorio local…

cd ~

… y crea el directorio .sitecopy con permisos de 700 (sitecopy utiliza ese directorio para almacenar los detalles de los archivos):

mkdir -m 700 .sitecopy

A continuación, crea el archivo de configuración de sitecopy . sitecopyrc:

touch .sitecopyrc
chmod 600 .sitecopyrc

Abre el archivo…

nano .sitecopyrc

… y rellena la configuración para el sitio example.com. Aquí tienes dos ejemplos, uno para FTP…

site example.com
  server example.com
  username defaulttill
  password howtoforge
  local /home/till/sites/example.com/
  remote ~/web/
  exclude *.bak
  exclude *~

… y otro para WebDAV:

site example.com
  server example.com
  protocol webdav
  username defaulttill
  password howtoforge
  local /home/till/sites/example.com/
  remote /var/www/example.com/web/
  exclude *.bak
  exclude *~

(Puedes definir una estrofa para cada sitio web que quieras gestionar con sitecopy).

La directiva de sitio debe ir seguida de un nombre para el sitio web: puedes elegirlo libremente, por ejemplo, ejemplo.com o mysite. Este nombre se utilizará más adelante en los comandos de sitecopy. ¡Las siguientes opciones de configuración que pertenezcan a ese sitio deben ir con sangría!

La mayoría de las siguientes opciones de configuración se explican por sí mismas. El protocolo por defecto es FTP; si quieres utilizar WebDAV, especifica el protocolo webdav. La directiva local contiene la ruta local de la copia del sitio web, la remota contiene la ruta del sitio web en el servidor remoto – puede ser absoluta o relativa. Si tu usuario es chroot (como suele ser el caso de los usuarios de FTP), debes utilizar una ruta relativa (como ~/ o ~/web). En caso contrario, utiliza una ruta absoluta.

Las líneas de exclusión son opcionales, están aquí sólo para demostrar cómo puedes excluir archivos de ser mantenidos por sitecopy.

Puedes encontrar más información sobre la configuración de sitecopy en su página man:

man sitecopy

4 Primer uso

Antes de utilizar sitecopy por primera vez, tienes que decidir cuál de los tres escenarios siguientes se ajusta a tu situación:

  1. Sitio remoto existente y copia local, ambos sincronizados.
  2. Sitio remoto existente, sin copia local.
  3. Sitio remoto nuevo, copia local existente.

4.1 Sitio remoto existente y copia local, ambos sincronizados

Si tanto el sitio remoto como la copia local existen y están sincronizados, ejecuta

sitecopy --catchup example.com

para que sitecopy piense que el sitio local es exactamente el mismo que la copia remota. Sustituye ejemplo.com por el nombre del sitio que utilices en el archivo .sitecopyrc.

[email protected]:~$ sitecopy --catchup example.com
sitecopy: Catching up site `example.com' (on example.com in ~/web/)
sitecopy: All the files and and directories are marked as updated remotely.

4.2 Sitio remoto existente, sin copia local

Si no tienes una copia local del sitio web remoto existente, ejecuta

sitecopy --fetch example.com

primero para que sitecopy obtenga la lista de archivos del servidor remoto (sustituye ejemplo . com por el nombre del sitio que utilices en el archivo . sitecopyrc ):

[email protected]:~$ sitecopy --fetch example.com
sitecopy: Fetching site `example.com' (on example.com in ~/web/)
File: error/503.html - size 1906
File: error/502.html - size 1881
File: error/500.html - size 1851
File: error/405.html - size 1810
File: error/404.html - size 1806
File: error/403.html - size 1809
File: error/401.html - size 1806
File: error/400.html - size 1792
File: stats/.htaccess - size 128
File: robots.txt - size 14
File: index.html - size 1861
File: favicon.ico - size 7358
File: .htaccess - size 26
Directory: error/
Directory: stats/
sitecopy: Fetch completed successfully.

A continuación, ejecuta

sitecopy --synch example.com

para actualizar el sitio local desde la copia remota.

sitecopy: Synchronizing site `example.com' (on example.com in ~/web/)
Creating error/: done.
Creating stats/: done.
Downloading error/503.html: [.] done.
Downloading error/502.html: [.] done.
Downloading error/500.html: [.] done.
Downloading error/405.html: [.] done.
Downloading error/404.html: [.] done.
Downloading error/403.html: [.] done.
Downloading error/401.html: [.] done.
Downloading error/400.html: [.] done.
Downloading stats/.htaccess: [.] done.
Downloading robots.txt: [.] done.
Downloading index.html: [.] done.
Downloading favicon.ico: [.] done.
Downloading .htaccess: [.] done.
sitecopy: Synchronize completed successfully.

4.3 Nuevo sitio remoto, copia local existente

Si la copia local existe, pero tienes un sitio remoto vacío, ejecuta

sitecopy --init example.com

para inicializar el sitio. Sustituye ejemplo.com por el nombre del sitio que utilices en el archivo .sitecopyrc.

[email protected]:~$ sitecopy --init example.com
sitecopy: Initializing site `example.com' (on example.com in ~/web/)
sitecopy: All the files and directories are marked as NOT updated remotely.

A continuación, ejecuta

sitecopy --update example.com

para subir la copia local al sitio remoto:

[email protected]:~$ sitecopy --update example.com
sitecopy: Updating site `example.com' (on example.com in ~/web/)
Creating stats/: done.
Creating data/: done.
Creating error/: done.
Uploading stats/.htaccess: [.] done.
Uploading data/index.html: [.] done.
Uploading error/403.html: [.] done.
Uploading error/401.html: [.] done.
Uploading error/404.html: [.] done.
Uploading error/503.html: [.] done.
Uploading error/400.html: [.] done.
Uploading error/502.html: [.] done.
Uploading error/405.html: [.] done.
Uploading error/500.html: [.] done.
Uploading index.html: [.] done.
Uploading robots.txt: [.] done.
Uploading .htaccess: [.] done.
Uploading favicon.ico: [.] done.
sitecopy: Update completed successfully.

5 Utilizar sitecopy

Después, el uso de sitecopy es realmente sencillo. Puedes trabajar con tu copia local y actualizar, crear y eliminar archivos. Un primer paso, aunque opcional, es ejecutar

sitecopy example.com

para averiguar qué archivos han cambiado localmente (sustituye ejemplo.com por el nombre del sitio que utilizas en el archivo .sitecopyrc ):

[email protected]:~$ sitecopy example.com
sitecopy: Showing changes to site `example.com' (on example.com in ~/web/)
* These items have been added since the last update:
info.php
sitecopy: The remote site needs updating (1 item to update).

Para sincronizar tu sitio web remoto con tu copia local (es decir, cargar los archivos nuevos y modificados en el servidor remoto y eliminar los archivos del servidor remoto que se han eliminado localmente), simplemente ejecuta

sitecopy --update example.com
[email protected]:~$ sitecopy --update example.com
sitecopy: Updating site `example.com' (on example.com in ~/web/)
Uploading info.php: [] done.
sitecopy: Update completed successfully.

¡Eso es todo! ¡Diviértete con sitecopy!

6 Enlaces

También te podría gustar...