summaryrefslogtreecommitdiff
path: root/NEWS.md
blob: 61ca4b78579fe5cd5048d47c2bcd7a6da7eca300 (plain)
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
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
---
title: Release notes for Obnam2
...

This file summarizes changes between releases of the second generation
of Obnam, the backup software. The software is technically called
"obnam2" to distinguish it from the first generation of Obnam, which
ended in 2017 with version number 1.22.


# Version 0.7.0, released 2022-01-04

## Breaking changes

* No known breaking changes in this release.

## New or changed features

* Command that retrieve and use backups from the server now verify
  that the backup's schema is compatible with the running version of
  Obnam. This means, for example, that `obnam restore` won't try to
  restore a backup it doesn't know it can restore.

## Internal changes

* Update Subplot step bindings with types for captures to allow
  Subplot to verify that embedded files in obnam.md are actually used.

* Tidy up code in various ways.

* The Obnam release process now has a step to run `cargo update` after
  the crate's version number has been updated, so that the
  `Cargo.lock` file gets updated.

## Changes to documentation

* The `obnam` crate now documents all exported symbols. This should
  make the crate somewhat less hostile to use.

* The minimum supported Rust version is whatever is going to be in the
  next Debian stable release (code name bookworm).

## Thank you

Several people have helped with this release, with changes or
feedback.

* Alexander Batischev
* Lars Wirzenius

(Our apologies to anyone who's been forgotten.)



# Version 0.6.0, released 2021-11-20

## Breaking changes

* We no longer test Obnam with Debian 10 (buster) in our continuous
  integration system. The current Debian stable release, Debian 11
  (bullseye), is tested.

## New or changed features

* It is now an error if the backup root directory doesn't exist or
  can't be read. This applies only to the backup roots. Other files
  and directories may go missing or be unreadable, and Obnam only
  warns about that, to allow making backups of live systems where
  files change during the backup.

## Internal changes

* There is now a new "many files" benchmark.

## Changes to documentation

* We've started a decision log for big, important project decisions.

## Thank you

Several people have helped with this release, with changes or
feedback.

* Alexander Batischev
* Lars Wirzenius

(Our apologies to anyone who's been forgotten.)


# Version 0.5.0, released 2021-11-20

## Experimental version

This is an experimental release, and is not meant to be relied on for
recovery of important data. The purpose of this release is to get new
features into the hands of intrepid people who want to try out new
things.

## Breaking changes

* Obnam is now licensed under the GNU Affero General Public License,
  version 3 or later. This mainly affects the Obnam chunk server,
  which has a network API.

* The Obnam client now stores the version of the database schema in
  the per-backup SQLite database. This allows the client to recognize
  when a backup was made with an incompatible version of the client.
  This, in turn, paves way for us to safely making changes that older
  versions of the client do not understand.

  As a result, the backups made with this version may silently break
  older versions of the client. However, this should be the last time
  such silent breakage happens.

## New or changed features

* Obnam now restore metadata of restored symlinks correctly.

* Obnam's handling of `CACHEDIR.TAG` files is more secure against an
  attacker adding such files in directories getting backed up.

* Progress bars so bars for different phases of the backup do not
  interfere with each other anymore.

* The client now has the "obnam resolve" subcommand to resolve a
  generation label (such as "latest") into a generation ID. The labels
  may point at different commits over time, the IDs never change.

* The client now has the "obnam chunkify" subcommand to compute
  checksums of chunks of files. For now, this is for doing performance
  benchmarks, but may eventually evolve into a way to experiment how
  parameters affect sizes of chunks and the ability of the Obnam
  client to find duplicate data.

* A build problem on macOS, where `chmod` needs a different type of
  integer, was fixed.

## Internal changes

* Obnam was migrated to using Docker in GitLab CI and using the new
  Debian stable release (version 11, code name bullseye).

* The Obnam client is now asynchronous code. This is a foundation for
  making the client be faster in the future. This has temporarily made
  the client slower in some cases.

* There is now a simple policy on what is required for changes to be
  merge, in the `DONE.md` file.

* There have been updates to use newer versions of dependencies,
  refactoring of code to be clearer and more tidy, as well as bug
  fixes in the test suite.

## Changes to documentation

* The tutorial now explains the passphrases are ephemeral.

## Thank you

Several people have helped with this release, with changes or
feedback.

* Alexander Batischev
* Daniel Silverstone
* Lars Wirzenius
* Ossi Herrala

(Our apologies to anyone who's been forgotten.)


# Version 0.4.0, released 2021-06-06

## Experimental version

This is an experimental release, and is not meant to be relied on for
recovery of important data. The purpose of this release is to get new
features into the hands of intrepid people who want to try out new
things.

## Breaking changes

This release introduces use of encryption in Subplot. Encryption is
not optional, and the new `obnam init` command must always be used
before the first backup to generate an encryption key.

Starting with this version of Obnam, there is no support at all for
cleartext backups any more. A backup, or backup repository, made with
a previous version of Obnam **will not work** with this version: you
can't list backups in a repository, you can't restore a backup, and
you can't make a new backup. You need to start over from scratch, by
emptying the server's chunk directory. Eventually, Obnam will stop
having such breaking, throw-away-everything changes, but it will
take time to build that functionality.

Note: this version add only a very rudimentary approach to encryption.
It is only meant to protect the backups from the server operator
snooping via the server file system. It doesn't protect against most
other threats, including the server operator replacing parts of
backups on the server. Future versions of Obnam will add more
protection.

## New or changed features

* Obnam now by default excludes directories that are marked with a
  `CACHEDIR.TAG` file. Set `exclude_cache_tag_directories` to `false`
  in the configuration file to disable the feature. See the [Cache
  Directory Tagging Specification][] for details of the tag file.

[Cache Directory Tagging Specification]: https://bford.info/cachedir/

* You can now use _tilde notation_ in the configuration file, in fields
  for specifying backup root directories or the log file. This makes
  it easier to files relative to the user's home directory:

  ~~~yaml
  server_url: https://obnam-server
  roots:
    - ~/Maildirs
    ~ ~/src/obnam
  log: ~/log/obnam.log
  ~~~

* Alexander Batischev changed the code that queries the SQL database
  to return an iterator, instead of an array of result. This means
  that if, for example, a backup generation has a very large number of
  files, Obnam no longer needs to keep all of them in memory at once.

* Various error messages are now clearer and more useful. For example,
  if there is a problem reading a file, the name of the file is
  included in the error message.

## Internal changes

* Alexander Batischev added support for GitLab CI, which means that
  changes are tested automatically before they are merged. This will
  make development a little smoother in the future.


## Changes to documentation

* Tigran Zakoyan made a logo for Obnam. It is currently only used on
  the [website](https://obnam.org/), but will find more use later. For
  example, some stickers could be made.

## Thank you

Several people have helped with this release, with changes or
feedback. I want to especially mention the following, in order by
first name, with apologies to anyone I have inadvertently forgotten:
Alexander Batischev, Daniel Silverstone, Neal Walfield, Tigran
Zakoyan.


# Version 0.3.1, released 2021-03-23

This is a minor release to work around a bug in Subplot, which
prevented the 0.3.0 release to have a Debian package built. The
workaround is to rewrite a small table in the "Filenames" section as a
list.


# Version 0.3.0, released 2021-03-14

## Breaking changes

* The format of the data stored on the backup repository has changed.
  The new version can't restore old backups: old generations are now
  useless. You'll have to start over. Sorry.

## New or changed features

* New `obnam config` sub-command writes out the actual configuration
  that the program users, as read from the configuration file.

* The client configuration now has default values for all
  configuration fields that can reasonably have them. For example, it
  is no longer necessary to explicitly set a chunk size.

* Only known fields are now allowed in configuration files. Unknown
  fields cause an error.

* It is now possible to back up multiple, distinct directories with
  one client configuration. The `root` configuration is now `roots`,
  and is a list of directories.

* Problems in backing up a file no longer terminate the backup run.
  Instead, the problem is reported at the end of the backup run, as a
  warning.

* The client now requires an HTTPS URL for the server. Plain HTTP is
  now rejected. The TLS certificate for the server is verified by
  default, but that can be turned off.

* The client progress reporting is now a little clearer.

* Unix domain sockets and named pipes (FIFO files) are now backed up
  and restored.

* The names of the user and group owning a file are backed up, but not
  restored.

* On the Obnam server, the Ansible playbook now installs a cron job to
  renew the Let's Encrypt TLS certificate.

## Bugs fixed

* Temporary files created during backup runs are now automatically
  deleted, even if the Obnam client crashes.

* Symbolic links are now backed up and restored correctly. Previously
  Obnam followed the link when backing up and created the link
  wrongly.

* The Ansible playbook to provision an Obnam server now enables the
  systemd unit so that the Obnam server process starts automatically
  after a reboot.

## Changes to documentation

* A tutorial has been added.

The Obnam subplot (`obnam.md`), which describes the requirements,
acceptance criteria, and architecture of the software, has some
improvements:
  
* a discussion of why Obnam doesn't use content-addressable storage

* a description of the logical structure of backups as stored on the
  backup server

* a rudimentary first sketch of a threat model: the operator of the
  backup server reads the backed up data

* an initial plan for adding support for encryption to backups; this
  is known to be simplistic and inadequate, but the goal is to get
  started, and then iterate to get something acceptable, even if that
  takes months

## Thank you

Several people have helped with this release, with changes or
feedback. I want to especially mention the following, with apologies
to anyone I have inadvertently forgotten: Alexander Batischev, Ossi
Herrala, Daniel Silverstone, Neal Walfield.

# Version 0.2.2, released 2021-01-29

This is the first release of Obnam2. It can just barely make and
restore backups. It's ready for a light trial, but not for real use.
There's no encryption, and backups can't be deleted yet. Restores of
the entire backup work.