ubuntu server 18.04És important fer còpies de seguretat automàtiques freqüents dels documents de l'arrel del servidor web, per si alguna vegada accidentalment elimineu fitxers o pateixi un hack.

En aquesta guia, realitzarem còpies de seguretat automatitzades diàries i mensuals dels documents, utilitzant tar per crear fitxers tarball, i crontab per automatitzar tot el procés.

 

Prepareu el directori de còpia de seguretat

No hi ha un directori particularment recomanat per realitzar una còpia de seguretat a Linux, de manera que podeu escollir aquest mateixa. En aquesta guia, estem guardant còpies de seguretat a /var/www_backup/. Idealment, els guardaria en un disc extern o en un servidor extern, però en aquesta guia ens centrarem en crear còpies de seguretat localment. Comenceu creant el vostre directori de còpia de seguretat:

sudo mkdir /var/www_backup/

 

Entendre el tar

L'ordre tar en Linux s'utilitza per crear l'arxiu .tar per empaquetar o .tar.gz per crear un arxiu comprimit (anomenats "tarballs" o boles de tar), adequats per emmagatzemar còpies de seguretat. El nom del fitxer i l'extensió d'arxiu poden ser el que vulgueu, però us recomanem que utilitzeu el vostre nom de domini seguit per .tar.gz.

Aquí teniu un exemple de ordre típica de tar, còpia de seguretat de l'arrel del web en /var/www/html a un arxiu /var/www_backup/inforoigpv.sytes.net.tar.gz:

sudo tar -cvpzf /var/www_backup/inforoigpv.sytes.net.tar.gz -C /var/www/ html

És important mantindre aquest ordre perquè pugui ajudar a dividir cada part:

  • sudo tar = executar tar com a superusuari.
  • c = crear un nou fitxer (sobreescriu el fitxer antic).
  • v = verbose (mostrarà el progrés de la còpia de seguretat a la pantalla).
  • p = preservar els permisos (755, 777, etc.).
  • z = comprimir (comprimir l'arxiu en un "tarball").
  • f = nom de l'arxiu.
  • /var/www_backup/inforoigpv.sytes.net.tar.gz = la ruta i el nom de l'arxiu de còpia de seguretat que es crearà.
  • -C = (majúscules C ) = canviar a aquest directori.
  • /var/www/ = la ruta al directori que hi ha a sobre de l'arrel del document.
  •  = ESPAI (Important!).
  • html = el nom del directori arrel del document real.

Les últimes quatre parts ací -C /var/www/ html, estan obligats a mantenir la seua estructura de directoris, en cas contrari ha d'incloure tota la ruta (/var/www/html) en el tarball. Com aquest altre exemple, si l'arrel del vostre lloc es troba en algun lloc com /var/www/example.com/public_html , aquesta part seria -C /var/www/example.com public_html . Aquest espai abans del directori arrel del document és important.

 

Excloent fitxers o carpetes

Si necessiteu excloure un fitxer o un directori en particular de la vostra còpia de seguretat, useu --exclude=/file_or_directory_name. Per exemple, en les nostres còpies de seguretat diàries d'aquest lloc web, excloem el directori caché del WordPress, ubicada a /var/www/html/wp-content/cache:

sudo tar -cvpzf /var/www_backup/inforoigpv.sytes.net.tar.gz --exclude=html/wp-content/cache -C /var/www/ html

Nota: --exclude=html - no incloem la ruta completa aquí, només el nom del directori arrel del lloc. Com aquest altre exemple, suposem que l'arrel del vostre lloc es troba a /var/www/example.com/public_html, llavors la vostra ordre seria: sudo tar -cvpzf /var/www_backup/example.com.tar.gz --exclude=public_html/wp-content/cache -C /var/www/example.com/ public_html

Per excloure més d'un arxiu o directori, simplement repetiu --exclude=/file_or_directory_name separat per un espai tantes vegades com vulgueu.

Un cop hàgeu preparat la vostra ordre de tar, continueu amb el següent pas per provar-lo.

 

Prova de còpia de seguretat

Abans de configurar cron per automatitzar la vostra còpia de seguretat, primer haureu de garantir que la còpia de seguretat i la restauració funcionin correctament. Executeu l'ordre tar al terminal. A l'exemple següent, estem fent una còpia de seguretat de l'arrel d'aquest lloc web:

sudo tar -cvpzf /var/www_backup/inforoigpv.sytes.net.tar.gz -C /var/www/ html

Una vegada que l'ordre s'hagi executat, hauríeu de veure una llista de fitxers que s'estan processant per tar.

Quan hàgeu acabat, llisteu el directori de còpia de seguretat per assegurar-vos que el vostre tarball siga allí. En aquest exemple, veurem la còpia de seguretat d'aquest lloc web. (--block-size=M aquí ens mostra la mida del fitxer en megabytes):

ls -l --block-size=M /var/www_backup/

Sortida:

-rw-r--r-- 1 root root 69M Dec  3 00:16 inforoigpv.sytes.net.tar.gz

A dalt podem veure el nostre tarball .tar.gz, en el directori /var/www_backup/.

 

Restaurar la prova

Creeu un directori /var/www_backup/restore/ per restaurar la còpia de seguretat:

sudo mkdir -p /var/www_backup/restore/

L'ordre per extreure i restaurar un tarball és molt semblant a la que s'utilitza per crear-lo, sent l'única diferència els paràmetres -x i z , que vol dir extreure i descomprimir. A l'exemple següent, anem a extreure inforoigpv.sytes.net.tar.gz al nostre directori de restauració:

sudo tar -xvpzf /var/www_backup/inforoigpv.sytes.net.tar.gz -C /var/www_backup/restore/

Per comprendre açó de nou:

  • sudo tar = executar tar com a superusuari.
  • x = extreure tarball.
  • v = verbose (mostrarà el progrés de la còpia de seguretat a la pantalla).
  • p = preservar els permisos (755, 777, etc.).
  • z = descomprimir.
  • f = nom de l'arxiu.
  • /var/www_backup/inforoigpv.sytes.net.tar.gz = la ruta i el nom del tarball que voleu extreure i restaurar.
  • -C = (majúscules C ) = canviar a aquest directori.
  • /var/www_backup/restore/ = la ruta on voleu restaurar.

Un cop extret el tarball, llisteu el directori de restauració:

ls -l /var/www_backup/restore/

Heu de veure una llista dels vostres fitxers i carpetes arrel del vostre lloc.

Una vegada que hàgiu verificat la restauració, podeu eliminar el directori de restauració i continuar amb el següent pas:

sudo rm -r /var/www_backup/restore/

 

Configurar cron

El cron és un servei a Linux que s'utilitza per programar ordres automatitzades. Aquestes s'emmagatzemen en una taula cron anomenada crontab. Per obrir crontab executeu:

sudo crontab -e

Aneu a la part inferior de l'arxiu i afegiu el seu cronograma i l'ordre tar. En el següent exemple, fem una còpia de seguretat de l'arrel de documents d'aquest lloc web diàriament:

00 01 * * * sudo tar -cvpzf /var/www_backup/inforoigpv.sytes.net.tar.gz -C /var/www/ html

00 01 * * * executarà l'ordre a la 1am cada 24 hores i sobreescriurà qualsevol tarball actual. Com a prova, podeu canviar-ho perquè s'executi en els propers 3 minuts. Si el vostre temps és ara a les 16:30, introduïu 33 16 * * * perquè s'executi a les 16:33. (Per obtenir més informació sobre com configurar els horaris de cron, vegeu Freqüència de còpia de seguretat i retenció a continuació).

Deseu i tanqueu crontab per iniciar el cron. (si feu servir nano, premeu CTRL + X, premeu Y, a continuació, premeu ENTER).

Espereu al directori de la còpia de seguretat que s'execute, fins que vegeu el vostre tarball:

ls -l /var/www_backup/restore/
-rw-r--r-- 1 root root 69M Dec 3 16:33 inforoigpv.sytes.net.tar.gz

 Si el vostre tarball no apareix després d'un temps, assegureu-vos que l'ordre i el temps del crontab són correctes. També podeu consultar el registre cron amb:

sudo grep CRON /var/log/syslog

Un cop hàgiu verificat que el cron s'està executant, podeu canviar l'horari al vostre temps preferit.

 

Freqüència de còpia de seguretat i retenció

En els passos anteriors, vam aprendre a configurar cron per executar cada 24 hores i sobreescriure el nostre tarball. Tanmateix, és possible que vulgueu conservar diverses còpies de seguretat distribuïdes durant una setmana o més.

Ara aprendrem a configurar els horaris a crontab i incloem una marca de temps al nom del fitxer de tarball per permetre l'arxivat més organitzat de diversos fitxers.

Horari de crontab

L'entrada de crontab predeterminada comença amb 5 estrelles seguida d'una ordre, que s'executarà una vegada per minut. Podeu canviar-les segons el vostre horari exacte per minut, hora, dia del mes, mes i dia de la setmana.

.------------ minut (0-59) (* = cada minut).
| .---------- hora (0-23) (* = cada hora).
| | .-------- dia del mes (1-31) (* = cada dia).
| | | .------ mes (1-12 or gen-des) (* = cada mes).
| | | | .---- dia de la setmana (0-6 or dill-diu) (Diumenge=0) (* = cada dia).
| | | | |
* * * * * ordre_per_executar

Exemples:

30 23 * * *       Cada dia a les 11.30pm.
0 0 * * *         Cada dia a la mitjanit (00:00).
*/10 * * * *      Cada 10 minuts.
0 */12 * * *      Cada 12 hores. 
0 17 * * sun      Cada Diumenge a les 5pm.
0 17 * * sun,mon  Cada Diumenge i Dilluns a les 5pm.
0 5,17 * * *      A les 5am i 17:00 diàriament.
0 12 1 jan,feb *  A les 12pm del dia 1 de cada gener i febrer.
0 0 1 * *         El primer dia de cada mes a la mitjanitThe 1st day of every month at midnight

 

Les marques de temps al nom del Fitxer

Anem a provar la variable de date amb echo . Per fer echo de la data actual en el format YYYY-MM-DD:

echo `date +%Y-%m-%d`
2018-12-07

Per obtenir el nombre del dia de la setmana (0 a 6, on 0 és diumenge i 6 és dissabte):

echo `date +%w`
2

A dalt podem veure que el dia és de 2 per al dimarts.

També podeu fer echo del nom del dia de la setmana:

echo `date +%a`
Tue

Per obtenir una llista completa de caràcters de control compatibles amb l'ordre de date , consulteu:

Linux Shell Script Date Format

Podem utilitzar aquests caràcters de control de data a crontab per donar als nostres fitxers noms de fitxer únics. Al següent pas, mostrarem alguns exemples i escenaris de còpia de seguretat utilitzant horaris de crontab i marques de temps en noms de fitxer.

 

Exemples de Còpia de Seguretat

Només una còpia de seguretat diària

Si només voleu una còpia de seguretat diària, utilitzeu el crontab següent per crear una còpia de seguretat a les 1 am cada matí. El tarball es sobreescriu diàriament.

00 01 * * * sudo tar -cvpzf /var/www_backup/inforoigpv.sytes.net.diaria.tar.gzdaily.tar.gz -C /var/www/ html

Copia de seguretat de 7 dies

En aquest cas, realitzarem una còpia de seguretat de l'arrel del lloc a la 1am i guardarem una còpia per a cada dia de la setmana. Aquesta és la mateixa configuració de còpia de seguretat que tenim per a aquest lloc web.

00 01 * * * sudo tar -cvpzf /var/www_backup/inforoigpv.sytes.net.`date +\%w`.tar.gz -C /var/www/ html

Això iniciarà una còpia de seguretat cada 1am, `date +\%w` aquí afegirà el dia de la setmana al nom del fitxer (0 per al diumenge fins a les 6 del dissabte). Això és perquè tinga un arxiu comprimit per a cada un dels darrers 7 dies i no haja de preocupar-se per purgar còpies antigues. Tingueu en compte que per utilitzar el símbol % en crontab , s'ha d'escapar amb \, en cas contrari el cron fallarà.

Ací teniu una llista del nostre directori de restauració que mostra una còpia de seguretat per a cada dia de la setmana. Les còpies de seguretat més antigues se sobreescriuen automàticament:

ls -l /var/www_backup/restore/
-rw-r--r-- 1 root root 69M Dec 3 01:00 inforoigpv.sytes.net.0.tar.gz
-rw-r--r-- 1 root root 70M Dec 4 01:00 inforoigpv.sytes.net.1.tar.gz
-rw-r--r-- 1 root root 70M Dec 5 01:00 inforoigpv.sytes.net.2.tar.gz
-rw-r--r-- 1 root root 70M Dec 6 01:00 inforoigpv.sytes.net.3.tar.gz
-rw-r--r-- 1 root root 72M Dec 7 01:00 inforoigpv.sytes.net.4.tar.gz
-rw-r--r-- 1 root root 73M Dec 8 01:00 inforoigpv.sytes.net.5.tar.gz
-rw-r--r-- 1 root root 73M Dec 9 01:00 inforoigpv.sytes.net.6.tar.gz

Còpia de seguretat de 12 mesos

Un altre cron que hem configurat per a aquest lloc web és una còpia de seguretat mensual que es remunta a un any.

0 0 1 * * sudo tar -cvpzf /var/www_backup/inforoigpv.sytes.net.`date +\%b`.tar.gz -C /var/www/ html

Aquesta part `date +\%b` afegirà el nom del mes al nom del fitxer tarball perquè tinga una còpia de seguretat cada mes de l'any:

ls -l /var/www_backup/restore/
-rw-r--r-- 1 root root 69M Jan 1 00:00 inforoigpv.sytes.net.Jan.tar.gz
-rw-r--r-- 1 root root 70M Feb 1 00:00 inforoigpv.sytes.net.Feb.tar.gz
-rw-r--r-- 1 root root 70M Mar 1 00:00 inforoigpv.sytes.net.Mar.tar.gz
-rw-r--r-- 1 root root 70M Apr 1 00:00 inforoigpv.sytes.net.Apr.tar.gz
-rw-r--r-- 1 root root 72M May 1 00:00 inforoigpv.sytes.net.May.tar.gz
-rw-r--r-- 1 root root 73M Jun 1 00:00 inforoigpv.sytes.net.Jun.tar.gz
-rw-r--r-- 1 root root 73M Jul 1 00:00 inforoigpv.sytes.net.Jul.tar.gz

Ací teniu una llista del directori de restauració que mostra la còpia de seguretat mensual. A mesura que passen els anys, els fitxers més antics només es sobreescriuran.

 

Nota: Ara que teniu una còpia de seguretat dels documents del vostre servidor web, també us recomanem que feu una còpia de seguretat de les vostres bases de dades.

 

Font: DevAnswers