Acabo de publicar un artículo enseñándote a respaldar un archivo o directorio de manera programada con Telegram. En este artículo te voy a enseñar a respaldar periódicamente un fichero o carpeta en la nube de Telegram.
Con el código presentado en este post serás capaz de hacer un backup diario, cada semana, cada inicio de mes, cada hora, cada segundo, todos los viernes, etcétera. Basta con ejecutar el programa una vez y según la configuración se harán respaldos cada tiempo que tú indiques en la nube de Telegram.
Veamos cómo combinar el Cron de Golang con los Bots de Telegram para hacer respaldos en la nube periódicamente.
En un post anterior te enseñé a respaldar una carpeta o un fichero de cualquier tipo en la nube de Telegram, pero ese respaldo solo se hará una vez cuando ejecutes el programa. Ese post es la base de este, y te recomiendo revisarlo en profundidad en caso de que quieras comprender cómo es que se hace el backup en la nube de Telegram gracias a los Bots.
Gracias al código presente en ese post puedes enviar un archivo a cualquier usuario, grupo o canal de Telegram saltando el límite de tamaño. Y con lo que veremos a continuación podrás programar respaldos semanales, mensuales, diarios o incluso cada 10 segundos.
También he explicado en el mismo post cómo unir los archivos en caso de que hayan sido divididos.
Conocí cron o crontab al trabajar con Linux para hacer respaldos periódicos y dejarlos en el propio almacenamiento.
Cron funciona a nivel de sistema operativo para ese caso, pero también existe un paquete en Golang que tiene el mismo funcionamiento sin importar la plataforma, así que con el mismo código fuente puedes respaldar periódicamente y enviarlo a la nube de Telegram desde cualquier sistema operativo incluyendo Windows.
El respaldo normal se hace así:
err := respaldar(*archivoRespaldar, *tokenTelegram, *idChat)
if err != nil {
err = enviarMensaje(err.Error(), *tokenTelegram, *idChat)
if err != nil {
fmt.Printf("Error: %v", err)
}
}
Ahora simplemente es cuestión de usar el paquete de cron para programar los respaldos automáticos según un intervalo de tiempo:
errorIniciandoCron := miCron.AddFunc(*specParaCron, func() {
err := respaldar(*archivoRespaldar, *tokenTelegram, *idChat)
if err != nil {
err = enviarMensaje(err.Error(), *tokenTelegram, *idChat)
if err != nil {
fmt.Printf("Error: %v", err)
}
}
})
La diferencia radica en miCron.AddFunc
en donde el spec
para Cron es una cadena indicando cada cuánto hacer los respaldos. Dicha especificación se describe a continuación:
.--------------- minuto (0-59)
| .------------ hora (0-23)
| | .--------- día del mes (1-31)
| | | .------ mes (1-12) o jan,feb,mar,apr,may,jun,jul... (meses en inglés)
| | | | .--- día de la semana (0-6) (domingo=0 o 7) o sun,mon,tue,wed,thu,fri,sat (días en inglés)
| | | | |
* * * * * comando a ejecutar
0 0 * * *
0 17 * * *
0 0 * * 0
Puedes leer más sobre los valores de cron en la wikipedia, o generar valores entendibles en crontab.guru.
Te acabo de mostrar el código más importante para poder usar Cron, programar un respaldo periódico y enviarlo a cualquier usuario, grupo o canal de Telegram con un Bot. Te voy a dejar el código completo en GitHub.
Una vez que lo tengas, ejecuta go mod tidy
para descargar las dependencias, luego ejecuta go build
para compilar el programa y finalmente ejecútalo pasándole tu token de Bot de Telegram, la especificación de Cron, el id del grupo, usuario o canal de Telegram y el nombre del archivo o directorio a respaldar.
C:\Users\parzibyte\Desktop\respaldar-telegram-main>respaldar_archivo_telegram.exe
-archivo string
El archivo o directorio a respaldar
-id_chat string
El ID del chat al que quieres enviar el archivo
-spec string
Especificación para cron
-token string
Tu token de Telegram
Por ejemplo, para respaldar el archivo llamado main.go
cada 10 segundos:
respaldar_archivo_telegram.exe -archivo main.go -id_chat "aquí va el id del chat" -spec "*/10 * * * * *" -token "aquí va el token"
En el mismo repositorio de GitHub, dentro del apartado Releases vas a encontrar el código fuente ya compilado en caso de que no quieras compilarlo por ti mismo, así solo debes ejecutarlo para programar correctamente la copia de seguridad periódicamente.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.