Automatice la copia de seguridad con Python Script

En este artículo, veremos cómo automatizar la copia de seguridad con un script de Python.

Las copias de seguridad de archivos son esenciales para conservar sus datos en el almacenamiento local. Usaremos los módulos shutil , os y sys . En este caso, el módulo shutil se usa para copiar datos de un archivo a otro, mientras que los módulos os y sys se usan para obtener la ruta del directorio, etc.

Implementación paso a paso:

Paso 1:  importa los siguientes módulos

Python3

import shutil
from datetime import date
import os
import sys

Paso 2: obtengamos ahora la fecha de hoy usando el módulo de fecha y hora.

Python3

today = date.today()
date_format = today.strftime("%d_%b_%Y_")

Paso 3: si el usuario especifica la ruta al archivo de origen, use la línea a continuación para concatenar la ruta al archivo de origen con el nombre del archivo de origen.

Python3

src_dir = src_dir+src_file_name

De lo contrario, y su archivo está almacenado en el mismo directorio que su secuencia de comandos de Python actual, use el módulo os para determinar la ruta actual del archivo y cree el directorio de origen combinando la ruta proporcionada por el módulo os con el nombre del archivo de origen.

Python3

os.chdir(sys.path[0])

Paso 4: si el usuario no especifica el nombre del archivo de origen, debemos devolver un error de archivo no existente.

Python3

if not src_file_name:
   print("Please give atleast the Source File Name")

Paso 5: Ahora, use los siguientes casos para probar las condiciones necesarias.

Si el usuario proporciona todas las entradas, como el nombre del archivo de origen, la ruta del archivo de origen , el nombre del archivo de destino y la ruta del archivo de destino .

Python3

if src_file_name and dst_file_name and src_dir and dst_dir:
     src_dir = src_dir+src_file_name
     dst_dir = dst_dir+dst_file_name

Si el nombre del archivo de destino es Ninguno, lo que indica que el usuario no especificó un nombre de archivo de destino, utilice las condiciones que se enumeran a continuación.

Python3

elif dst_file_name is None or not dst_file_name:
       dst_file_name = src_file_name
       dst_dir = dst_dir+date_format+dst_file_name

Si un usuario ingresa una string vacía con uno o más espacios.

Python3

elif dst_file_name.isspace():
      dst_file_name = src_file_name
      dst_dir = dst_dir+date_format+dst_file_name

Si el usuario ingresa el nombre de la copia de respaldo, simplemente concatene el directorio de destino , la fecha y el nombre del archivo de destino para crear el nombre del archivo de salida.

Python3

else:
      dst_dir = dst_dir+date_format+dst_file_name

Paso 6: Finalmente, simplemente necesitamos usar la función shutil para copiar el archivo al destino.

Python3

shutil.copy2(src_dir, dst_dir)

Nota: Si queremos hacer una copia de seguridad de toda la carpeta en lugar de archivos individuales, debemos usar el código a continuación.

shutil.copytree(src_file_name, dst_dir)

A continuación se muestra la implementación completa:

Python3

# Import the following modules
import shutil
from datetime import date
import os
import sys
  
# When there is need, just change the directory
os.chdir(sys.path[0])  
  
# Function for performing the
# backup of the files and folders
def take_backup(src_file_name, 
                dst_file_name=None,
                src_dir='', 
                dst_dir=''):
    try:
        
          # Extract the today's date
        today = date.today()  
        date_format = today.strftime("%d_%b_%Y_")
  
        # Make the source directory,
        # where we wanna backup our files
        src_dir = src_dir+src_file_name
  
        # If user not enter any source file,
        # then just give the error message...
        if not src_file_name:
            print("Please give atleast the Source File Name")
            exit()
  
        try:
            
            # If user provides all the inputs
            if src_file_name and dst_file_name and src_dir and dst_dir:
                src_dir = src_dir+src_file_name
                dst_dir = dst_dir+dst_file_name
                  
            # When User Enter Either 
            # 'None' or empty String ('')
            elif dst_file_name is None or not dst_file_name:
                dst_file_name = src_file_name
                dst_dir = dst_dir+date_format+dst_file_name
                  
            # When user Enter an empty
            # string with one or more spaces (' ')
            elif dst_file_name.isspace():
                dst_file_name = src_file_name
                dst_dir = dst_dir+date_format+dst_file_name
                  
            # When user Enter an a
            # name for the backup copy
            else:
                dst_dir = dst_dir+date_format+dst_file_name
  
            # Now, just copy the files
            # from source to destination
            shutil.copy2(src_dir, dst_dir)
  
            print("Backup Successful!")
        except FileNotFoundError:
            print("File does not exists!,\
            please give the complete path")
      
    # When we need to backup the folders only...
    except PermissionError:  
        dst_dir = dst_dir+date_format+dst_file_name
          
        # Copy the whole folder
        # from source to destination
        shutil.copytree(src_file_name, dst_dir)
  
# Call the function
take_backup("GFG.txt")

Producción:

Copia de seguridad de carpetas:

Publicación traducida automáticamente

Artículo escrito por gittysatyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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