Age | Commit message (Collapse) | Author | Files | Lines |
|
Sponsored-by: author
|
|
clap version 3 basically replaces structopt entirely.
Sponsored-by: author
|
|
Sponsored-by: author
|
|
When making a backup, use the same checksum for any chunks it re-uses
or creates. This is for performance: if we allowed two checksums to be
used, we would have to compute the checksum for a chunk twice, and
potentially look up both on the server. This is just a lot of work.
Instead, we use only one. The trade-off here is that when (not if) the
user wants to switch to a new checksum type, they'll have to do a full
backup, uploading all their data to the server, even when it's already
there, just with a different checksum. Hopefully this will be rare.
Full backups always use the built-in, hardcoded default checksum, and
incremental backups use whatever the previous backup used. The default
is still SHA256, but this commit add code to support BLAKE2 if we
decide to switch that as a default. It's also easy to add support for
others, now. BLAKE2 was added to verify that Obnam can actually handle
the checksum changing (manual test: not in the test suite).
I don't think users need to be offered even the option of choosing a
checksum algorithm to use. When one cares about both security and
performance, choosing a checksum requires specialist, expert
knowledge. Obnam developers should choose the default. Giving users a
knob they can twiddle just makes it that much harder to configure and
use Obnam. If the choice Obnam developers have made is shown to be
sub-optimal, it seems better to change the default for everyone,
rather than hope that every user changes their configuration to gain
the benefit.
Experience has shown that people mostly don't change the default
configuration, and that they are especially bad at choosing well when
security is a concern.
(Obnam is free software. Expert users can choose their checksum by
changing the source code. I'm not fundamentally limiting anyone's
freedom or choice here.)
Users can switch to a new default algorithm by triggering a full
backup with the new "obnam backup --full".
Sponsored-by: author
|
|
Log the complete run-time of the program, and the time spent
downloading the previous generation, and uploading the new generation.
Sponsored-by: author
|
|
|
|
Backups made with this version can't be restored with old clients, and
vice version.
Sponsored-by: author
|
|
Sponsored-by: author
|
|
The way this is currently implemented resulted in a lot of code
duplication in src/generation.rs. This should be refactored later. My
first attempt to do it by adding a trait for a schema variant failed.
Sponsored-by: author
|
|
Sponsored-by: author
|
|
This is clearer and less error prone.
Sponsored-by: author
|
|
There is only async.
Sponsored-by: author
|
|
Also, make it an error for a public symbol to not be documented.
Sponsored-by: author
|
|
Move code to read a file as chunks during a backup, and upload any new
chunks to the chunk server, into `src/backup_run.rs`. Previously they
were mostly in `src/client.rs`, which is meant to provide an
abstraction for using the chunk server API.
Sponsored-by: author
|
|
This changes things so that "obnam backup" uses async for everything.
The old non-async BackupClient and ChunkClient are dropped.
This does NOT move the chunking, and checksum computation, to its own
function. This will happen later.
Sponsored-by: author
|
|
|
|
|
|
|
|
This should make it easier to introduce async, later.
|
|
This means the config is always the config, and not sometimes the
config or the config and passwords.
Also, there's no config option for encrypting, anymore. It will not be
optional now.
|
|
Fixes #78.
|
|
|
|
|
|
This reads a passphrase and derives two passwords from that, and
stores them next to the configuration file. The passwords aren't yet
used for anything, that will come later.
|
|
|
|
|
|
Previously, we either ignored it or aborted the backup. Neither is
good. Now we ignore the problem, except to show a warning at the end
of the backup run.
|
|
By not calling NamedTempFile::persist, the files get deleted
automatically when the file is closed or the struct is dropped.
Previously we were deleting the temporary files manually, which meant
that sometimes they weren't deleted if the program crashed at an
unfortunate time.
|
|
|
|
|
|
This is clearer, easier to modify than having a flag to indicate which
variant we're running.
|
|
This changes the client configuration file "root" field (with a single
string) to "roots" (a list of strings).
|
|
Use the chunk_size setting for file data. For the SQLite file, use a
hard-coded size instead.
|
|
This means that a function that parses step bindings can't return an
error that the document is missing a title. Such an error return would
be nonsensical, and we use the Rust type system to prevent it, at a
small cost of being a bit verbose.
Additional benefit is that the library portion of Obnam doesn't return
anyhow::Result values anymore.
|
|
"obnam backup" now writes a summary like the following at the end:
status: OK
duration: 24
file-count: 119245
generation-id: ef353c79-a94f-4903-bd80-e741ea454c84
We can add more fields to that later, as needed and requested. This
was the data that's easily at hand.
|
|
This commit also splits up the src/cmd/backup.rs module into other,
smaller, more cohesive modules that are easier to understand and use.
|
|
This changes SQL schema.
|
|
|
|
This uses the previous, latest generation as a guideline to see what
is new or changed.
|
|
New name is more descriptive.
|
|
This is a step towards changing how filenames are stored in FileSystemEntry.
|
|
|
|
This breaks all invocations of the Obnam client, as the option needs
to come before the subcommand name.
The benefit of this breakage is simpler, less repetitive code.
|
|
|
|
|
|
The user should not have to specify filenames for the databases, since
they don't actually care where they're stored.
|
|
|
|
|