diff --git a/linux/backups_manage/manage_backups.py b/linux/backups_manage/manage_backups.py index 0bde107..7f70a75 100644 --- a/linux/backups_manage/manage_backups.py +++ b/linux/backups_manage/manage_backups.py @@ -98,7 +98,7 @@ def listar_subdiretorios_usuarios(logger): return subdiretorios def processar_arquivos_antigos(usuario, logger): - """Move arquivos antigos do diretório do usuário para a pasta de arquivamento.""" + """Move arquivos antigos do diretório do usuário para a pasta de arquivamento recursivamente.""" origem = os.path.join(DIRETORIO_BASE, usuario) destino_base = os.path.join(DIR_ANTIGOS, usuario) @@ -108,28 +108,31 @@ def processar_arquivos_antigos(usuario, logger): arquivos_movidos = 0 try: - destino_criado = False + for root, dirs, files in os.walk(origem): + caminho_relativo = os.path.relpath(root, origem) + diretorio_destino = os.path.join(destino_base, caminho_relativo) - for arquivo in os.listdir(origem): - caminho_arquivo = os.path.join(origem, arquivo) - - if not os.path.isfile(caminho_arquivo): - continue - - _, ext = os.path.splitext(arquivo) - if ext.lower() in [e.lower() for e in EXTENSOES_IGNORAR]: - continue - - idade = idade_arquivo_dias(caminho_arquivo) - - if idade > DIAS_MOVER: - if not destino_criado: - os.makedirs(destino_base, exist_ok=True) - destino_criado = True + for arquivo in files: + caminho_arquivo = os.path.join(root, arquivo) - shutil.move(caminho_arquivo, os.path.join(destino_base, arquivo)) - logger.info(f"Movido: {usuario}/{arquivo} ({idade} dias) -> {destino_base}") - arquivos_movidos += 1 + _, ext = os.path.splitext(arquivo) + if ext.lower() in [e.lower() for e in EXTENSOES_IGNORAR]: + continue + + try: + idade = idade_arquivo_dias(caminho_arquivo) + + if idade > DIAS_MOVER: + os.makedirs(diretorio_destino, exist_ok=True) + + destino_arquivo = os.path.join(diretorio_destino, arquivo) + shutil.move(caminho_arquivo, destino_arquivo) + + caminho_log = arquivo if caminho_relativo == "." else os.path.join(caminho_relativo, arquivo) + logger.info(f"Movido: {usuario}/{caminho_log} ({idade} dias) -> {diretorio_destino}") + arquivos_movidos += 1 + except Exception as e: + logger.error(f"Erro ao processar arquivo {caminho_arquivo}: {e}") except Exception as e: logger.error(f"Erro ao processar usuário {usuario}: {e}") @@ -150,7 +153,6 @@ def limpar_arquivos_antigos(logger): for file in files: caminho_arquivo = os.path.join(root, file) - # Verificar extensão ignorada _, ext = os.path.splitext(file) if ext.lower() in [e.lower() for e in EXTENSOES_IGNORAR]: continue @@ -168,7 +170,7 @@ def limpar_arquivos_antigos(logger): for root, dirs, files in os.walk(DIR_ANTIGOS, topdown=False): for name in dirs: caminho_dir = os.path.join(root, name) - if not os.listdir(caminho_dir): # Se estiver vazio + if not os.listdir(caminho_dir): os.rmdir(caminho_dir) logger.debug(f"Removido diretório vazio: {caminho_dir}")