diff --git a/.bckr.log b/.bckr.log index 62dfd12..f85d902 100644 --- a/.bckr.log +++ b/.bckr.log @@ -1,116 +1,60 @@ -bckr | 2025/05/02 20:46:12 Archive created successfully: backup_2025-05-02_20-46-12.zip -bckr | 2025/05/02 20:46:14 Archive sent successfully: backup_2025-05-02_20-46-12.zip -bckr | 2025/05/02 20:47:14 Archive created successfully: backup_2025-05-02_20-47-14.zip -bckr | 2025/05/02 20:47:15 Archive sent successfully: backup_2025-05-02_20-47-14.zip -bckr | 2025/05/02 20:54:35 Archive created successfully: backup_2025-05-02_20-54-34.zip -bckr | 2025/05/02 20:54:36 Archive sent successfully: backup_2025-05-02_20-54-34.zip -bckr | 2025/05/02 20:55:28 User requested exit -bckr | 2025/05/02 20:56:13 Archive created successfully: backup_2025-05-02_20-56-13.zip -bckr | 2025/05/02 20:56:15 Archive sent successfully: backup_2025-05-02_20-56-13.zip -bckr | 2025/05/02 20:56:35 User requested exit -bckr | 2025/05/02 20:56:41 Archive created successfully: backup_2025-05-02_20-56-41.zip -bckr | 2025/05/02 20:56:51 Archive sent successfully: backup_2025-05-02_20-56-41.zip -bckr | 2025/05/02 20:57:09 User requested exit -bckr | 2025/05/02 20:58:17 Archive created successfully: backup_2025-05-02_20-58-17.zip -bckr | 2025/05/02 20:58:19 Archive sent successfully: backup_2025-05-02_20-58-17.zip -bckr | 2025/05/02 21:12:51 Archive created successfully: backup_2025-05-02_21-12-50.zip -bckr | 2025/05/02 21:12:53 Archive sent successfully: backup_2025-05-02_21-12-50.zip -bckr | 2025/05/02 21:13:53 Archive created successfully: backup_2025-05-02_21-13-53.zip -bckr | 2025/05/02 21:13:54 Archive sent successfully: backup_2025-05-02_21-13-53.zip -bckr | 2025/05/02 21:14:54 Archive created successfully: backup_2025-05-02_21-14-54.zip -bckr | 2025/05/02 21:14:56 Archive sent successfully: backup_2025-05-02_21-14-54.zip -bckr | 2025/05/02 21:15:56 Archive created successfully: backup_2025-05-02_21-15-56.zip -bckr | 2025/05/02 21:15:57 Archive sent successfully: backup_2025-05-02_21-15-56.zip -bckr | 2025/05/02 21:16:57 Archive created successfully: backup_2025-05-02_21-16-57.zip -bckr | 2025/05/02 21:16:58 Archive sent successfully: backup_2025-05-02_21-16-57.zip -bckr | 2025/05/02 21:17:59 Archive created successfully: backup_2025-05-02_21-17-58.zip -bckr | 2025/05/02 21:18:00 Archive sent successfully: backup_2025-05-02_21-17-58.zip -bckr | 2025/05/02 21:19:00 Archive created successfully: backup_2025-05-02_21-19-00.zip -bckr | 2025/05/02 21:19:01 Archive sent successfully: backup_2025-05-02_21-19-00.zip -bckr | 2025/05/02 21:20:01 Archive created successfully: backup_2025-05-02_21-20-01.zip -bckr | 2025/05/02 21:20:03 Archive sent successfully: backup_2025-05-02_21-20-01.zip -bckr | 2025/05/02 21:21:03 Archive created successfully: backup_2025-05-02_21-21-03.zip -bckr | 2025/05/02 21:21:04 Archive sent successfully: backup_2025-05-02_21-21-03.zip -bckr | 2025/05/02 21:22:04 Archive created successfully: backup_2025-05-02_21-22-04.zip -bckr | 2025/05/02 21:22:06 Archive sent successfully: backup_2025-05-02_21-22-04.zip -bckr | 2025/05/02 21:23:06 Archive created successfully: backup_2025-05-02_21-23-06.zip -bckr | 2025/05/02 21:23:07 Archive sent successfully: backup_2025-05-02_21-23-06.zip -bckr | 2025/05/02 21:23:38 Archive created successfully: backup_2025-05-02_21-23-38.zip -bckr | 2025/05/02 21:23:40 Archive sent successfully: backup_2025-05-02_21-23-38.zip -bckr | 2025/05/02 21:24:07 Archive created successfully: backup_2025-05-02_21-24-07.zip -bckr | 2025/05/02 21:24:09 Archive sent successfully: backup_2025-05-02_21-24-07.zip -bckr | 2025/05/02 21:24:40 Archive created successfully: backup_2025-05-02_21-24-40.zip -bckr | 2025/05/02 21:24:42 Archive sent successfully: backup_2025-05-02_21-24-40.zip -bckr | 2025/05/02 21:25:09 Archive created successfully: backup_2025-05-02_21-25-09.zip -bckr | 2025/05/02 21:25:10 Archive sent successfully: backup_2025-05-02_21-25-09.zip -bckr | 2025/05/02 21:25:42 Archive created successfully: backup_2025-05-02_21-25-42.zip -bckr | 2025/05/02 21:25:43 Archive sent successfully: backup_2025-05-02_21-25-42.zip -bckr | 2025/05/02 21:26:18 Archive created successfully: backup_2025-05-02_21-26-17.zip -bckr | 2025/05/02 21:26:20 Archive sent successfully: backup_2025-05-02_21-26-17.zip -bckr | 2025/05/02 21:28:01 Archive created successfully: backup_2025-05-02_21-28-01.zip -bckr | 2025/05/02 21:28:03 Archive sent successfully: backup_2025-05-02_21-28-01.zip -bckr | 2025/05/02 21:29:03 Archive created successfully: backup_2025-05-02_21-29-03.zip -bckr | 2025/05/02 21:29:04 Archive sent successfully: backup_2025-05-02_21-29-03.zip -bckr | 2025/05/02 21:33:45 [13 10 136 172 239 32 174 161 224 160 167 160 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 80 73 68 32 136 172 239 32 225 165 225 225 168 168 32 32 32 32 32 32 32 32 32 32 252 32 225 165 160 173 225 160 32 32 32 32 32 32 32 143 160 172 239 226 236 13 10 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 61 13 10 98 99 107 114 46 101 120 101 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 49 53 54 50 48 32 67 111 110 115 111 108 101 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 49 32 32 32 32 32 54 255 56 48 52 32 138 129 13 10] -bckr | 2025/05/02 21:34:54 [13 10 136 172 239 32 174 161 224 160 167 160 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 80 73 68 32 136 172 239 32 225 165 225 225 168 168 32 32 32 32 32 32 32 32 32 32 252 32 225 165 160 173 225 160 32 32 32 32 32 32 32 143 160 172 239 226 236 13 10 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 61 13 10 98 99 107 114 46 101 120 101 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 49 53 57 50 32 67 111 110 115 111 108 101 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 49 32 32 32 32 32 54 255 51 50 52 32 138 129 13 10] -bckr | 2025/05/02 21:34:54 Archive created successfully: backup_2025-05-02_21-34-54.zip -bckr | 2025/05/02 21:34:56 Archive sent successfully: backup_2025-05-02_21-34-54.zip -bckr | 2025/05/02 21:35:04 [13 10 136 172 239 32 174 161 224 160 167 160 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 80 73 68 32 136 172 239 32 225 165 225 225 168 168 32 32 32 32 32 32 32 32 32 32 252 32 225 165 160 173 225 160 32 32 32 32 32 32 32 143 160 172 239 226 236 13 10 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 32 61 61 61 61 61 61 61 61 61 61 61 61 13 10 98 99 107 114 46 101 120 101 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 49 53 57 50 32 67 111 110 115 111 108 101 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 49 32 32 32 32 51 53 255 49 57 50 32 138 129 13 10 98 99 107 114 46 101 120 101 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 49 55 55 55 50 32 67 111 110 115 111 108 101 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 49 32 32 32 32 32 56 255 48 48 48 32 138 129 13 10] -bckr | 2025/05/02 21:35:04 Archive created successfully: backup_2025-05-02_21-35-04.zip -bckr | 2025/05/02 21:35:05 Archive sent successfully: backup_2025-05-02_21-35-04.zip -bckr | 2025/05/02 21:35:47 - ࠧ PID ᨨ ᥠ -========================= ======== ================ =========== ============ -bckr.exe 17468 Console 1 6788 - -bckr | 2025/05/02 21:35:47 Archive created successfully: backup_2025-05-02_21-35-47.zip -bckr | 2025/05/02 21:35:49 Archive sent successfully: backup_2025-05-02_21-35-47.zip -bckr | 2025/05/02 21:38:39 - ࠧ PID ᨨ ᥠ -========================= ======== ================ =========== ============ -bckr.exe 2520 Console 1 6316 - -bckr | 2025/05/02 21:38:39 Archive created successfully: backup_2025-05-02_21-38-39.zip -bckr | 2025/05/02 21:38:41 Archive sent successfully: backup_2025-05-02_21-38-39.zip -bckr | 2025/05/02 21:39:41 Archive created successfully: backup_2025-05-02_21-39-41.zip -bckr | 2025/05/02 21:39:42 Archive sent successfully: backup_2025-05-02_21-39-41.zip -bckr | 2025/05/02 21:40:42 Archive created successfully: backup_2025-05-02_21-40-42.zip -bckr | 2025/05/02 21:40:44 Archive sent successfully: backup_2025-05-02_21-40-42.zip -bckr | 2025/05/02 21:42:02 [34 98 99 107 114 46 101 120 101 34 44 34 49 55 48 50 52 34 44 34 67 111 110 115 111 108 101 34 44 34 49 34 44 34 54 255 56 49 54 32 138 129 34 13 10] -bckr | 2025/05/02 21:42:19 "bckr.exe","16532","Console","1","6784 " - -bckr | 2025/05/02 21:43:47 Running -bckr | 2025/05/02 21:44:46 42 -bckr | 2025/05/02 21:44:46 Running -bckr | 2025/05/02 21:46:42 1 -bckr | 2025/05/02 21:46:42 Running -bckr | 2025/05/02 21:47:52 No running -bckr | 2025/05/02 21:47:52 Archive created successfully: backup_2025-05-02_21-47-52.zip -bckr | 2025/05/02 21:47:54 Archive sent successfully: backup_2025-05-02_21-47-52.zip -bckr | 2025/05/02 21:48:40 Running -bckr | 2025/05/02 21:48:54 Archive created successfully: backup_2025-05-02_21-48-54.zip -bckr | 2025/05/02 21:48:55 Archive sent successfully: backup_2025-05-02_21-48-54.zip -bckr | 2025/05/02 21:49:24 No running -bckr | 2025/05/02 21:49:24 Archive created successfully: backup_2025-05-02_21-49-24.zip -bckr | 2025/05/02 21:49:25 Archive sent successfully: backup_2025-05-02_21-49-24.zip -bckr | 2025/05/02 21:49:28 Running -bckr | 2025/05/02 21:49:28 Running -bckr | 2025/05/02 21:49:29 Running -bckr | 2025/05/02 21:49:29 Running -bckr | 2025/05/02 21:52:14 Archive created successfully: backup_2025-05-02_21-52-14.zip -bckr | 2025/05/02 21:52:15 Archive sent successfully: backup_2025-05-02_21-52-14.zip -bckr | 2025/05/02 21:52:17 Already running -bckr | 2025/05/02 21:53:02 Already running -bckr | 2025/05/02 21:53:16 Archive created successfully: backup_2025-05-02_21-53-15.zip -bckr | 2025/05/02 21:53:17 Archive sent successfully: backup_2025-05-02_21-53-15.zip -bckr | 2025/05/02 21:54:18 Archive created successfully: backup_2025-05-02_21-54-17.zip -bckr | 2025/05/02 21:54:19 Archive sent successfully: backup_2025-05-02_21-54-17.zip -bckr | 2025/05/02 22:01:57 Archive created successfully: backup_2025-05-02_22-01-57.zip -bckr | 2025/05/02 22:01:59 Archive sent successfully: backup_2025-05-02_22-01-57.zip -bckr | 2025/05/02 22:02:05 Already running. Shutdown... -bckr | 2025/05/02 22:03:25 Archive created successfully: backup_2025-05-02_22-03-24.zip -bckr | 2025/05/02 22:03:26 Archive sent successfully: backup_2025-05-02_22-03-24.zip -bckr | 2025/05/02 22:03:30 Already running. Shutdown... -bckr | 2025/05/02 22:06:32 Archive created successfully: backup_2025-05-02_22-06-32.zip -bckr | 2025/05/02 22:06:33 Archive sent successfully: backup_2025-05-02_22-06-32.zip -bckr | 2025/05/02 22:06:47 Already running. Shutdown... +bckr | 2025/05/02 22:15:28 Archive created successfully: backup_2025-05-02_22-15-28.zip +bckr | 2025/05/02 22:15:30 Archive sent successfully: backup_2025-05-02_22-15-28.zip +bckr | 2025/05/02 22:15:39 Already running. Shutdown... +bckr | 2025/05/02 22:15:56 Archive created successfully: backup_2025-05-02_22-15-55.zip +bckr | 2025/05/02 22:15:57 Archive sent successfully: backup_2025-05-02_22-15-55.zip +bckr | 2025/05/02 22:15:59 Already running. Shutdown... +bckr | 2025/05/02 22:16:44 Archive created successfully: backup_2025-05-02_22-16-44.zip +bckr | 2025/05/02 22:16:46 Archive sent successfully: backup_2025-05-02_22-16-44.zip +bckr | 2025/05/02 22:16:50 Already running. Shutdown... +bckr | 2025/05/02 22:17:09 Archive created successfully: backup_2025-05-02_22-17-08.zip +bckr | 2025/05/02 22:17:10 Archive sent successfully: backup_2025-05-02_22-17-08.zip +bckr | 2025/05/02 22:17:23 Already running. Shutdown... +bckr | 2025/05/02 22:18:00 Archive created successfully: backup_2025-05-02_22-18-00.zip +bckr | 2025/05/02 22:18:02 Archive sent successfully: backup_2025-05-02_22-18-00.zip +bckr | 2025/05/02 22:18:04 Already running. Shutdown... +bckr | 2025/05/02 22:18:34 Archive created successfully: backup_2025-05-02_22-18-34.zip +bckr | 2025/05/02 22:18:36 Archive sent successfully: backup_2025-05-02_22-18-34.zip +bckr | 2025/05/02 22:18:38 Already running. Shutdown... +bckr | 2025/05/02 22:27:41 Archive created successfully: backup_2025-05-02_22-27-41.zip +bckr | 2025/05/02 22:27:43 Archive sent successfully: backup_2025-05-02_22-27-41.zip +bckr | 2025/05/02 22:27:50 Already running. Shutdown... +bckr | 2025/05/02 22:34:20 Please fill in the configuration file (bckr.json) in current dir +bckr | 2025/05/02 22:37:06 Warning: target path does not exist: +bckr | 2025/05/02 22:37:06 Archive created successfully: backup_2025-05-02_22-37-06.zip +bckr | 2025/05/02 22:37:06 Archive sent successfully: backup_2025-05-02_22-37-06.zip +bckr | 2025/05/02 22:37:16 Already running. Shutdown... +bckr | 2025/05/02 22:37:24 Please fill in the configuration file (bckr.json) in current dir +bckr | 2025/05/02 22:38:36 Archive created successfully: backup_2025-05-02_22-38-36.zip +bckr | 2025/05/02 22:38:36 Archive sent successfully: backup_2025-05-02_22-38-36.zip +bckr | 2025/05/02 22:39:36 Archive created successfully: backup_2025-05-02_22-39-36.zip +bckr | 2025/05/02 22:39:37 Archive sent successfully: backup_2025-05-02_22-39-36.zip +bckr | 2025/05/02 22:39:57 Already running. Shutdown... +bckr | 2025/05/02 22:40:47 Archive created successfully: backup_2025-05-02_22-40-46.zip +bckr | 2025/05/02 22:40:48 Archive sent successfully: backup_2025-05-02_22-40-46.zip +bckr | 2025/05/02 22:41:48 Archive created successfully: backup_2025-05-02_22-41-48.zip +bckr | 2025/05/02 22:41:49 Archive sent successfully: backup_2025-05-02_22-41-48.zip +bckr | 2025/05/02 22:41:57 Already running. Shutdown... +bckr | 2025/05/02 22:43:54 Archive created successfully: backup_2025-05-02_22-43-54.zip +bckr | 2025/05/02 22:43:56 Archive sent successfully: backup_2025-05-02_22-43-54.zip +bckr | 2025/05/02 22:44:05 Already running. Shutdown... +bckr | 2025/05/02 22:45:18 Archive created successfully: backup_2025-05-02_22-45-18.zip +bckr | 2025/05/02 22:45:18 Archive sent successfully: backup_2025-05-02_22-45-18.zip +bckr | 2025/05/02 22:45:48 Already running. Shutdown... +bckr | 2025/05/02 22:45:53 Archive created successfully: backup_2025-05-02_22-45-53.zip +bckr | 2025/05/02 22:45:53 Archive sent successfully: backup_2025-05-02_22-45-53.zip +bckr | 2025/05/02 22:46:13 Already running. Shutdown... +bckr | 2025/05/02 22:46:52 Archive created successfully: backup_2025-05-02_22-46-51.zip +bckr | 2025/05/02 22:46:53 Archive sent successfully: backup_2025-05-02_22-46-51.zip +bckr | 2025/05/02 22:47:53 Archive created successfully: backup_2025-05-02_22-47-53.zip +bckr | 2025/05/02 22:47:55 Archive sent successfully: backup_2025-05-02_22-47-53.zip +bckr | 2025/05/02 22:48:55 Archive created successfully: backup_2025-05-02_22-48-55.zip +bckr | 2025/05/02 22:48:56 Archive sent successfully: backup_2025-05-02_22-48-55.zip +bckr | 2025/05/02 22:49:00 Already running. Shutdown... +bckr | 2025/05/02 22:50:38 Archive created successfully: backup_2025-05-02_22-50-38.zip +bckr | 2025/05/02 22:50:40 Archive sent successfully: backup_2025-05-02_22-50-38.zip +bckr | 2025/05/02 22:51:40 Archive created successfully: backup_2025-05-02_22-51-40.zip +bckr | 2025/05/02 22:51:41 Archive sent successfully: backup_2025-05-02_22-51-40.zip +bckr | 2025/05/02 22:52:42 Archive created successfully: backup_2025-05-02_22-52-41.zip +bckr | 2025/05/02 22:52:43 Archive sent successfully: backup_2025-05-02_22-52-41.zip +bckr | 2025/05/02 22:52:45 Already running. Shutdown... diff --git a/.gitignore b/.gitignore index df87c6a..418b7c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -.bckr.json +bckr.json +.bckr.log *.exe \ No newline at end of file diff --git a/main.go b/main.go index a8de6ff..0cc5816 100644 --- a/main.go +++ b/main.go @@ -19,8 +19,13 @@ import ( "time" ) +const ( + LOG_FILE_PATH = ".bckr.log" + CONFIG_FILE_PATH = "bckr.json" +) + func init() { - logFile, err := os.OpenFile(".bckr.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) + logFile, err := os.OpenFile(LOG_FILE_PATH, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) if err != nil { log.Fatal(err) } @@ -30,6 +35,19 @@ func init() { func main() { + if !fileExists(CONFIG_FILE_PATH) { + if err := createDefaultConfig(); err != nil { + log.Println(err) + } + msg := fmt.Sprintf("Please fill in the configuration file (%s) in current dir", CONFIG_FILE_PATH) + log.Println(msg) + fmt.Println(msg) + fmt.Print("Press any key to exit...") + var b [1]byte + os.Stdin.Read(b[:]) + return + } + // Если процесс процесс с именем этого исполняемого файла уже запущен // то закрываем и его и текущий процесс exeName := filepath.Base(os.Args[0]) @@ -38,15 +56,16 @@ func main() { if err := killProcByExeName(exeName); err != nil { log.Println("Cant kill proc") } - os.Exit(0) + return } + // hideConsoleWindow() for { // Загрузка конфига - config, err := loadConfig(".bckr.json") + config, err := loadConfig(CONFIG_FILE_PATH) if err != nil { log.Fatal(err) } @@ -96,9 +115,43 @@ func loadConfig(configPath string) (*config, error) { if err != nil { return nil, err } + + cfg.IgnoreFilesOrDirs = removeEmptyStrings(cfg.IgnoreFilesOrDirs) return cfg, nil } +func removeEmptyStrings(slice []string) []string { + var result []string + for _, s := range slice { + if s != "" { + result = append(result, s) + } + } + return result +} + +func createDefaultConfig() error { + defaultConfig := config{ + TGYourBotToken: "", + TGYourUserId: "", + IntervalInSeconds: 60, + TargetsFilesOrDirs: []string{""}, + IgnoreFilesOrDirs: []string{""}, + } + + configData, err := json.MarshalIndent(defaultConfig, "", " ") + if err != nil { + return err + } + + err = os.WriteFile(CONFIG_FILE_PATH, configData, 0644) + if err != nil { + return err + } + + return nil +} + func createArchive(archiveName string, targets, ignore []string) error { // Создание файла архива archiveFile, err := os.Create(archiveName) @@ -140,11 +193,7 @@ func createArchive(archiveName string, targets, ignore []string) error { return false } - if slices.Contains(ignorePaths, absPath) { - return true - } - - return false + return slices.Contains(ignorePaths, absPath) } // @@ -270,6 +319,11 @@ func TGBotSendFile(botToken, userId, filePath, caption string) error { return nil } +func fileExists(filename string) bool { + _, err := os.Stat(filename) + return !os.IsNotExist(err) +} + func killProcByExeName(exeName string) error { if runtime.GOOS == "windows" { cmd := exec.Command("taskkill", "/IM", exeName, "/F", "/T")