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