summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2021-01-19refactor: use ChunkId directly in errors, instead of StringLars Wirzenius3-9/+10
2021-01-17feat: add a default configuration fileLars Wirzenius2-3/+19
The ~/.config/obnam/obnam.yaml file will be used as the configuration file by default. The ~/.config directory can be overridden by setting the XDG variable (XDG_CONFIG_HOME), or the whole file can be overridden with the --config option to obnam.
2021-01-16feat: add "obnam show-generation" subcommandLars Wirzenius3-1/+55
2021-01-16feat: backup run now ends with a summaryLars Wirzenius2-3/+11
"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.
2021-01-10feat! use SQLite db for chunk index on serverLars Wirzenius9-174/+249
This speeds startup a lot. However, the backup repository needs to be re-created from scratch and internal APIs have change in incompatible ways.
2021-01-05refactor: add BackedUpFile to avoid using a tupleLars Wirzenius4-13/+56
The struct is easier to use right.
2021-01-05refactor: move policy on whether to back up a file into a moduleLars Wirzenius9-156/+258
This commit also splits up the src/cmd/backup.rs module into other, smaller, more cohesive modules that are easier to understand and use.
2021-01-04refactor: use fetch_chunk to fetch generationLars Wirzenius2-13/+9
Also, add GenerationChunk::from_data_chunk function.
2021-01-04feat: verify checksum of chunks downloaded from serverLars Wirzenius6-4/+54
2021-01-04refactor: add a type alias for file identifiers in generationsLars Wirzenius1-15/+18
2021-01-04feat! record whether file was backed up and why, in a generationLars Wirzenius6-43/+142
This changes SQL schema.
2021-01-04feat: add an index for chunk ids lookupsLars Wirzenius1-0/+1
2021-01-03feat: load chunk metadata into index at startupLars Wirzenius3-4/+47
This needs to be replace with a database or something, but it'll do for now.
2021-01-01feat: use SQL to look up information for a file, by filenameLars Wirzenius1-14/+24
This speeds things up a lot compared to iterating over all files.
2021-01-01feat! use signed 64 bit integers as file numbers, file countsLars Wirzenius3-24/+22
2021-01-01refactor: move SQL use into sub-moduleLars Wirzenius1-58/+92
This keeps all the SQL related functions closer together, making it easier to make changes to them.
2020-12-31feat: incremental backupLars Wirzenius6-36/+150
This uses the previous, latest generation as a guideline to see what is new or changed.
2020-12-31refactor: add LocalGeneration type for read-only operationsLars Wirzenius3-80/+90
This splits the use of NascentGeneration to more cohesive "new generation being built" versus "existing generation being restored".
2020-12-30debugLars Wirzenius2-2/+8
2020-12-30fix: actually use nanosecond timestampsLars Wirzenius1-1/+1
2020-12-30fix: add missing source filesLars Wirzenius2-0/+51
2020-12-30feat: allow restoring latest generationLars Wirzenius2-1/+10
2020-12-30feat: add GenerationListLars Wirzenius4-5/+7
Various part of Obnam will need to deal with lists of generations. Abstract this.
2020-12-30feat! store and show timestamp for each backup generationLars Wirzenius3-7/+21
This changes the output format of "obnam list".
2020-12-27add FinishedGenerationLars Wirzenius1-1/+30
2020-12-27refactor: rename Generation to NascentGenerationLars Wirzenius3-10/+10
New name is more descriptive.
2020-12-26feat! store pathnames a vectors of bytesLars Wirzenius1-3/+6
This is the most generic way to store filenames.
2020-12-26refactor: rename FileSystemEntry::path to pathbufLars Wirzenius4-12/+14
This is a step towards changing how filenames are stored in FileSystemEntry.
2020-12-23feat! only specify base URL of server, without /chunksLars Wirzenius1-6/+10
2020-12-23refactor: use a struct instead of a tupleLars Wirzenius4-9/+31
It seems this is more idiomatic in Rust.
2020-12-23feat! let server address be configuredLars Wirzenius1-8/+13
Instead of just specifying port, let the address (or name) be configured.
2020-12-23feat: re-enable progress bars for backup and restoreLars Wirzenius2-2/+2
2020-12-23feat: add log file to clientLars Wirzenius2-10/+35
2020-12-23feat! add a global --config optionLars Wirzenius4-25/+22
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.
2020-12-12feat: back up and restore symlinksLars Wirzenius5-8/+56
2020-12-12feat: restore metadata as well as file contententsLars Wirzenius2-16/+105
2020-12-11add timestamps to fsentryLars Wirzenius1-8/+15
2020-12-11store mode in fsentryLars Wirzenius1-1/+13
2020-12-11refactor: how FsEntry structs are createdLars Wirzenius2-47/+19
Now from a Metadata struct, instead of a bunch of field values. The justification for this is that callers shouldn't have to unpack a Metadata, especially since it'll be different for each operating system in the future. Keep all that in one place instead.
2020-12-11feat! store file metadata as JSONLars Wirzenius2-26/+14
This avoids having to add extra columns when we add more metadata support. This may be worth re-thinking later, once things stabilize.
2020-11-27feat! make obnam-server always use TLSLars Wirzenius1-3/+3
This will ruin my benchmark results, but it's the right thing to do.
2020-11-25perf: store chunks on disk in a 3-level directory treeLars Wirzenius2-9/+37
git does the same thing. This improves the wall clock time to run benchmark-store with a million chunks from a 40.36 seconds to 18.70, on a system with NVMe and ext4.
2020-11-25feat: add programs to benchmark server chunk storageLars Wirzenius7-0/+156
2020-11-24refactor: add an abstraction for an indexed storeLars Wirzenius3-61/+89
This makes it easier to write a server without the HTTP layer.
2020-11-23feat: progress reporting to backups and restoresLars Wirzenius3-23/+88
2020-11-22feat! use temporary files for SQLite databasesLars Wirzenius4-13/+36
The user should not have to specify filenames for the databases, since they don't actually care where they're stored.
2020-11-22refactor: use the same ClientConfig for both backups and restoresLars Wirzenius1-16/+2
2020-11-18feat! change client config to take a base URL instead of host, portLars Wirzenius4-10/+10
2020-11-13refactor: split obnam's bindings, functions for clarityLars Wirzenius1-1/+3
The old subplot/obnam.{yaml,py} were starting to get large enough that it was hard to understand them. Also, were partly overlapping in functionality with runcmd.
2020-11-13refactor: put all client functionality into one programLars Wirzenius8-82/+106