Changelog History
Page 2
-
v0.8.2 Changes
February 17, 2018We're very pleased to announce restic 0.8.2! restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum.
๐ The binaries released with each restic version are reproducible, which means that you can easily reproduce a byte identical version from the source code for that release. Instructions on how to do that are contained in the builder repository.
๐ Changelog for restic 0.8.2 (2018-02-17)
The following sections list the changes in restic 0.8.2 relevant to
restic users. The changes are ordered by importance.Summary
- ๐ Fix #1506: Limit bandwith at the http.RoundTripper for HTTP based backends
- ๐ Fix #1512: Restore directory permissions as the last step
- ๐ Fix #1528: Correctly create missing subdirs in data/
- ๐ Fix #1590: Strip spaces for lines read via --files-from
- ๐ Fix #1589: Complete intermediate index upload
- ๐ Fix #1594: Google Cloud Storage: Use generic HTTP transport
- ๐ Fix #1595: Backup: Remove bandwidth display
- ๐ Enh #1522: Add support for TLS client certificate authentication
- Enh #1541: Reduce number of remote requests during repository check
- Enh #1567: Reduce number of backend requests for rebuild-index and prune
- Enh #1507: Only reload snapshots once per minute for fuse mount
- Enh #1538: Reduce memory allocations for querying the index
- Enh #1549: Speed up querying across indices and scanning existing files
- Enh #1554: Fuse/mount: Correctly handle EOF, add template option
- Enh #1564: Don't terminate ssh on SIGINT
- Enh #1579: Retry Backend.List() in case of errors
- Enh #1584: Limit index file size
Details
๐ Bugfix #1506: Limit bandwith at the http.RoundTripper for HTTP based backends
๐ Bugfix #1512: Restore directory permissions as the last step
โช This change allows restoring into directories that were not writable during backup. Before, restic created the directory, set the read-only mode and then failed to create files in the directory. This change now restores the directory (with its permissions) as the very last step.
๐ Bugfix #1528: Correctly create missing subdirs in data/
๐ Bugfix #1590: Strip spaces for lines read via --files-from
Leading and trailing spaces in lines read via
--files-from
are now stripped, so it behaves the same as with lines read via--exclude-file
.๐ Bugfix #1589: Complete intermediate index upload
After a user posted a comprehensive report of what he observed, we were able to find a bug and correct it: During backup, restic uploads so-called "intermediate" index files. When the backup finishes during a transfer of such an intermediate index, the upload is cancelled, but the backup is finished without an error. This leads to an inconsistent state, where the snapshot references data that is contained in the repo, but is not referenced in any index.
๐ The situation can be resolved by building a new index with
rebuild-index
, but looks very confusing at first. Since all the data got uploaded to the repo successfully, there was no risk of data loss, just minor inconvenience for our users.๐ Bugfix #1594: Google Cloud Storage: Use generic HTTP transport
It was discovered that the Google Cloud Storage backend did not use the generic HTTP transport, so things such as bandwidth limiting with
--limit-upload
did not work. This is resolved now.๐ Bugfix #1595: Backup: Remove bandwidth display
๐ This commit removes the bandwidth displayed during backup process. It is misleading and seldomly correct, because it's neither the "read bandwidth" (only for the very first backup) nor the "upload bandwidth". Many users are confused about (and rightly so), c.f. #1581, #1033, #1591
We'll eventually replace this display with something more relevant when the new archiver code is ready.
โจ Enhancement #1522: Add support for TLS client certificate authentication
๐ Support has been added for using a TLS client certificate for authentication to HTTP based backend. A file containing the PEM encoded private key and certificate can be set using the
--tls-client-cert
option.โจ Enhancement #1541: Reduce number of remote requests during repository check
This change eliminates redundant remote repository calls and significantly improves repository check time.
โจ Enhancement #1567: Reduce number of backend requests for rebuild-index and prune
๐ค We've found a way to reduce then number of backend requests for the
rebuild-index
andprune
operations. This significantly speeds up the operations for high-latency backends.โจ Enhancement #1507: Only reload snapshots once per minute for fuse mount
โจ Enhancement #1538: Reduce memory allocations for querying the index
This change reduces the internal memory allocations when the index data structures in memory are queried if a blob (part of a file) already exists in the repo. It should speed up backup a bit, and maybe even reduce RAM usage.
โจ Enhancement #1549: Speed up querying across indices and scanning existing files
This change increases the whenever a blob (part of a file) is searched for in a restic repository. This will reduce cpu usage some when backing up files already backed up by restic. Cpu usage is further decreased when scanning files.
โจ Enhancement #1554: Fuse/mount: Correctly handle EOF, add template option
We've added the
--snapshot-template
string, which can be used to specify a template for a snapshot directory. In addition, accessing data after the end of a file via the fuse mount is now handled correctly.โจ Enhancement #1564: Don't terminate ssh on SIGINT
๐ We've reworked the code which runs the
ssh
login for the sftp backend so that it can prompt for a password (if needed) but does not exit when the user presses CTRL+C (SIGINT) e.g. during backup. This allows restic to properly shut down when it receives SIGINT and remove the lock file from the repo, afterwards exiting thessh
process.โจ Enhancement #1579: Retry Backend.List() in case of errors
โจ Enhancement #1584: Limit index file size
Before, restic would create a single new index file on
prune
orrebuild-index
, this may lead to memory problems when this huge index is created and loaded again. We're now limiting the size of the index file, and split newly created index files into several smaller ones. This allows restic to be more memory-efficient. -
v0.8.1 Changes
December 27, 2017We're very pleased to announce restic 0.8.1! restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum.
๐ The binaries released with each restic version are reproducible, which means that you can easily reproduce a byte identical version from the source code for that release. Instructions on how to do that are contained in the builder repository.
๐ Changelog for restic 0.8.1 (2017-12-27)
The following sections list the changes in restic 0.8.1 relevant to
restic users. The changes are ordered by importance.Summary
- ๐ Fix #1457: Improve s3 backend with DigitalOcean Spaces
- ๐ Fix #1454: Correct cache dir location for Windows and Darwin
- ๐ Fix #1459: Disable handling SIGPIPE
- 0๏ธโฃ Chg #1452: Do not save atime by default
- Enh #1436: Add code to detect old cache directories
- Enh #1439: Improve cancellation logic
- Enh #11: Add the
diff
command
Details
๐ Bugfix #1457: Improve s3 backend with DigitalOcean Spaces
๐ Bugfix #1454: Correct cache dir location for Windows and Darwin
๐ The cache directory on Windows and Darwin was not correct, instead the directory
.cache
was used.๐ Bugfix #1459: Disable handling SIGPIPE
We've disabled handling SIGPIPE again. Turns out, writing to broken TCP connections also raised SIGPIPE, so restic exits on the first write to a broken connection. Instead, restic should retry the request.
๐ Change #1452: Do not save atime by default
๐ By default, the access time for files and dirs is not saved any more. It is not possible to reliably disable updating the access time during a backup, so for the next backup the access time is different again. This means a lot of metadata is saved. If you want to save the access time anyway, pass
--with-atime
to thebackup
command.โจ Enhancement #1436: Add code to detect old cache directories
๐ We've added code to detect old cache directories of repositories that haven't been used in a long time, restic now prints a note when it detects that such dirs exist. Also, the option
--cleanup-cache
was added to automatically remove such directories. That's not a problem because the cache will be rebuild once a repo is accessed again.โจ Enhancement #1439: Improve cancellation logic
The cancellation logic was improved, restic can now shut down cleanly when requested to do so (e.g. via ctrl+c).
โจ Enhancement #11: Add the
diff
commandThe command
diff
was added, it allows comparing two snapshots and listing all differences. -
v0.8.0 Changes
November 26, 2017We're very pleased to announce restic 0.8.0! restic is distributed as a standalone binary: download the correct file for your operating system and architecture, extract the file and just run it. If you run into any issues, please report them at the GitHub issue tracker or visit the forum.
๐ The binaries released with each restic version are reproducible, which means that you can easily reproduce a byte identical version from the source code for that release. Instructions on how to do that are contained in the builder repository.
Important Changes in 0.8.0
โฌ๏ธ A vulnerability was found in the restic restorer, which allowed attackers in special circumstances to restore files to a location outside of the target directory. Due to the circumstances we estimate this to be a low-risk vulnerability, but urge all users to upgrade to the latest version of restic.
๐ง Exploiting the vulnerability requires a Linux/Unix system which saves backups via restic and a Windows system which restores files from the repo. In addition, the attackers need to be able to create files with arbitrary names which are then saved to the restic repo. For example, by creating a file named "..\test.txt" (which is a perfectly legal filename on Linux) and restoring a snapshot containing this file on Windows, it would be written to the parent of the target directory.
We'd like to thank Tyler Spivey for reporting this responsibly!
#14450๏ธโฃ The s3 backend used the subdir
restic
within a bucket if no explicit path after the bucket name was specified. Since this version, restic does not use this default path any more. If you created a repo on s3 in a bucket without specifying a path within the bucket, you need to add/restic
at the end of the repository specification to access your repo:s3:s3.amazonaws.com/bucket/restic
#1292 #1437๐ We've added a local cache for metadata so that restic doesn't need to load all metadata (snapshots, indexes, ...) from the repo each time it starts. By default the cache is active, but there's a new global option
--no-cache
that can be used to disable the cache. By deafult, the cache a standard cache folder for the OS, which can be overridden with--cache-dir
. The cache will automatically populate, indexes and snapshots are saved as they are loaded. #1040 #29 #738 #282 #1287๐ A related change was to by default create pack files in the repo that contain either data or metadata, not both mixed together. This allows easy caching of only the metadata files. The next run of
restic prune
will untangle mixed files automatically. #1265The Google Cloud Storage backend no longer requires the service account to have the
storage.buckets.get
permission ("Storage Admin" role) inrestic init
if the bucket already exists. #1281โ Added support for rate limiting through
--limit-upload
and--limit-download
flags. #1216 #1336 #1358Failed backend requests are now automatically retried. #1353
โช We've added the
dump
command which prints a file from a snapshot to stdout. This can e.g. be used to restore files read withbackup --stdin
. #510 #1346Small changes
โ The directory structure in the fuse mount now exposes a symlink
latest
which points to the latest snapshot in that particular directory. #1249The option
--compact
was added to theforget
command to provide the same compact view as thesnapshots
command. #1269โช We've re-enabled a workaround for
minio-go
(the library we're using to access s3 backends), this reduces memory usage. #1256 #1267The sftp backend now prompts for the password if a password is necessary for login. #448 #1270
๐ The
generate
command has been added, which replaces the now removed commandsmanpage
andautocomplete
. This release of restic contains the most recent manpages indoc/man
and the auto-completion files for bash and zsh indoc/bash-completion.sh
anddoc/zsh-completion.zsh
#1274 #1282A bug was discovered in the library we're using to access Backblaze, it now reuses already established TCP connections which should be a lot faster and not cause network failures any more. #1291 #1301
Another bug in the
forget
command causedprune
not to be run when--prune
was specified without a policy, e.g. when only snapshot IDs that should be forgotten are listed manually. This is corrected now. #1317๐จ The
check
command now explicetly printsNo errors were found
when no errors could be found. #1319 #1303The fuse mount now has an
ids
subdirectory which contains the snapshots below their (short) IDs. #1102 #1299 #1320The
backup
command was improved, it now caches the result of excludes for a directory. #1271 #1326We've added the
--cacert
option which can be used to pass one (or more) CA certificates to restic. These are used in addition to the system CA certificates to verify HTTPS certificates (e.g. for the REST backend). #1114 #1276When the list of files/dirs to be saved is read from a file with
--files-from
, comment lines (starting with#
) are now ignored. #1367 #1368