-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCHANGELOG
277 lines (250 loc) · 14.7 KB
/
CHANGELOG
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
## Planned ahead
! Operation center must be able to create scheduled tasks for every operation
## 3.0.0
- This is a major rewrite that allows using multiple repositories, adds repository groups and implements repository settings inheritance from group settings
#### Features
- New viewer mode allowing to browse/restore restic repositories without any NPBackup configuation
- Allows setting repository via environment variables, config file or directly in GUI
- Multi repository support
- Group settings for repositories
- Operation center
- GUI operation center allowing to mass execute actions on repos / groups
- CLI operation center via `--repo-group=somegroup` or `--repo-name repo1,repo2`
- Implemented retention policies
- Optional time server update to make sure we don't drift before doing retention operations
- Operation planifier allows to create scheduled tasks for operations
- Implemented repo quick check / full check / repair index / repair packs /repair snapshots / recover / unlock / forget / prune / dump / stats commands
- Implemented new housekeeping command which is a shorthand for check, forget and prune commands
- Added per repo permission management
- Repos now have backup, restore and full privileges, optionally allowing to restrict access for end users
- Added snapshot tag to snapshot list on main window
- Split npbackup into separate CLI and GUI programs (GUI can also act as CLI)
- Status window has been refactored so GUI now has full stdout / stderr returns from runner and backend
- Implemented file size based exclusion
- CLI can now fully operate in API compatible mode via --json parameter
- Parses non json compliant restic output
- Always returns a result boolean and a reason when failing
- CLI now accepts --stdin parameter to backup streams sent to CLI
- Added minimum backup size upon which we declare that backup has failed
- All bytes units now have automatic conversion of units (K/M/G/T/P bits/bytes or IEC bytes)
- Refactored GUI and overall UX of configuration
- New option --show-config to show inheritance in CLI mode (GUI has visual indicators)
- Allow using external restic binary via --external-backend-binary parameter in CLI mode
- Implemented stdin_from_command backup process which can now get exit codes of programs which output is backed up (ex: mysqldump)
- GUI: Restore window
- Restore window now also shows symlinks and irregular files
- Restore window now uses 40% less memory
- Restore window showing up 60% faster
- Symlinks and irregular files are now shown properly
- Prometheus metrics / monitoring:
- Metrics are now created for all types of operation
- Metrics have npbackup execution state
- Metrics now include auto upgrade state
- Dry mode now works for all operations where restic supports dry-mode
- Implemented scheduled task creator for Windows & Unix
- Added --no-cache option to disable cache for restic operations (neeeded on RO systems)
- Added CRC32 logging for config files in order to know when a file was modified
- Missing exclude files will now search in current binary directory for a excludes directory
- Splitted releases between legacy and non legacy
- Updated legacy tcl8.6.13 to tc8.6.15
- Updated legacy Python 3.7 to Python 3.9 (with openssl 1.1.1)
#### Fixes
- Default exit code is now worst log level called unless specific errors are triggered
- Fix deletion failed message for en lang
- Fix Google cloud storage backend detection in repository uri
- Backup admin password is now stored in a more secure way
- GUI: Restore window now closes correctly when using the window control button
- GUI: Show anonymized repo uri in GUI
- GUI: Exec error should always stay on top
#### Misc
- Current backup state now shows more precise backup state, including last backup date when relevant
- Concurrency checks (pidfile checks) are now directly part of the runner
- Allow a 30 seconds grace period for child processes to close before asking them nicely, and than not nicely to quit
- Fully refactored prometheus metrics parser to be able to read restic standard or json outputs
- Reimplmented auto upgrade after CLI/GUI split
- Added initial tests
- Exclude lists have been updated
- Removed Windows installer from the project. We need to come up with a better solution
- Added manual --init command (already executed by first backup)
- Updated internal restic binary to restic 0.17.3 compiled with go1.23.1 (except for Windows legacy version which stays on 0.16.2 for compat)
- Added heartbeat log for long commands
## 2.2.2 - 14/12/2023 (internal build only)
- Fixed backup paths of '/' root partitions
- Properly display repository init errors
- Logs didn't show proper error status
- Fixed wrong init detection for S3 backend
## 2.2.1 - 28/08/2023
- Added snapshot deletion option in GUI
- Fix ignore_cloud_files parameter did not work on some non systems (still an issue, see https://github.com/restic/restic/issues/4155)
- Configured default backend connections to 2 for local, 8 for remote when default value '0' is given
- Fine adjust GOMAXPROCS environment variable (n for 1 core, n-1 for 2-4 cores, n-2 for 5+ cores)
- Updated internal restic binary to 0.16.0 compiled with go1.20.6
- Compiled with newer Nuitka 1.7.10 that allows use of Python 3.11
- Updated python to version 3.11 for Windows x64 targets
- Basic MacOS X compile support
## 2.2.0 - rtm - 03/06/2023
- Fix potential deadlock in evaluate variables
- Fix additionnal parameters should only apply for backup operations
- Fix unnecessary exclude statements when no exclusions are given
- Added source types (--files-from, --files-from-verbatim and --files-from-raw equivalent)
- Add encrypted environment variables support
- Add SSL certificate verification bypass for prometheus metrics
- Make sure all multiline entries in config files are processed as lists
- Add exclude-patterns to GUI (was present in CLI version already)
- Make sure we always quote exclusions patterns or files
- Updated internal restic binary to 0.15.2 compiled with go1.20.3
- *SECURITY* Don't log password command, even in debug mode
- Compiled with Nuitka commercial 1.5.8
## 2.2.0 - rc12 - 03/05/2023
- Add grafana dashboard to examples directory
- Implement password command functionality
- Compiled with newer Nuitka commercial 1.5.7
- Added windows executable signature script
## v2.2.0 - rc11 - 24/04/2023
- Add default 1 minute timeout for init operations
- Fix auto_upgrade_group wasn't transmitted to server
- Make sure new binary is set as executable in linux upgrade
- *SECURITY* Show unencrypted is only allowed on compiled builds where default AES KEY is not used
- This prevents a password injection from another conf file
- *SECURITY* Prevent raw password update in config file
- Fix empty password makes GUI fail
- Fix empty password makes CLI fail
- Fix empty data is shown as encrypted
- Enforce repository and passwords to be strings, also remove trailing and ending spaces
- Add warning when source and destination are the same path
- Compiled with newer Nuitka 1.5.6+ that leverages lesser virus detection issues
## v2.2.0 - rc10 - 30/03/2023
- Add arm/arm64 compilation support
- Add an option to disable GUI compilation
## v2.2.0 - rc9 - 28/03/2023
- Allow AES key rotation by keeping old key and updating encryption on config loading
- Make sure restic binary is executable for Nuitka builds
- Improve compiler script
- Add messages when no tcl/tk exists in GUI mode
- Switch to i18nice fork of python-i18n
## v2.2.0 - rc8 - 22/03/2023
- Highly optimize tree window creation times (x3.5) by replacing dateutil.parser.parse()
- Fix missing locale might fail on certain linux builds
- Don't build NPBackupInstaller on non Windows platforms
- Add --gui-status parameter and more GUI related info
- Make translation manager more resilient
- Add an inline copy of maintained python-i18n to deal with portability issues (see requirements.txt for more)
## v2.2.0 - rc7 - 20/03/2023
- New look and feel
- Cosmetic fixes (button sizes)
## v2.2.0 - rc6 - 13/03/2023
- Fixup bogus restic command line when empty tag lines were given
- Added missing default value for ignoring cloud files in the example configuration
- Made sure npbackup can run when no tkinter is installed (headless)
## v2.2.0 - rc5 - 03/03/2023
- Fixed bogus restic command line when empty tag lines were given
- Make sure the no config dialog stays on top
- Make sure upgrade client checks current python arch instead of os arch
- Make upgrade client catch referrer for /current_version calls
- Upgrade python-i18n to a maintained version
- Make sure we get the real IP when client downloads an upgrade and server is behind proxy server
## v2.2.0 - rc4 - 08/02/2023
- Add gui popup when config cannot be saved
- Make repo connection messages more clear
- Remove default backup admin password from config
- Fix empty restic results will make prometheus metrics fail
## v2.2.0 - rc3 - 07/02/2023
- Auto minimize console window when run in GUI mode to not distract end user
- Trigger GUI refresh after configuration changes
- Main program now loads directly after first time GUI setup
- A popup is now shown on non-readable repos
- Various smaller fixes
- Support for --config-file parameter in upgrade_server
- Upgrade server now fetches the real client IP if behind a proxy
- Upgrade server systemd service file example
## v2.2.0 - rc2 - 03/02/2023
- Upgrade client now sends its hostname, group and version information to server
- Add variable substitution in configuration
- Add machine identification in configuration
- Add variable ${RANDOM}[n] to config file in order to distinguish non unique hostnames
- Refactor config variable handling
- Make backup state and upgrade state messages more coherent
- Fix config fails when restic password is an int
- Fix empty config files did not show a proper error message
- Fix various config file malformation will break execution
- Fix backup hangs when no restic password is given (restic asks for password in backgroud job)
- Fix error message in logs when repo is not initialized
## v2.2.0 - rc1 - 02/02/2023
- Added a full auto-upgrade solution
- Aupgrade client integrated into NPBackup, that can be called manually via --auto-upgrade or automatically run every n backups
- Upgrade server which servers files and their metadata
- Added a gui to create a scheduled task under Windows
- Added a gui to configure backup admin password (was compile time setting before)
- Improved setup.py to provide launch scripts for both Linux and Windows platforms
- Made windows cloud file filter optional (enabled by default)
- Added default configuration settings
- Rewrite configuration gui into a tabbed gui
- Updated restic binary to restic 0.15.1 compiled with go1.19.5
- Changed backup interval unit from seconds to minutes
## v2.1.0 - 29/01/2023
- Added execution time information
- Code cleanup
- Refactor runner into a class
- Refactor npbackup into package
- Adding missing typing
- Code is now formatted with black
- Code must now pass pylint and flake8
- Workaround for painfully slow sg.TreeData window.close()
- Simplify npbackup shortcut
- Shift default interval from 23H30 to 24H
- Fixed missing translations for admin password popups
## v2.0.0 - 24/02/2023
- First open public release
- Refactor GUI so actions become non-blocking
- Added loader animation for gui events
- Added backup window with current state
- Added internationalization support (currently en and fr)
- Refactor restic.ls function to return a generator since restic ls command gives chunks of json, which is bad memory wise when parsing each chunk into a big list
- On Windows, "The cloud operation is not supported on a read-only volume." and "The media is write protected." errors will not make backup fail, see #4155
- This fix can be removed once #4155 is resolved, see # TEMP-FIX-4155 comment in restic_wrapper package
- Added Additional backup parameter option
- Added optional backup tags
- Added optional prometheus group label and additional labels entries
- Make sure backend connections number parameter works with all backends
- Added priority configuration for restic operations, defaults to low priority to not disturb operations
- Added WindowsApps folder (reparse points) to exclusion list (fix "The file cannot be accessed by the system." error)
- Fixed backup did use verbose option twice
- Updated restic binary to restic 0.15.0 compiled with go1.19.5 on windows/amd64
- Made theme configurable
- Make sure we exit all subprocesses when exiting npbackup
- Improve config GUI for supporting elder config files properly
- Fix restic metrics when 0 bytes of data have been added to the repo
- Fix restoration must ignore case on Windows
- Fix backup_job variable substitution in config file
- Fix for ruamel.yaml global objects being modified out of current scope encrypting current config while saving
- Fix npbackup could not start when no config file was present
- Drastically improve ls operation speed by changing command_runner method from poller to monitor (no live output) except for backup operation
- Compiler
- Compile python 3.7 and 3.10 targets so we also get to use Windows 7 which can't run python > 3.7
- Installer
- Moved task creation process to npbackup so we can recreate tasks on systems where npbackup is already installed
## v1.8.0
- Implement VSS support for Windows
- Do not require UAC elevation for npbackup.exe (Still highly recommended, but at least we allow non admin users to backup their data (without VSS))
- Search restic executable path when not found locally for both Windows and Linux platforms
- Make exclusion lists always ignore case on Windows systems
- Highly improve exclusion lists
- Keep structure and comments in yaml configuration files
- Simplify configuration file data encryption
- Fix limit-download parameter not working
- Fix error when rest_connections was set to 0
- Add some config gui logging
- Cosmetic gui fixes
- Fix never enforce execution timeout on backup operation
- Fix bogus filename encodings while showing backup contents / usernames
- Added more restic metrics
- Fixed bogus restric metrics
- Allow setting additional prometheus labels
- Fix gui snapshot contents don't show duplicate parents on Windows when backing up 'c:\foo' and 'C:\bar'
- Internal code cleanup
- Installer
- Make sure we don't overwrite destination configuration file if existing
## v1.5.3
- First closed public release
## v0.1.0 - 1.5.2
- Internal development and tests