-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathBackupAutomatizadoWindows.cpp
More file actions
105 lines (86 loc) · 3.71 KB
/
BackupAutomatizadoWindows.cpp
File metadata and controls
105 lines (86 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <windows.h>
#include <cstdlib>
#include <iostream>
#include <chrono>
#include <thread>
#include <ctime>
// Función para mostrar un mensaje de recordatorio para el backup
void ShowReminder() {
MessageBox(NULL,
TEXT("Hay que realizar el backup de archivos manual en un disco duro externo."),
TEXT("Recordatorio de Backup"),
MB_ICONWARNING | MB_OK);
}
int main() {
// Ocultar la ventana de la consola
while (true) {
// Obtener la hora actual
time_t now = time(NULL);
tm *now_tm = localtime(&now);
// Comprobar si es mediodía (12:00)
if (now_tm->tm_hour == 12 && now_tm->tm_min == 01) {
//EXTRAEMOS CARPETA COMPRIMIDA .ZIP CON PASSWORD
// Ruta al ejecutable de 7z, ajusta según la ubicación en tu sistema
const char* path7z = "7z.exe";
// Ruta al archivo ZIP
const char* zipFile = "D:\\backup.jmsec";
// Directorio de destino donde se extraerán los archivos
const char* outputDir = "D:\\backup\\";
// Contraseña del archivo ZIP
const char* password = "BackupJMS";
// Comando completo para ejecutar la extracción
char command[1024];
sprintf(command, "%s x \"%s\" -o\"%s\" -p%s -y", path7z, zipFile, outputDir, password);
// Ejecuta el comando
int result = system(command);
// Verificar si el comando se ejecutó correctamente
if (result == 0) {
std::cout << "La extracción se completó exitosamente." << std::endl;
} else {
std::cout << "Hubo un error al extraer el archivo." << std::endl;
}
Sleep(10000);
//UNA VEZ EXTRAIDO EN LA CARPETA BACKUP QUE DEJAMOS SIEMPRE COMO COPIA SIN CIFRAR, PROCEDEMOS A BACKUP INCREMENTAL CON XCOPY
// Define el comando de XCOPY para realizar el backup incremental
const char* origen = "C:\\nc";
const char* destino = "D:\\backup";
char commandxcopy[1024];
sprintf(commandxcopy, "xcopy %s %s /E /H /R /Y /I /D", origen, destino);
// Ejecuta el comando usando system()
int result1 = system(commandxcopy);
// Verifica si el comando se ejecutó correctamente
if (result1 == 0) {
std::cout << "El backup incremental se completó exitosamente." << std::endl;
} else {
std::cout << "Hubo un error al realizar el backup." << std::endl;
}
//COMPRIMIMOS CARPETA CON 7Z CON PASSWORD
// Ruta al directorio o archivo que quieres comprimir
const char* inputPath = "D:\\backup\\*";
// Comando completo para ejecutar la compresión
char commandcompress[1024];
// Asegúrate de que la contraseña y el archivo de salida estén correctamente especificados
sprintf(commandcompress, "%s a -tzip \"%s\" \"%s\" -p%s -y", path7z, zipFile, inputPath, password);
// Ejecuta el comando
puts(commandcompress);
int result2 = system(commandcompress);
// Verificar si el comando se ejecutó correctamente
if (result2 == 0) {
std::cout << "La compresión se completó exitosamente." << std::endl;
} else {
std::cout << "Hubo un error al comprimir el archivo." << std::endl;
}
// Esperar 60 segundos después de ejecutar para evitar múltiples ejecuciones en el mismo minuto
Sleep(1000);
}
SYSTEMTIME st;
GetLocalTime(&st); // Obtiene la fecha y hora local actual
// Verifica si hoy es día 1 o 15 del mes
if (st.wDay == 1 || st.wDay == 15) {
ShowReminder(); // Muestra el recordatorio
}
// Espera 24 horas antes de comprobar de nuevo
//Sleep(86400000); // 86400000 milisegundos = 24 horas
}
return 0;
}