LINUX

Shell Script para respaldar archivos y directorios usando rsync

archivos de copia de seguridad del script de shell usando rsync

En este artículo traemos scripts de shell para hacer una copia de seguridad de sus archivos y directorios desde su máquina Linux local a un servidor Linux remoto usando el comando rsync. Esta sería una forma interactiva de realizar una copia de seguridad, donde debe proporcionar el nombre de host / dirección IP del servidor de copia de seguridad remoto y la ubicación de la carpeta. Guardamos un archivo separado donde necesita proporcionar archivos y directorios que necesitan copia de seguridad. Hemos agregado dos scripts donde primer guion pedir contraseña después de que se haya copiado cada archivo (si ha habilitado las claves de autenticación ssh, no se le pedirá la contraseña) y en segundo guión La contraseña se solicitará solo una vez.

Vamos a hacer una copia de seguridad de bckup.txt, dataconfig.txt, docs y oracledb.

[root@Fedora21 tmp]# ls -l
total 12
-rw-r – r–. 1 raíz raíz 0 15 de mayo 10:43 bckrsync.sh
-rw-r – r–. 1 raíz raíz 0 15 de mayo 10:44 bckup.txt
-rw-r – r–. 1 raíz raíz 0 15 de mayo 10:46 dataconfig.txt
drwxr-xr-x. 2 root root 4096 15 de mayo 10:45 docs
drwxr-xr-x. 2 raíz raíz 4096 15 de mayo 10:44 oracledb

Este archivo contiene archivos de respaldo / detalles de directorio

[root@Fedora21 tmp]# cat /tmp/bckup.txt
/ tmp / oracledb
/tmp/dataconfig.txt
/ tmp / docs
[root@Fedora21 tmp]#

Guión 1:

#!/bin/bash

#We will save path to backup file in variable
backupf="/tmp/bckup.txt"

#Next line just prints message
echo "Shell Script Backup Your Files / Directories Using rsync"

#next line check if entered value is not null, and if null it will reask user to enter Destination Server
while [ x$desthost = "x" ]; do

#next line prints what userd should enter, and stores entered value to variable with name desthost
read -p "Destination backup Server : " desthost

#next line finishes while loop
done

#next line check if entered value is not null, and if null it will reask user to enter Destination Path
while [ x$destpath = "x" ]; do

#next line prints what userd should enter, and stores entered value to variable with name destpath
read -p "Destination Folder : " destpath

#next line finishes while loop
done

#Next line will start reading backup file line by line
for line in `cat $backupf`

#and on each line will execute next
do

#print message that file/dir will be copied
echo "Copying $line ... "
#copy via rsync file/dir to destination

rsync -ar "$line" "$desthost":"$destpath"

#this line just print done
echo "DONE"

#end of reading backup file
done

Ejecutando el script con salida

[root@Fedora21 tmp]# ./bckrsync.sh
Shell Script Backup Your Files / Directories Using rsync
Destination backup Server : 104.*.*.41
Destination Folder : /tmp
Copying /tmp/oracledb ...
The authenticity of host '104.*.*.41 (104.*.*.41)' can't be established.
ECDSA key fingerprint is 96:11:61:17:7f:fa:......
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '104.*.*.41' (ECDSA) to the list of known hosts.
root@104.*.*.41's password:
DONE
Copying /tmp/dataconfig.txt ...
root@104.*.*.41's password:
DONE
Copying /tmp/docs ...
root@104.*.*.41's password:
DONE
[root@Fedora21 tmp]#

Guión 2:

#!/bin/bash

#We will save path to backup file in variable
backupf="/tmp/bckup.txt"

#Next line just prints message
echo "Shell Script Backup Your Files / Directories Using rsync"

#next line check if entered value is not null, and if null it will reask user to enter Destination Server
while [ x$desthost = "x" ]; do

#next line prints what userd should enter, and stores entered value to variable with name desthost
read -p "Destination backup Server : " desthost

#next line finishes while loop
done

#next line check if entered value is not null, and if null it will reask user to enter Destination Path
while [ x$destpath = "x" ]; do

#next line prints what userd should enter, and stores entered value to variable with name destpath
read -p "Destination Folder : " destpath

#next line finishes while loop
done

#next line check if entered value is not null, and if null it will reask user to enter password
while [ x$password = "x" ]; do
#next line prints what userd should enter, and stores entered value to variable with name password. #To hide password we are using -s key
read -sp "Password : " password
#next line finishes while loop
done

#Next line will start reading backup file line by line
for line in `cat $backupf`

#and on each line will execute next
do

#print message that file/dir will be copied
echo "Copying $line ... "
#we will use expect tool to enter password inside script
/usr/bin/expect << EOD
#next line set timeout to -1, recommended to use
set timeout -1
#copy via rsync file/dir to destination, using part of expect — spawn command

spawn rsync -ar ${line} ${desthost}:${destpath}
#as result of previous command we expect “password” promtp
expect "*?assword:*"
#next command enters password from script
send "${password}r"
#next command tells that we expect end of file (everything finished on remote server)
expect eof
#end of expect pard
EOD
#this line just print done
echo "DONE"

#end of reading backup file
done

Captura de pantalla ejecutando el segundo script con salida

secuencia de comandos rsync

¡Espero que estos scripts te ayuden a realizar copias de seguridad!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar