Automatize o backup com Python Script
Neste artigo, veremos como automatizar o backup com um script Python.
Os backups de arquivos são essenciais para preservar seus dados no armazenamento local. Nós vamos usar o shutil , OS , e sys módulos. Nesse caso, o módulo shutil é usado para copiar dados de um arquivo para outro, enquanto os módulos os e sys são usados para obter o caminho do diretório e assim por diante.
Implementação Stepwise:
Etapa 1: importe os seguintes módulos
import shutil
from datetime import date
import os
import sys
Etapa 2: vamos agora obter a data de hoje usando o módulo datetime.
today = date.today()
date_format = today.strftime("%d_%b_%Y_")
Etapa 3: se o usuário especificar o caminho para o arquivo de origem, use a linha abaixo para concatenar o caminho para o arquivo de origem com o nome do arquivo de origem.
src_dir = src_dir+src_file_name
Caso contrário, e seu arquivo estiver armazenado no mesmo diretório que seu script Python atual, use o módulo os para determinar o caminho atual do arquivo e crie o diretório de origem combinando o caminho fornecido pelo módulo os com o nome do arquivo de origem.
os.chdir(sys.path[0])
Etapa 4: Se o usuário não especificar o nome do arquivo de origem, devemos retornar um erro de arquivo não existe.
if not src_file_name:
print("Please give atleast the Source File Name")
Etapa 5: Agora, use os seguintes casos para testar as condições necessárias.
Se o usuário fornece todos os insumos, tais como o nome da fonte de arquivo , caminho do arquivo fonte , nome do arquivo de destino e caminho do arquivo de destino .
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
Se o nome do arquivo de destino for Nenhum, o que indica que o usuário não especificou um nome de arquivo de destino, use as condições listadas abaixo.
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
Se um usuário inserir uma string vazia com um ou mais espaços.
elif dst_file_name.isspace():
dst_file_name = src_file_name
dst_dir = dst_dir+date_format+dst_file_name
Se o usuário inserir o nome da cópia de backup, apenas concatene o diretório de destino , a data e o nome do arquivo de destino para criar o nome do arquivo de saída.
else:
dst_dir = dst_dir+date_format+dst_file_name
Etapa 6: Por fim, simplesmente precisamos usar a função shutil para copiar o arquivo para o destino.
shutil.copy2(src_dir, dst_dir)
Nota: Se quisermos fazer backup de toda a pasta em vez de arquivos individuais, devemos usar o código abaixo.
shutil.copytree(src_file_name, dst_dir)
Abaixo está a implementação completa:
# 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")
Saída:
Backup de pastas:
Atenção geek! Fortaleça suas bases com o Python Programming Foundation Course e aprenda o básico.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva