mirror of
https://github.com/restic/restic.git
synced 2025-03-09 00:00:02 +01:00
Compare commits
No commits in common. "master" and "v0.16.2" have entirely different histories.
633 changed files with 17995 additions and 35297 deletions
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
10
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -28,15 +28,13 @@ Checklist
|
||||||
You do not need to check all the boxes below all at once. Feel free to take
|
You do not need to check all the boxes below all at once. Feel free to take
|
||||||
your time and add more commits. If you're done and ready for review, please
|
your time and add more commits. If you're done and ready for review, please
|
||||||
check the last box. Enable a checkbox by replacing [ ] with [x].
|
check the last box. Enable a checkbox by replacing [ ] with [x].
|
||||||
|
|
||||||
Please always follow these steps:
|
|
||||||
- Read the [contribution guidelines](https://github.com/restic/restic/blob/master/CONTRIBUTING.md#providing-patches).
|
|
||||||
- Enable [maintainer edits](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork).
|
|
||||||
- Run `gofmt` on the code in all commits.
|
|
||||||
- Format all commit messages in the same style as [the other commits in the repository](https://github.com/restic/restic/blob/master/CONTRIBUTING.md#git-commits).
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
- [ ] I have read the [contribution guidelines](https://github.com/restic/restic/blob/master/CONTRIBUTING.md#providing-patches).
|
||||||
|
- [ ] I have [enabled maintainer edits](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/allowing-changes-to-a-pull-request-branch-created-from-a-fork).
|
||||||
- [ ] I have added tests for all code changes.
|
- [ ] I have added tests for all code changes.
|
||||||
- [ ] I have added documentation for relevant changes (in the manual).
|
- [ ] I have added documentation for relevant changes (in the manual).
|
||||||
- [ ] There's a new file in `changelog/unreleased/` that describes the changes for our users (see [template](https://github.com/restic/restic/blob/master/changelog/TEMPLATE)).
|
- [ ] There's a new file in `changelog/unreleased/` that describes the changes for our users (see [template](https://github.com/restic/restic/blob/master/changelog/TEMPLATE)).
|
||||||
|
- [ ] I have run `gofmt` on the code in all commits.
|
||||||
|
- [ ] All commit messages are formatted in the same style as [the other commits in the repo](https://github.com/restic/restic/blob/master/CONTRIBUTING.md#git-commits).
|
||||||
- [ ] I'm done! This pull request is ready for review.
|
- [ ] I'm done! This pull request is ready for review.
|
||||||
|
|
37
.github/workflows/docker.yml
vendored
37
.github/workflows/docker.yml
vendored
|
@ -20,16 +20,12 @@ jobs:
|
||||||
contents: read
|
contents: read
|
||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
outputs:
|
|
||||||
image: ${{ steps.image.outputs.image }}
|
|
||||||
digest: ${{ steps.build-and-push.outputs.digest }}
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Log in to the Container registry
|
- name: Log in to the Container registry
|
||||||
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567
|
uses: docker/login-action@b4bedf8053341df3b5a9f9e0f2cf4e79e27360c6
|
||||||
with:
|
with:
|
||||||
registry: ${{ env.REGISTRY }}
|
registry: ${{ env.REGISTRY }}
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
|
@ -37,11 +33,10 @@ jobs:
|
||||||
|
|
||||||
- name: Extract metadata (tags, labels) for Docker
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81
|
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7
|
||||||
with:
|
with:
|
||||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
tags: |
|
tags: |
|
||||||
type=sha
|
|
||||||
type=ref,event=branch
|
type=ref,event=branch
|
||||||
type=semver,pattern={{version}}
|
type=semver,pattern={{version}}
|
||||||
type=semver,pattern={{major}}.{{minor}}
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
@ -50,7 +45,7 @@ jobs:
|
||||||
uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3
|
uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20
|
uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226
|
||||||
|
|
||||||
- name: Ensure consistent binaries
|
- name: Ensure consistent binaries
|
||||||
run: |
|
run: |
|
||||||
|
@ -60,8 +55,7 @@ jobs:
|
||||||
if: github.ref != 'refs/heads/master'
|
if: github.ref != 'refs/heads/master'
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
id: build-and-push
|
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4
|
||||||
uses: docker/build-push-action@15560696de535e4014efeff63c48f16952e52dd1
|
|
||||||
with:
|
with:
|
||||||
push: true
|
push: true
|
||||||
context: .
|
context: .
|
||||||
|
@ -70,26 +64,3 @@ jobs:
|
||||||
pull: true
|
pull: true
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|
||||||
- name: Output image
|
|
||||||
id: image
|
|
||||||
run: |
|
|
||||||
# NOTE: Set the image as an output because the `env` context is not
|
|
||||||
# available to the inputs of a reusable workflow call.
|
|
||||||
image_name="${REGISTRY}/${IMAGE_NAME}"
|
|
||||||
echo "image=$image_name" >> "$GITHUB_OUTPUT"
|
|
||||||
|
|
||||||
provenance:
|
|
||||||
needs: [build-and-push-image]
|
|
||||||
permissions:
|
|
||||||
actions: read # for detecting the Github Actions environment.
|
|
||||||
id-token: write # for creating OIDC tokens for signing.
|
|
||||||
packages: write # for uploading attestations.
|
|
||||||
if: github.repository == 'restic/restic'
|
|
||||||
uses: slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@v2.0.0
|
|
||||||
with:
|
|
||||||
image: ${{ needs.build-and-push-image.outputs.image }}
|
|
||||||
digest: ${{ needs.build-and-push-image.outputs.digest }}
|
|
||||||
registry-username: ${{ github.actor }}
|
|
||||||
secrets:
|
|
||||||
registry-password: ${{ secrets.GITHUB_TOKEN }}
|
|
57
.github/workflows/tests.yml
vendored
57
.github/workflows/tests.yml
vendored
|
@ -13,7 +13,7 @@ permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|
||||||
env:
|
env:
|
||||||
latest_go: "1.23.x"
|
latest_go: "1.21.x"
|
||||||
GO111MODULE: on
|
GO111MODULE: on
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
@ -23,29 +23,34 @@ jobs:
|
||||||
# list of jobs to run:
|
# list of jobs to run:
|
||||||
include:
|
include:
|
||||||
- job_name: Windows
|
- job_name: Windows
|
||||||
go: 1.23.x
|
go: 1.21.x
|
||||||
os: windows-latest
|
os: windows-latest
|
||||||
|
|
||||||
- job_name: macOS
|
- job_name: macOS
|
||||||
go: 1.23.x
|
go: 1.21.x
|
||||||
os: macOS-latest
|
os: macOS-latest
|
||||||
test_fuse: false
|
test_fuse: false
|
||||||
|
|
||||||
- job_name: Linux
|
- job_name: Linux
|
||||||
go: 1.23.x
|
go: 1.21.x
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
test_cloud_backends: true
|
test_cloud_backends: true
|
||||||
test_fuse: true
|
test_fuse: true
|
||||||
check_changelog: true
|
check_changelog: true
|
||||||
|
|
||||||
- job_name: Linux (race)
|
- job_name: Linux (race)
|
||||||
go: 1.23.x
|
go: 1.21.x
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
test_fuse: true
|
test_fuse: true
|
||||||
test_opts: "-race"
|
test_opts: "-race"
|
||||||
|
|
||||||
- job_name: Linux
|
- job_name: Linux
|
||||||
go: 1.22.x
|
go: 1.20.x
|
||||||
|
os: ubuntu-latest
|
||||||
|
test_fuse: true
|
||||||
|
|
||||||
|
- job_name: Linux
|
||||||
|
go: 1.19.x
|
||||||
os: ubuntu-latest
|
os: ubuntu-latest
|
||||||
test_fuse: true
|
test_fuse: true
|
||||||
|
|
||||||
|
@ -56,18 +61,15 @@ jobs:
|
||||||
GOPROXY: https://proxy.golang.org
|
GOPROXY: https://proxy.golang.org
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Set up Go ${{ matrix.go }}
|
- name: Set up Go ${{ matrix.go }}
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ matrix.go }}
|
go-version: ${{ matrix.go }}
|
||||||
|
|
||||||
- name: Get programs (Linux/macOS)
|
- name: Get programs (Linux/macOS)
|
||||||
run: |
|
run: |
|
||||||
echo "build Go tools"
|
echo "build Go tools"
|
||||||
go install github.com/restic/rest-server/cmd/rest-server@master
|
go install github.com/restic/rest-server/cmd/rest-server@latest
|
||||||
|
|
||||||
echo "install minio server"
|
echo "install minio server"
|
||||||
mkdir $HOME/bin
|
mkdir $HOME/bin
|
||||||
|
@ -99,7 +101,7 @@ jobs:
|
||||||
$ProgressPreference = 'SilentlyContinue'
|
$ProgressPreference = 'SilentlyContinue'
|
||||||
|
|
||||||
echo "build Go tools"
|
echo "build Go tools"
|
||||||
go install github.com/restic/rest-server/cmd/rest-server@master
|
go install github.com/restic/rest-server/...
|
||||||
|
|
||||||
echo "install minio server"
|
echo "install minio server"
|
||||||
mkdir $Env:USERPROFILE/bin
|
mkdir $Env:USERPROFILE/bin
|
||||||
|
@ -132,6 +134,9 @@ jobs:
|
||||||
echo $Env:USERPROFILE\tar\bin >> $Env:GITHUB_PATH
|
echo $Env:USERPROFILE\tar\bin >> $Env:GITHUB_PATH
|
||||||
if: matrix.os == 'windows-latest'
|
if: matrix.os == 'windows-latest'
|
||||||
|
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Build with build.go
|
- name: Build with build.go
|
||||||
run: |
|
run: |
|
||||||
go run build.go
|
go run build.go
|
||||||
|
@ -220,14 +225,14 @@ jobs:
|
||||||
name: Cross Compile for subset ${{ matrix.subset }}
|
name: Cross Compile for subset ${{ matrix.subset }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Set up Go ${{ env.latest_go }}
|
- name: Set up Go ${{ env.latest_go }}
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.latest_go }}
|
go-version: ${{ env.latest_go }}
|
||||||
|
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Cross-compile for subset ${{ matrix.subset }}
|
- name: Cross-compile for subset ${{ matrix.subset }}
|
||||||
run: |
|
run: |
|
||||||
mkdir build-output build-output-debug
|
mkdir build-output build-output-debug
|
||||||
|
@ -237,24 +242,20 @@ jobs:
|
||||||
lint:
|
lint:
|
||||||
name: lint
|
name: lint
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
# allow annotating code in the PR
|
|
||||||
checks: write
|
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Set up Go ${{ env.latest_go }}
|
- name: Set up Go ${{ env.latest_go }}
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v4
|
||||||
with:
|
with:
|
||||||
go-version: ${{ env.latest_go }}
|
go-version: ${{ env.latest_go }}
|
||||||
|
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: golangci-lint
|
- name: golangci-lint
|
||||||
uses: golangci/golangci-lint-action@v6
|
uses: golangci/golangci-lint-action@v3
|
||||||
with:
|
with:
|
||||||
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
|
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
|
||||||
version: v1.63.4
|
version: v1.52.2
|
||||||
args: --verbose --timeout 5m
|
args: --verbose --timeout 5m
|
||||||
|
|
||||||
# only run golangci-lint for pull requests, otherwise ALL hints get
|
# only run golangci-lint for pull requests, otherwise ALL hints get
|
||||||
|
@ -292,7 +293,7 @@ jobs:
|
||||||
|
|
||||||
- name: Docker meta
|
- name: Docker meta
|
||||||
id: meta
|
id: meta
|
||||||
uses: docker/metadata-action@v5
|
uses: docker/metadata-action@v4
|
||||||
with:
|
with:
|
||||||
# list of Docker images to use as base name for tags
|
# list of Docker images to use as base name for tags
|
||||||
images: |
|
images: |
|
||||||
|
@ -315,7 +316,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build and push
|
- name: Build and push
|
||||||
id: docker_build
|
id: docker_build
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v4
|
||||||
with:
|
with:
|
||||||
push: false
|
push: false
|
||||||
context: .
|
context: .
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,4 +1,3 @@
|
||||||
/.idea
|
|
||||||
/restic
|
/restic
|
||||||
/restic.exe
|
/restic.exe
|
||||||
/.vagrant
|
/.vagrant
|
||||||
|
|
|
@ -35,11 +35,6 @@ linters:
|
||||||
# parse and typecheck code
|
# parse and typecheck code
|
||||||
- typecheck
|
- typecheck
|
||||||
|
|
||||||
# ensure that http response bodies are closed
|
|
||||||
- bodyclose
|
|
||||||
|
|
||||||
- importas
|
|
||||||
|
|
||||||
issues:
|
issues:
|
||||||
# don't use the default exclude rules, this hides (among others) ignored
|
# don't use the default exclude rules, this hides (among others) ignored
|
||||||
# errors from Close() calls
|
# errors from Close() calls
|
||||||
|
@ -56,15 +51,3 @@ issues:
|
||||||
# staticcheck: there's no easy way to replace these packages
|
# staticcheck: there's no easy way to replace these packages
|
||||||
- "SA1019: \"golang.org/x/crypto/poly1305\" is deprecated"
|
- "SA1019: \"golang.org/x/crypto/poly1305\" is deprecated"
|
||||||
- "SA1019: \"golang.org/x/crypto/openpgp\" is deprecated"
|
- "SA1019: \"golang.org/x/crypto/openpgp\" is deprecated"
|
||||||
- "redefines-builtin-id:"
|
|
||||||
|
|
||||||
exclude-rules:
|
|
||||||
# revive: ignore unused parameters in tests
|
|
||||||
- path: (_test\.go|testing\.go|backend/.*/tests\.go)
|
|
||||||
text: "unused-parameter:"
|
|
||||||
|
|
||||||
linters-settings:
|
|
||||||
importas:
|
|
||||||
alias:
|
|
||||||
- pkg: github.com/restic/restic/internal/test
|
|
||||||
alias: rtest
|
|
||||||
|
|
|
@ -8,10 +8,6 @@ build:
|
||||||
tools:
|
tools:
|
||||||
python: "3.11"
|
python: "3.11"
|
||||||
|
|
||||||
# Build HTMLZip
|
|
||||||
formats:
|
|
||||||
- htmlzip
|
|
||||||
|
|
||||||
# Build documentation in the docs/ directory with Sphinx
|
# Build documentation in the docs/ directory with Sphinx
|
||||||
sphinx:
|
sphinx:
|
||||||
configuration: doc/conf.py
|
configuration: doc/conf.py
|
||||||
|
|
4919
CHANGELOG.md
4919
CHANGELOG.md
File diff suppressed because it is too large
Load diff
|
@ -6,8 +6,7 @@ Ways to Help Out
|
||||||
Thank you for your contribution! Please **open an issue first** (or add a
|
Thank you for your contribution! Please **open an issue first** (or add a
|
||||||
comment to an existing issue) if you plan to work on any code or add a new
|
comment to an existing issue) if you plan to work on any code or add a new
|
||||||
feature. This way, duplicate work is prevented and we can discuss your ideas
|
feature. This way, duplicate work is prevented and we can discuss your ideas
|
||||||
and design first. Small bugfixes are an exception to this rule, just open a
|
and design first.
|
||||||
pull request in this case.
|
|
||||||
|
|
||||||
There are several ways you can help us out. First of all code contributions and
|
There are several ways you can help us out. First of all code contributions and
|
||||||
bug fixes are most welcome. However even "minor" details as fixing spelling
|
bug fixes are most welcome. However even "minor" details as fixing spelling
|
||||||
|
@ -62,7 +61,7 @@ uploading it somewhere or post only the parts that are really relevant.
|
||||||
If restic gets stuck, please also include a stacktrace in the description.
|
If restic gets stuck, please also include a stacktrace in the description.
|
||||||
On non-Windows systems, you can send a SIGQUIT signal to restic or press
|
On non-Windows systems, you can send a SIGQUIT signal to restic or press
|
||||||
`Ctrl-\` to achieve the same result. This causes restic to print a stacktrace
|
`Ctrl-\` to achieve the same result. This causes restic to print a stacktrace
|
||||||
and then exit immediately. This will not damage your repository, however,
|
and then exit immediatelly. This will not damage your repository, however,
|
||||||
it might be necessary to manually clean up stale lock files using
|
it might be necessary to manually clean up stale lock files using
|
||||||
`restic unlock`.
|
`restic unlock`.
|
||||||
|
|
||||||
|
|
18
README.md
18
README.md
|
@ -10,7 +10,8 @@ For detailed usage and installation instructions check out the [documentation](h
|
||||||
|
|
||||||
You can ask questions in our [Discourse forum](https://forum.restic.net).
|
You can ask questions in our [Discourse forum](https://forum.restic.net).
|
||||||
|
|
||||||
## Quick start
|
Quick start
|
||||||
|
-----------
|
||||||
|
|
||||||
Once you've [installed](https://restic.readthedocs.io/en/latest/020_installation.html) restic, start
|
Once you've [installed](https://restic.readthedocs.io/en/latest/020_installation.html) restic, start
|
||||||
off with creating a repository for your backups:
|
off with creating a repository for your backups:
|
||||||
|
@ -58,7 +59,7 @@ Therefore, restic supports the following backends for storing backups natively:
|
||||||
Restic is a program that does backups right and was designed with the
|
Restic is a program that does backups right and was designed with the
|
||||||
following principles in mind:
|
following principles in mind:
|
||||||
|
|
||||||
- **Easy**: Doing backups should be a frictionless process, otherwise
|
- **Easy:** Doing backups should be a frictionless process, otherwise
|
||||||
you might be tempted to skip it. Restic should be easy to configure
|
you might be tempted to skip it. Restic should be easy to configure
|
||||||
and use, so that, in the event of a data loss, you can just restore
|
and use, so that, in the event of a data loss, you can just restore
|
||||||
it. Likewise, restoring data should not be complicated.
|
it. Likewise, restoring data should not be complicated.
|
||||||
|
@ -91,17 +92,20 @@ reproduce a byte identical version from the source code for that
|
||||||
release. Instructions on how to do that are contained in the
|
release. Instructions on how to do that are contained in the
|
||||||
[builder repository](https://github.com/restic/builder).
|
[builder repository](https://github.com/restic/builder).
|
||||||
|
|
||||||
## News
|
News
|
||||||
|
----
|
||||||
|
|
||||||
You can follow the restic project on Mastodon [@resticbackup](https://fosstodon.org/@restic) or subscribe to
|
You can follow the restic project on Mastodon [@resticbackup](https://fosstodon.org/@restic) or by subscribing to
|
||||||
the [project blog](https://restic.net/blog/).
|
the [project blog](https://restic.net/blog/).
|
||||||
|
|
||||||
## License
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
Restic is licensed under [BSD 2-Clause License](https://opensource.org/licenses/BSD-2-Clause). You can find the
|
Restic is licensed under [BSD 2-Clause License](https://opensource.org/licenses/BSD-2-Clause). You can find the
|
||||||
complete text in [`LICENSE`](LICENSE).
|
complete text in [``LICENSE``](LICENSE).
|
||||||
|
|
||||||
## Sponsorship
|
Sponsorship
|
||||||
|
-----------
|
||||||
|
|
||||||
Backend integration tests for Google Cloud Storage and Microsoft Azure Blob
|
Backend integration tests for Google Cloud Storage and Microsoft Azure Blob
|
||||||
Storage are sponsored by [AppsCode](https://appscode.com)!
|
Storage are sponsored by [AppsCode](https://appscode.com)!
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
0.17.3-dev
|
0.16.2
|
||||||
|
|
2
build.go
2
build.go
|
@ -58,7 +58,7 @@ var config = Config{
|
||||||
Main: "./cmd/restic", // package name for the main package
|
Main: "./cmd/restic", // package name for the main package
|
||||||
DefaultBuildTags: []string{"selfupdate"}, // specify build tags which are always used
|
DefaultBuildTags: []string{"selfupdate"}, // specify build tags which are always used
|
||||||
Tests: []string{"./..."}, // tests to run
|
Tests: []string{"./..."}, // tests to run
|
||||||
MinVersion: GoVersion{Major: 1, Minor: 22, Patch: 0}, // minimum Go version supported
|
MinVersion: GoVersion{Major: 1, Minor: 18, Patch: 0}, // minimum Go version supported
|
||||||
}
|
}
|
||||||
|
|
||||||
// Config configures the build.
|
// Config configures the build.
|
||||||
|
|
|
@ -10,7 +10,7 @@ https://github.com/restic/restic/issues/2244
|
||||||
|
|
||||||
NOTE: This new implementation does not guarantee order in which blobs
|
NOTE: This new implementation does not guarantee order in which blobs
|
||||||
are written to the target files and, for example, the last blob of a
|
are written to the target files and, for example, the last blob of a
|
||||||
file can be written to the file before any of the preceding file blobs.
|
file can be written to the file before any of the preceeding file blobs.
|
||||||
It is therefore possible to have gaps in the data written to the target
|
It is therefore possible to have gaps in the data written to the target
|
||||||
files if restore fails or interrupted by the user.
|
files if restore fails or interrupted by the user.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Bugfix: Don't abort the stats command when data blobs are missing
|
Bugfix: Don't abort the stats command when data blobs are missing
|
||||||
|
|
||||||
Running the stats command in the blobs-per-file mode on a repository with
|
Runing the stats command in the blobs-per-file mode on a repository with
|
||||||
missing data blobs previously resulted in a crash.
|
missing data blobs previously resulted in a crash.
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2668
|
https://github.com/restic/restic/pull/2668
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Bugfix: Mark repository files as read-only when using the local backend
|
Bugfix: Mark repository files as read-only when using the local backend
|
||||||
|
|
||||||
Files stored in a local repository were marked as writable on the
|
Files stored in a local repository were marked as writeable on the
|
||||||
filesystem for non-Windows systems, which did not prevent accidental file
|
filesystem for non-Windows systems, which did not prevent accidental file
|
||||||
modifications outside of restic. In addition, the local backend did not work
|
modifications outside of restic. In addition, the local backend did not work
|
||||||
with certain filesystems and network mounts which do not permit modifications
|
with certain filesystems and network mounts which do not permit modifications
|
||||||
|
|
|
@ -5,7 +5,7 @@ another process using an exclusive lock through a filesystem snapshot. Restic
|
||||||
was unable to backup those files before. This update enables backing up these
|
was unable to backup those files before. This update enables backing up these
|
||||||
files.
|
files.
|
||||||
|
|
||||||
This needs to be enabled explicitly using the --use-fs-snapshot option of the
|
This needs to be enabled explicitely using the --use-fs-snapshot option of the
|
||||||
backup command.
|
backup command.
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/340
|
https://github.com/restic/restic/issues/340
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Bugfix: Correct statistics for overlapping backup sources
|
Bugfix: Correct statistics for overlapping targets
|
||||||
|
|
||||||
A user reported that restic's statistics and progress information during backup
|
A user reported that restic's statistics and progress information during backup
|
||||||
was not correctly calculated when the backup sources (files/dirs to save)
|
was not correctly calculated when the backup targets (files/dirs to save)
|
||||||
overlap. For example, consider a directory `foo` which contains (among others)
|
overlap. For example, consider a directory `foo` which contains (among others)
|
||||||
a file `foo/bar`. When `restic backup foo foo/bar` was run, restic counted the
|
a file `foo/bar`. When `restic backup foo foo/bar` was run, restic counted the
|
||||||
size of the file `foo/bar` twice, so the completeness percentage as well as the
|
size of the file `foo/bar` twice, so the completeness percentage as well as the
|
||||||
|
|
|
@ -2,7 +2,7 @@ Enhancement: Parallelize scan of snapshot content in `copy` and `prune`
|
||||||
|
|
||||||
The `copy` and `prune` commands used to traverse the directories of
|
The `copy` and `prune` commands used to traverse the directories of
|
||||||
snapshots one by one to find used data. This snapshot traversal is
|
snapshots one by one to find used data. This snapshot traversal is
|
||||||
now parallelized which can speed up this step several times.
|
now parallized which can speed up this step several times.
|
||||||
|
|
||||||
In addition the `check` command now reports how many snapshots have
|
In addition the `check` command now reports how many snapshots have
|
||||||
already been processed.
|
already been processed.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Enhancement: Support `--group-by` for backup parent selection
|
Enhancement: Support `--group-by` for backup parent selection
|
||||||
|
|
||||||
Previously, the `backup` command by default selected the parent snapshot based
|
Previously, the `backup` command by default selected the parent snapshot based
|
||||||
on the hostname and the backup paths. When the backup path list changed, the
|
on the hostname and the backup targets. When the backup path list changed, the
|
||||||
`backup` command was unable to determine a suitable parent snapshot and had to
|
`backup` command was unable to determine a suitable parent snapshot and had to
|
||||||
read all files again.
|
read all files again.
|
||||||
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
Bugfix: Improve errors for irregular files on Windows
|
|
||||||
|
|
||||||
Since Go 1.21, most filesystem reparse points on Windows are considered to be
|
|
||||||
irregular files. This caused restic to show an `error: invalid node type ""`
|
|
||||||
error message for those files.
|
|
||||||
|
|
||||||
This error message has now been improved and includes the relevant file path:
|
|
||||||
`error: nodeFromFileInfo path/to/file: unsupported file type "irregular"`.
|
|
||||||
As irregular files are not required to behave like regular files, it is not
|
|
||||||
possible to provide a generic way to back up those files.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4560
|
|
||||||
https://github.com/restic/restic/pull/4620
|
|
||||||
https://forum.restic.net/t/windows-backup-error-invalid-node-type/6875
|
|
|
@ -1,11 +0,0 @@
|
||||||
Bugfix: Support backup of deduplicated files on Windows again
|
|
||||||
|
|
||||||
With the official release builds of restic 0.16.1 and 0.16.2, it was not
|
|
||||||
possible to back up files that were deduplicated by the corresponding
|
|
||||||
Windows Server feature. This also applied to restic versions built using
|
|
||||||
Go 1.21.0-1.21.4.
|
|
||||||
|
|
||||||
The Go version used to build restic has now been updated to fix this.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4574
|
|
||||||
https://github.com/restic/restic/pull/4621
|
|
|
@ -1,11 +0,0 @@
|
||||||
Bugfix: Improve error handling for `rclone` backend
|
|
||||||
|
|
||||||
Since restic 0.16.0, if rclone encountered an error while listing files,
|
|
||||||
this could in rare circumstances cause restic to assume that there are no
|
|
||||||
files. Although unlikely, this situation could result in data loss if it
|
|
||||||
were to happen right when the `prune` command is listing existing snapshots.
|
|
||||||
|
|
||||||
Error handling has now been improved to detect and work around this case.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4612
|
|
||||||
https://github.com/restic/restic/pull/4618
|
|
|
@ -1,11 +0,0 @@
|
||||||
Bugfix: Correct `restore` progress information if an error occurs
|
|
||||||
|
|
||||||
If an error occurred while restoring a snapshot, this could cause the `restore`
|
|
||||||
progress bar to show incorrect information. In addition, if a data file could
|
|
||||||
not be loaded completely, then errors would also be reported for some already
|
|
||||||
restored files.
|
|
||||||
|
|
||||||
Error reporting of the `restore` command has now been made more accurate.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4624
|
|
||||||
https://forum.restic.net/t/errors-restoring-with-restic-on-windows-server-s3/6943
|
|
|
@ -1,11 +0,0 @@
|
||||||
Bugfix: Improve reliability of restoring large files
|
|
||||||
|
|
||||||
In some cases restic failed to restore large files that frequently contain the
|
|
||||||
same file chunk. In combination with certain backends, this could result in
|
|
||||||
network connection timeouts that caused incomplete restores.
|
|
||||||
|
|
||||||
Restic now includes special handling for such file chunks to ensure reliable
|
|
||||||
restores.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4626
|
|
||||||
https://forum.restic.net/t/errors-restoring-with-restic-on-windows-server-s3/6943
|
|
|
@ -1,18 +0,0 @@
|
||||||
Enhancement: Add extra verification of data integrity before upload
|
|
||||||
|
|
||||||
Hardware issues, or a bug in restic or its dependencies, could previously cause
|
|
||||||
corruption in the files restic created and stored in the repository. Detecting
|
|
||||||
such corruption previously required explicitly running the `check --read-data`
|
|
||||||
or `check --read-data-subset` commands.
|
|
||||||
|
|
||||||
To further ensure data integrity, even in the case of hardware issues or
|
|
||||||
software bugs, restic now performs additional verification of the files about
|
|
||||||
to be uploaded to the repository.
|
|
||||||
|
|
||||||
These extra checks will increase CPU usage during backups. They can therefore,
|
|
||||||
if absolutely necessary, be disabled using the `--no-extra-verify` global
|
|
||||||
option. Please note that this should be combined with more active checking
|
|
||||||
using the previously mentioned check commands.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4529
|
|
||||||
https://github.com/restic/restic/pull/4681
|
|
|
@ -1,19 +0,0 @@
|
||||||
Bugfix: Downgrade zstd library to fix rare data corruption at max. compression
|
|
||||||
|
|
||||||
In restic 0.16.3, backups where the compression level was set to `max` (using
|
|
||||||
`--compression max`) could in rare and very specific circumstances result in
|
|
||||||
data corruption due to a bug in the library used for compressing data. Restic
|
|
||||||
0.16.1 and 0.16.2 were not affected.
|
|
||||||
|
|
||||||
Restic now uses the previous version of the library used to compress data, the
|
|
||||||
same version used by restic 0.16.2. Please note that the `auto` compression
|
|
||||||
level (which restic uses by default) was never affected, and even if you used
|
|
||||||
`max` compression, chances of being affected by this issue are small.
|
|
||||||
|
|
||||||
To check a repository for any corruption, run `restic check --read-data`. This
|
|
||||||
will download and verify the whole repository and can be used at any time to
|
|
||||||
completely verify the integrity of a repository. If the `check` command detects
|
|
||||||
anomalies, follow the suggested steps.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4677
|
|
||||||
https://github.com/restic/restic/pull/4679
|
|
|
@ -1,6 +0,0 @@
|
||||||
Enhancement: Update dependencies
|
|
||||||
|
|
||||||
A few potentially vulnerable dependencies were updated.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4873
|
|
||||||
https://github.com/restic/restic/pull/4878
|
|
|
@ -1,5 +0,0 @@
|
||||||
Enhancement: Add option to force use of Azure CLI credential
|
|
||||||
|
|
||||||
A new environment variable `AZURE_FORCE_CLI_CREDENTIAL=true` allows forcing the use of Azure CLI credential, ignoring other credentials like managed identity.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4799
|
|
|
@ -1,20 +0,0 @@
|
||||||
Enhancement: Support repositories with empty password
|
|
||||||
|
|
||||||
Restic previously required a password to create or operate on repositories.
|
|
||||||
Using the new option `--insecure-no-password` it is now possible to disable
|
|
||||||
this requirement. Restic will not prompt for a password when using this option.
|
|
||||||
|
|
||||||
For security reasons, the option must always be specified when operating on
|
|
||||||
repositories with an empty password, and specifying `--insecure-no-password`
|
|
||||||
while also passing a password to restic via a CLI option or environment
|
|
||||||
variable results in an error.
|
|
||||||
|
|
||||||
The `init` and `copy` commands add the related `--from-insecure-no-password`
|
|
||||||
option, which applies to the source repository. The `key add` and `key passwd`
|
|
||||||
commands add the `--new-insecure-no-password` option to add or set an empty
|
|
||||||
password.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1786
|
|
||||||
https://github.com/restic/restic/issues/4326
|
|
||||||
https://github.com/restic/restic/pull/4698
|
|
||||||
https://github.com/restic/restic/pull/4808
|
|
|
@ -1,12 +0,0 @@
|
||||||
Enhancement: Add `--delete` option to `restore` command
|
|
||||||
|
|
||||||
The `restore` command now supports a `--delete` option that allows removing
|
|
||||||
files and directories from the target directory that do not exist in the
|
|
||||||
snapshot. This option also allows files in the snapshot to replace non-empty
|
|
||||||
directories having the same name.
|
|
||||||
|
|
||||||
To check that only expected files are deleted, add the `--dry-run --verbose=2`
|
|
||||||
options.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2348
|
|
||||||
https://github.com/restic/restic/pull/4881
|
|
|
@ -1,11 +0,0 @@
|
||||||
Bugfix: Handle unreadable xattrs in folders above `backup` source
|
|
||||||
|
|
||||||
When backup sources are specified using absolute paths, `backup` also includes
|
|
||||||
information about the parent folders of the backup sources in the snapshot.
|
|
||||||
|
|
||||||
If the extended attributes for some of these folders could not be read due to
|
|
||||||
missing permissions, this caused the backup to fail. This has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3600
|
|
||||||
https://github.com/restic/restic/pull/4668
|
|
||||||
https://forum.restic.net/t/parent-directories-above-the-snapshot-source-path-fatal-error-permission-denied/7216
|
|
|
@ -1,12 +0,0 @@
|
||||||
Enhancement: Optimize and make `prune` command resumable
|
|
||||||
|
|
||||||
Previously, if the `prune` command was interrupted, a later `prune` run would
|
|
||||||
start repacking pack files from the start, as `prune` did not update the index
|
|
||||||
while repacking.
|
|
||||||
|
|
||||||
The `prune` command now supports resuming interrupted prune runs. The update
|
|
||||||
of the repository index has also been optimized to use less memory and only
|
|
||||||
rewrite parts of the index that have changed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3806
|
|
||||||
https://github.com/restic/restic/pull/4812
|
|
|
@ -1,6 +0,0 @@
|
||||||
Enhancement: Add support for FUSE-T with `mount` on macOS
|
|
||||||
|
|
||||||
The restic `mount` command now supports creating FUSE mounts using FUSE-T on macOS.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4048
|
|
||||||
https://github.com/restic/restic/pull/4825
|
|
|
@ -1,7 +0,0 @@
|
||||||
Bugfix: Fix slow SFTP upload performance
|
|
||||||
|
|
||||||
Since restic 0.12.1, the upload speed of the sftp backend to a remote server
|
|
||||||
has regressed significantly. This has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4209
|
|
||||||
https://github.com/restic/restic/pull/4782
|
|
|
@ -1,16 +0,0 @@
|
||||||
Enhancement: Support reading backup from a command's standard output
|
|
||||||
|
|
||||||
The `backup` command now supports the `--stdin-from-command` option. When using
|
|
||||||
this option, the arguments to `backup` are interpreted as a command instead of
|
|
||||||
paths to back up. `backup` then executes the given command and stores the
|
|
||||||
standard output from it in the backup, similar to the what the `--stdin` option
|
|
||||||
does. This also enables restic to verify that the command completes with exit
|
|
||||||
code zero. A non-zero exit code causes the backup to fail.
|
|
||||||
|
|
||||||
Note that the `--stdin` option does not have to be specified at the same time,
|
|
||||||
and that the `--stdin-filename` option also applies to `--stdin-from-command`.
|
|
||||||
|
|
||||||
Example: `restic backup --stdin-from-command --stdin-filename dump.sql mysqldump [...]`
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4251
|
|
||||||
https://github.com/restic/restic/pull/4410
|
|
|
@ -1,12 +0,0 @@
|
||||||
Enhancement: Support connection to rest-server using unix socket
|
|
||||||
|
|
||||||
Restic now supports using a unix socket to connect to a rest-server
|
|
||||||
version 0.13.0 or later. This allows running restic as follows:
|
|
||||||
|
|
||||||
```
|
|
||||||
rest-server --listen unix:/tmp/rest.socket --data /path/to/data &
|
|
||||||
restic -r rest:http+unix:///tmp/rest.socket:/my_backup_repo/ [...]
|
|
||||||
```
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4287
|
|
||||||
https://github.com/restic/restic/pull/4655
|
|
|
@ -1,11 +0,0 @@
|
||||||
Enhancement: Make `check` command create non-existent cache directory
|
|
||||||
|
|
||||||
Previously, if a custom cache directory was specified for the `check` command,
|
|
||||||
but the directory did not exist, `check` continued with the cache disabled.
|
|
||||||
|
|
||||||
The `check` command now attempts to create the cache directory before
|
|
||||||
initializing the cache.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4437
|
|
||||||
https://github.com/restic/restic/pull/4805
|
|
||||||
https://github.com/restic/restic/pull/4883
|
|
|
@ -1,18 +0,0 @@
|
||||||
Enhancement: Support AWS Assume Role for S3 backend
|
|
||||||
|
|
||||||
Previously only credentials discovered via the Minio discovery methods
|
|
||||||
were used to authenticate.
|
|
||||||
|
|
||||||
However, there are many circumstances where the discovered credentials have
|
|
||||||
lower permissions and need to assume a specific role. This is now possible
|
|
||||||
using the following new environment variables:
|
|
||||||
|
|
||||||
- RESTIC_AWS_ASSUME_ROLE_ARN
|
|
||||||
- RESTIC_AWS_ASSUME_ROLE_SESSION_NAME
|
|
||||||
- RESTIC_AWS_ASSUME_ROLE_EXTERNAL_ID
|
|
||||||
- RESTIC_AWS_ASSUME_ROLE_REGION (defaults to us-east-1)
|
|
||||||
- RESTIC_AWS_ASSUME_ROLE_POLICY
|
|
||||||
- RESTIC_AWS_ASSUME_ROLE_STS_ENDPOINT
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4472
|
|
||||||
https://github.com/restic/restic/pull/4474
|
|
|
@ -1,7 +0,0 @@
|
||||||
Change: Require at least ARMv6 for ARM binaries
|
|
||||||
|
|
||||||
The official release binaries of restic now require
|
|
||||||
at least ARMv6 support for ARM platforms.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4540
|
|
||||||
https://github.com/restic/restic/pull/4542
|
|
|
@ -1,7 +0,0 @@
|
||||||
Enhancement: Add `--json` option to `version` command
|
|
||||||
|
|
||||||
Restic now supports outputting restic version along with the Go version, OS
|
|
||||||
and architecture used to build restic in JSON format using `version --json`.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4547
|
|
||||||
https://github.com/restic/restic/pull/4553
|
|
|
@ -1,11 +0,0 @@
|
||||||
Enhancement: Add `--ncdu` option to `ls` command
|
|
||||||
|
|
||||||
NCDU (NCurses Disk Usage) is a tool to analyse disk usage of directories. It has
|
|
||||||
an option to save a directory tree and analyse it later.
|
|
||||||
|
|
||||||
The `ls` command now supports outputting snapshot information in the NCDU format
|
|
||||||
using the `--ncdu` option. Example usage: `restic ls latest --ncdu | ncdu -f -`
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4549
|
|
||||||
https://github.com/restic/restic/pull/4550
|
|
||||||
https://github.com/restic/restic/pull/4911
|
|
|
@ -1,16 +0,0 @@
|
||||||
Bugfix: Prevent `forget --keep-tags <invalid>` from deleting all snapshots
|
|
||||||
|
|
||||||
Running `forget --keep-tags <invalid>`, where `<invalid>` is a tag that does
|
|
||||||
not exist in the repository, would remove all snapshots. This is especially
|
|
||||||
problematic if the tag name contains a typo.
|
|
||||||
|
|
||||||
The `forget` command now fails with an error if all snapshots in a snapshot
|
|
||||||
group would be deleted. This prevents the above example from deleting all
|
|
||||||
snapshots.
|
|
||||||
|
|
||||||
It is possible to temporarily disable the new check by setting the environment
|
|
||||||
variable `RESTIC_FEATURES=safe-forget-keep-tags=false`. Note that this feature
|
|
||||||
flag will be removed in the next minor restic version.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4568
|
|
||||||
https://github.com/restic/restic/pull/4764
|
|
|
@ -1,13 +0,0 @@
|
||||||
Enhancement: Ignore `s3.storage-class` archive tiers for metadata
|
|
||||||
|
|
||||||
Restic used to store all files on S3 using the specified `s3.storage-class`.
|
|
||||||
|
|
||||||
Now, restic will only use non-archive storage tiers for metadata, to avoid
|
|
||||||
problems when accessing a repository. To restore any data, it is still
|
|
||||||
necessary to manually warm up the required data beforehand.
|
|
||||||
|
|
||||||
NOTE: There is no official cold storage support in restic, use this option at
|
|
||||||
your own risk.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4583
|
|
||||||
https://github.com/restic/restic/pull/4584
|
|
|
@ -1,9 +0,0 @@
|
||||||
Enhancement: Add support for feature flags
|
|
||||||
|
|
||||||
Restic now supports feature flags that can be used to enable and disable
|
|
||||||
experimental features. The flags can be set using the environment variable
|
|
||||||
`RESTIC_FEATURES`. To get a list of currently supported feature flags, use
|
|
||||||
the `features` command.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4601
|
|
||||||
https://github.com/restic/restic/pull/4666
|
|
|
@ -1,22 +0,0 @@
|
||||||
Change: Deprecate legacy index format and `s3legacy` repository layout
|
|
||||||
|
|
||||||
Support for the legacy index format used by restic before version 0.2.0 has
|
|
||||||
been deprecated and will be removed in the next minor restic version. You can
|
|
||||||
use `restic repair index` to update the index to the current format.
|
|
||||||
|
|
||||||
It is possible to temporarily reenable support for the legacy index format by
|
|
||||||
setting the environment variable `RESTIC_FEATURES=deprecate-legacy-index=false`.
|
|
||||||
Note that this feature flag will be removed in the next minor restic version.
|
|
||||||
|
|
||||||
Support for the `s3legacy` repository layout used for the S3 backend before
|
|
||||||
restic 0.7.0 has been deprecated and will be removed in the next minor restic
|
|
||||||
version. You can migrate your S3 repository to the current layout using
|
|
||||||
`RESTIC_FEATURES=deprecate-s3-legacy-layout=false restic migrate s3_layout`.
|
|
||||||
|
|
||||||
It is possible to temporarily reenable support for the `s3legacy` layout by
|
|
||||||
setting the environment variable `RESTIC_FEATURES=deprecate-s3-legacy-layout=false`.
|
|
||||||
Note that this feature flag will be removed in the next minor restic version.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4602
|
|
||||||
https://github.com/restic/restic/pull/4724
|
|
||||||
https://github.com/restic/restic/pull/4743
|
|
|
@ -1,33 +0,0 @@
|
||||||
Change: Redesign backend error handling to improve reliability
|
|
||||||
|
|
||||||
Restic now downloads pack files in large chunks instead of using a streaming
|
|
||||||
download. This prevents failures due to interrupted streams. The `restore`
|
|
||||||
command now also retries downloading individual blobs that could not be
|
|
||||||
retrieved.
|
|
||||||
|
|
||||||
HTTP requests that are stuck for more than two minutes while uploading or
|
|
||||||
downloading are now forcibly interrupted. This ensures that stuck requests are
|
|
||||||
retried after a short timeout.
|
|
||||||
|
|
||||||
Attempts to access a missing or truncated file will no longer be retried. This
|
|
||||||
avoids unnecessary retries in those cases. All other backend requests are
|
|
||||||
retried for up to 15 minutes. This ensures that temporarily interrupted network
|
|
||||||
connections can be tolerated.
|
|
||||||
|
|
||||||
If a download yields a corrupt file or blob, then the download will be retried
|
|
||||||
once.
|
|
||||||
|
|
||||||
Most parts of the new backend error handling can temporarily be disabled by
|
|
||||||
setting the environment variable `RESTIC_FEATURES=backend-error-redesign=false`.
|
|
||||||
Note that this feature flag will be removed in the next minor restic version.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4627
|
|
||||||
https://github.com/restic/restic/issues/4193
|
|
||||||
https://github.com/restic/restic/pull/4605
|
|
||||||
https://github.com/restic/restic/pull/4792
|
|
||||||
https://github.com/restic/restic/issues/4515
|
|
||||||
https://github.com/restic/restic/issues/1523
|
|
||||||
https://github.com/restic/restic/pull/4520
|
|
||||||
https://github.com/restic/restic/pull/4800
|
|
||||||
https://github.com/restic/restic/pull/4784
|
|
||||||
https://github.com/restic/restic/pull/4844
|
|
|
@ -1,7 +0,0 @@
|
||||||
Bugfix: Properly report ID of newly added keys
|
|
||||||
|
|
||||||
`restic key add` now reports the ID of the newly added key. This simplifies
|
|
||||||
selecting a specific key using the `--key-hint key` option.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4656
|
|
||||||
https://github.com/restic/restic/pull/4657
|
|
|
@ -1,8 +0,0 @@
|
||||||
Enhancement: Make `key` command's actions separate sub-commands
|
|
||||||
|
|
||||||
Each of the `add`, `list`, `remove` and `passwd` actions provided by the `key`
|
|
||||||
command is now a separate sub-command and have its own documentation which can
|
|
||||||
be invoked using `restic key <add|list|remove|passwd> --help`.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4676
|
|
||||||
https://github.com/restic/restic/pull/4685
|
|
|
@ -1,8 +0,0 @@
|
||||||
Enhancement: Add `--target` option to the `dump` command
|
|
||||||
|
|
||||||
Restic `dump` always printed to the standard output. It now supports specifying
|
|
||||||
a `--target` file to write its output to.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4678
|
|
||||||
https://github.com/restic/restic/pull/4682
|
|
||||||
https://github.com/restic/restic/pull/4692
|
|
|
@ -1,14 +0,0 @@
|
||||||
Change: Disable S3 anonymous authentication by default
|
|
||||||
|
|
||||||
When using the S3 backend with anonymous authentication, it continuously
|
|
||||||
tried to retrieve new authentication credentials, causing bad performance.
|
|
||||||
|
|
||||||
Now, to use anonymous authentication, it is necessary to pass the extended
|
|
||||||
option `-o s3.unsafe-anonymous-auth=true` to restic.
|
|
||||||
|
|
||||||
It is possible to temporarily revert to the old behavior by setting the
|
|
||||||
environment variable `RESTIC_FEATURES=explicit-s3-anonymous-auth=false`. Note
|
|
||||||
that this feature flag will be removed in the next minor restic version.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4707
|
|
||||||
https://github.com/restic/restic/pull/4908
|
|
|
@ -1,12 +0,0 @@
|
||||||
Enhancement: Allow specifying `--host` via environment variable
|
|
||||||
|
|
||||||
Restic commands that operate on snapshots, such as `restic backup` and
|
|
||||||
`restic snapshots`, support the `--host` option to specify the hostname
|
|
||||||
for grouping snapshots.
|
|
||||||
|
|
||||||
Such commands now also support specifying the hostname via the environment
|
|
||||||
variable `RESTIC_HOST`. Note that `--host` still takes precedence over the
|
|
||||||
environment variable.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4733
|
|
||||||
https://github.com/restic/restic/pull/4734
|
|
|
@ -1,9 +0,0 @@
|
||||||
Change: Include full key ID in JSON output of `key list`
|
|
||||||
|
|
||||||
The JSON output of the `key list` command has changed to include the full key
|
|
||||||
ID instead of just a shortened version of the ID, as the latter can be ambiguous
|
|
||||||
in some rare cases. To derive the short ID, please truncate the full ID down to
|
|
||||||
eight characters.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4744
|
|
||||||
https://github.com/restic/restic/pull/4745
|
|
|
@ -1,8 +0,0 @@
|
||||||
Bugfix: Fix possible error on concurrent cache cleanup
|
|
||||||
|
|
||||||
If multiple restic processes concurrently cleaned up no longer existing files
|
|
||||||
from the cache, this could cause some of the processes to fail with an `no such
|
|
||||||
file or directory` error. This has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4760
|
|
||||||
https://github.com/restic/restic/pull/4761
|
|
|
@ -1,8 +0,0 @@
|
||||||
Enhancement: Allow specifying custom User-Agent for outgoing requests
|
|
||||||
|
|
||||||
Restic now supports setting a custom `User-Agent` for outgoing HTTP requests
|
|
||||||
using the global option `--http-user-agent` or the `RESTIC_HTTP_USER_AGENT`
|
|
||||||
environment variable.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4768
|
|
||||||
https://github.com/restic/restic/pull/4810
|
|
|
@ -1,8 +0,0 @@
|
||||||
Enhancement: Add `restore` options to read include/exclude patterns from files
|
|
||||||
|
|
||||||
Restic now supports reading include and exclude patterns from files using the
|
|
||||||
`--include-file`, `--exclude-file`, `--iinclude-file` and `--iexclude-file`
|
|
||||||
options of the `restore` command.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4781
|
|
||||||
https://github.com/restic/restic/pull/4811
|
|
|
@ -1,26 +0,0 @@
|
||||||
Enhancement: Make overwrite behavior of `restore` customizable
|
|
||||||
|
|
||||||
The `restore` command now supports an `--overwrite` option to configure whether
|
|
||||||
already existing files are overwritten. The overwrite behavior can be configured
|
|
||||||
using the following option values:
|
|
||||||
|
|
||||||
- `--overwrite always` (default): Always overwrites already existing files.
|
|
||||||
The `restore` command will verify the existing file content and only restore
|
|
||||||
mismatching parts to minimize downloads. Updates the metadata of all files.
|
|
||||||
- `--overwrite if-changed`: Like `always`, but speeds up the file content check
|
|
||||||
by assuming that files with matching size and modification time (mtime) are
|
|
||||||
already up to date. In case of a mismatch, the full file content is verified
|
|
||||||
like with `always`. Updates the metadata of all files.
|
|
||||||
- `--overwrite if-newer`: Like `always`, but only overwrites existing files
|
|
||||||
when the file in the snapshot has a newer modification time (mtime) than the
|
|
||||||
existing file.
|
|
||||||
- `--overwrite never`: Never overwrites existing files.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4817
|
|
||||||
https://github.com/restic/restic/issues/200
|
|
||||||
https://github.com/restic/restic/issues/407
|
|
||||||
https://github.com/restic/restic/issues/2662
|
|
||||||
https://github.com/restic/restic/pull/4837
|
|
||||||
https://github.com/restic/restic/pull/4838
|
|
||||||
https://github.com/restic/restic/pull/4864
|
|
||||||
https://github.com/restic/restic/pull/4921
|
|
|
@ -1,8 +0,0 @@
|
||||||
Bugfix: Handle UTF-16 password files in `key` command correctly
|
|
||||||
|
|
||||||
Previously, `key add` and `key passwd` did not properly decode UTF-16
|
|
||||||
encoded passwords read from a password file. This has now been fixed
|
|
||||||
to correctly match the encoding when opening a repository.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4850
|
|
||||||
https://github.com/restic/restic/pull/4851
|
|
|
@ -1,8 +0,0 @@
|
||||||
Bugfix: Update snapshot summary on `rewrite`
|
|
||||||
|
|
||||||
Restic previously did not recalculate the total number of files and bytes
|
|
||||||
processed when files were excluded from a snapshot by the `rewrite` command.
|
|
||||||
This has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4902
|
|
||||||
https://github.com/restic/restic/pull/4905
|
|
|
@ -1,11 +0,0 @@
|
||||||
Enhancement: Optionally skip snapshot creation if nothing changed
|
|
||||||
|
|
||||||
The `backup` command always created a snapshot even if nothing in the
|
|
||||||
backup set changed compared to the parent snapshot.
|
|
||||||
|
|
||||||
Restic now supports the `--skip-if-unchanged` option for the `backup`
|
|
||||||
command, which omits creating a snapshot if the new snapshot's content
|
|
||||||
would be identical to that of the parent snapshot.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/662
|
|
||||||
https://github.com/restic/restic/pull/4816
|
|
|
@ -1,13 +0,0 @@
|
||||||
Enhancement: Include snapshot size in `snapshots` output
|
|
||||||
|
|
||||||
The `snapshots` command now prints the size for snapshots created using this
|
|
||||||
or a future restic version. To achieve this, the `backup` command now stores
|
|
||||||
the backup summary statistics in the snapshot.
|
|
||||||
|
|
||||||
The text output of the `snapshots` command only shows the snapshot size. The
|
|
||||||
other statistics are only included in the JSON output. To inspect these
|
|
||||||
statistics use `restic snapshots --json` or `restic cat snapshot <snapshotID>`.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/693
|
|
||||||
https://github.com/restic/restic/pull/4705
|
|
||||||
https://github.com/restic/restic/pull/4913
|
|
|
@ -1,11 +0,0 @@
|
||||||
Enhancement: Improve features of the `repair packs` command
|
|
||||||
|
|
||||||
The `repair packs` command has been improved to also be able to process
|
|
||||||
truncated pack files. The `check` and `check --read-data` command will provide
|
|
||||||
instructions on using the command if necessary to repair a repository. See the
|
|
||||||
guide at https://restic.readthedocs.io/en/stable/077_troubleshooting.html for
|
|
||||||
further instructions.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/828
|
|
||||||
https://github.com/restic/restic/pull/4644
|
|
||||||
https://github.com/restic/restic/pull/4882
|
|
|
@ -1,25 +0,0 @@
|
||||||
Enhancement: Add extended options to configure Windows Shadow Copy Service
|
|
||||||
|
|
||||||
Previous, restic always used a 120 seconds timeout and unconditionally created
|
|
||||||
VSS snapshots for all volume mount points on disk. This behavior can now be
|
|
||||||
fine-tuned by the following new extended options (available only on Windows):
|
|
||||||
|
|
||||||
- `-o vss.timeout`: Time that VSS can spend creating snapshot before timing out (default: 120s)
|
|
||||||
- `-o vss.exclude-all-mount-points`: Exclude mountpoints from snapshotting on all volumes (default: false)
|
|
||||||
- `-o vss.exclude-volumes`: Semicolon separated list of volumes to exclude from snapshotting
|
|
||||||
- `-o vss.provider`: VSS provider identifier which will be used for snapshotting
|
|
||||||
|
|
||||||
For example, change VSS timeout to five minutes and disable snapshotting of
|
|
||||||
mount points on all volumes:
|
|
||||||
|
|
||||||
restic backup --use-fs-snapshot -o vss.timeout=5m -o vss.exclude-all-mount-points=true
|
|
||||||
|
|
||||||
Exclude drive `d:`, mount point `c:\mnt` and a specific volume from snapshotting:
|
|
||||||
|
|
||||||
restic backup --use-fs-snapshot -o vss.exclude-volumes="d:\;c:\mnt\;\\?\Volume{e2e0315d-9066-4f97-8343-eb5659b35762}"
|
|
||||||
|
|
||||||
Uses 'Microsoft Software Shadow Copy provider 1.0' instead of the default provider:
|
|
||||||
|
|
||||||
restic backup --use-fs-snapshot -o vss.provider={b5946137-7b9f-4925-af80-51abd60b20d5}
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3067
|
|
|
@ -1,15 +0,0 @@
|
||||||
Enhancement: (alpha) Store deviceID only for hardlinks
|
|
||||||
|
|
||||||
Set `RESTIC_FEATURES=device-id-for-hardlinks` to enable this alpha feature.
|
|
||||||
The feature flag will be removed after repository format version 3 becomes
|
|
||||||
available or be replaced with a different solution.
|
|
||||||
|
|
||||||
When creating backups from a filesystem snapshot, for example created using
|
|
||||||
BTRFS subvolumes, the deviceID of the filesystem changes compared to previous
|
|
||||||
snapshots. This prevented restic from deduplicating the directory metadata of
|
|
||||||
a snapshot.
|
|
||||||
|
|
||||||
When this alpha feature is enabled, the deviceID is only stored for hardlinks,
|
|
||||||
which significantly reduces the metadata duplication for most backups.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4006
|
|
|
@ -1,7 +0,0 @@
|
||||||
Enhancement: Significantly reduce `prune` memory usage
|
|
||||||
|
|
||||||
The `prune` command has been optimized to use up to 60% less memory.
|
|
||||||
The memory usage should now be roughly similar to creating a backup.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4354
|
|
||||||
https://github.com/restic/restic/pull/4812
|
|
|
@ -1,8 +0,0 @@
|
||||||
Bugfix: Correct hardlink handling in `stats` command
|
|
||||||
|
|
||||||
If files on different devices had the same inode ID, the `stats` command
|
|
||||||
did not correctly calculate the snapshot size. This has now been fixed.
|
|
||||||
|
|
||||||
https://forum.restic.net/t/possible-bug-in-stats/6461/8
|
|
||||||
https://github.com/restic/restic/pull/4503
|
|
||||||
https://github.com/restic/restic/pull/4006
|
|
|
@ -1,12 +0,0 @@
|
||||||
Enhancement: Add bitrot detection to `diff` command
|
|
||||||
|
|
||||||
The output of the `diff` command now includes the modifier `?` for files to
|
|
||||||
indicate bitrot in backed up files. The `?` will appear whenever there is a
|
|
||||||
difference in content while the metadata is exactly the same.
|
|
||||||
|
|
||||||
Since files with unchanged metadata are normally not read again when creating
|
|
||||||
a backup, the detection is only effective when the right-hand side of the diff
|
|
||||||
has been created with `backup --force`.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/805
|
|
||||||
https://github.com/restic/restic/pull/4526
|
|
|
@ -1,6 +0,0 @@
|
||||||
Enhancement: Support rewriting host and time metadata in snapshots
|
|
||||||
|
|
||||||
The `rewrite` command now supports rewriting the host and/or time metadata of
|
|
||||||
a snapshot using the new `--new-host` and `--new-time` options.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4573
|
|
|
@ -1,6 +0,0 @@
|
||||||
Enhancement: Speed up `mount` command's error detection
|
|
||||||
|
|
||||||
The `mount` command now checks for the existence of the mountpoint before
|
|
||||||
opening the repository, leading to quicker error detection.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4590
|
|
|
@ -1,9 +0,0 @@
|
||||||
Enhancement: Back up more file metadata on Windows
|
|
||||||
|
|
||||||
Previously, restic did not back up all common Windows-specific metadata.
|
|
||||||
|
|
||||||
Restic now stores file creation time and file attributes like the hidden,
|
|
||||||
read-only and encrypted flags when backing up files and folders on Windows.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4611
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
Bugfix: Make `find` not sometimes ignore directories
|
|
||||||
|
|
||||||
In some cases, the `find` command ignored empty or moved directories. This has
|
|
||||||
now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4615
|
|
|
@ -1,10 +0,0 @@
|
||||||
Enhancement: Make `ls` use `message_type` field in JSON output
|
|
||||||
|
|
||||||
The `ls` command was the only restic command that used the `struct_type` field
|
|
||||||
in its JSON output format to specify the message type.
|
|
||||||
|
|
||||||
The JSON output of the `ls` command now also includes the `message_type` field,
|
|
||||||
which is consistent with other commands. The `struct_type` field is still
|
|
||||||
included, but now deprecated.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4664
|
|
|
@ -1,11 +0,0 @@
|
||||||
Bugfix: Shutdown cleanly when receiving SIGTERM
|
|
||||||
|
|
||||||
Previously, when restic received the SIGTERM signal it would terminate
|
|
||||||
immediately, skipping cleanup and potentially causing issues like stale locks
|
|
||||||
being left behind. This primarily effected containerized restic invocations
|
|
||||||
that use SIGTERM, but could also be triggered via a simple `killall restic`.
|
|
||||||
|
|
||||||
This has now been fixed, such that restic shuts down cleanly when receiving
|
|
||||||
the SIGTERM signal.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4703
|
|
|
@ -1,13 +0,0 @@
|
||||||
Enhancement: Back up and restore SecurityDescriptors on Windows
|
|
||||||
|
|
||||||
Restic now backs up and restores SecurityDescriptors for files and folders on
|
|
||||||
Windows which includes owner, group, discretionary access control list (DACL)
|
|
||||||
and system access control list (SACL).
|
|
||||||
|
|
||||||
This requires the user to be a member of backup operators or the application
|
|
||||||
must be run as admin. If that is not the case, only the current user's owner,
|
|
||||||
group and DACL will be backed up, and during restore only the DACL of the
|
|
||||||
backed up file will be restored, with the current user's owner and group
|
|
||||||
being set on the restored file.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4708
|
|
|
@ -1,10 +0,0 @@
|
||||||
Bugfix: Correct `--no-lock` handling of `ls` and `tag` commands
|
|
||||||
|
|
||||||
The `ls` command never locked the repository. This has now been fixed, with the
|
|
||||||
old behavior still being supported using `ls --no-lock`. The latter invocation
|
|
||||||
also works with older restic versions.
|
|
||||||
|
|
||||||
The `tag` command erroneously accepted the `--no-lock` command. This command
|
|
||||||
now always requires an exclusive lock.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4709
|
|
|
@ -1,6 +0,0 @@
|
||||||
Enhancement: Include snapshot ID in `reason` field of `forget` JSON output
|
|
||||||
|
|
||||||
The JSON output of the `forget` command now includes `id` and `short_id` of
|
|
||||||
snapshots in the `reason` field.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4737
|
|
|
@ -1,10 +0,0 @@
|
||||||
Enhancement: Support forgetting all snapshots
|
|
||||||
|
|
||||||
The `forget` command now supports the `--unsafe-allow-remove-all` option, which
|
|
||||||
removes all snapshots in the repository.
|
|
||||||
|
|
||||||
This option must always be combined with a snapshot filter (by host, path or
|
|
||||||
tag). For example, the command `forget --tag example --unsafe-allow-remove-all`
|
|
||||||
removes all snapshots with the tag "example".
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4764
|
|
|
@ -1,8 +0,0 @@
|
||||||
Enhancement: Improve `dump` performance for large files
|
|
||||||
|
|
||||||
The `dump` command now retrieves the data chunks for a file in
|
|
||||||
parallel. This improves the download performance by up to as many
|
|
||||||
times as the configured number of parallel backend connections.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3406
|
|
||||||
https://github.com/restic/restic/pull/4796
|
|
|
@ -1,6 +0,0 @@
|
||||||
Enhancement: Support Extended Attributes on Windows NTFS
|
|
||||||
|
|
||||||
Restic now backs up and restores Extended Attributes for files
|
|
||||||
and folders on Windows NTFS.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4807
|
|
|
@ -1,7 +0,0 @@
|
||||||
Enhancement: Add dry-run support to `restore` command
|
|
||||||
|
|
||||||
The `restore` command now supports the `--dry-run` option to perform
|
|
||||||
a dry run. Pass the `--verbose=2` option to see which files would
|
|
||||||
remain unchanged, and which would be updated or freshly restored.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4839
|
|
|
@ -1,11 +0,0 @@
|
||||||
Change: Return exit code 10 and 11 for non-existing and locked repository
|
|
||||||
|
|
||||||
If a repository does not exist or cannot be locked, restic previously always
|
|
||||||
returned exit code 1. This made it difficult to distinguish these cases from
|
|
||||||
other errors.
|
|
||||||
|
|
||||||
Restic now returns exit code 10 if the repository does not exist, and exit code
|
|
||||||
11 if the repository could be not locked due to a conflicting lock.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/956
|
|
||||||
https://github.com/restic/restic/pull/4884
|
|
|
@ -1,18 +0,0 @@
|
||||||
Bugfix: Correctly handle volume names in `backup` command on Windows
|
|
||||||
|
|
||||||
On Windows, when the specified backup target only included the volume
|
|
||||||
name without a trailing slash, for example, `C:`, then restoring the
|
|
||||||
resulting snapshot would result in an error. Note that using `C:\`
|
|
||||||
as backup target worked correctly.
|
|
||||||
|
|
||||||
Specifying volume names is now handled correctly. To restore snapshots
|
|
||||||
created before this bugfix, use the <snapshot>:<subpath> syntax. For
|
|
||||||
example, to restore a snapshot with ID `12345678` that backed up `C:`,
|
|
||||||
use the following command:
|
|
||||||
|
|
||||||
```
|
|
||||||
restic restore 12345678:/C/C:./ --target output/folder
|
|
||||||
```
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2004
|
|
||||||
https://github.com/restic/restic/pull/5028
|
|
|
@ -1,8 +0,0 @@
|
||||||
Enhancement: Display progress bar for `restore --verify`
|
|
||||||
|
|
||||||
When the `restore` command is run with `--verify`, it now displays a progress
|
|
||||||
bar while the verification step is running. The progress bar is not shown when
|
|
||||||
the `--json` flag is specified.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4795
|
|
||||||
https://github.com/restic/restic/pull/4989
|
|
|
@ -1,11 +0,0 @@
|
||||||
Enhancement: Automatically clear removed snapshots from cache
|
|
||||||
|
|
||||||
Previously, restic only removed snapshots from the cache on the host where the
|
|
||||||
`forget` command was executed. On other hosts that use the same repository, the
|
|
||||||
old snapshots remained in the cache.
|
|
||||||
|
|
||||||
Restic now automatically clears old snapshots from the local cache of the
|
|
||||||
current host.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4934
|
|
||||||
https://github.com/restic/restic/pull/4981
|
|
|
@ -1,9 +0,0 @@
|
||||||
Enhancement: Print JSON-formatted errors during `restore --json`
|
|
||||||
|
|
||||||
Restic used to print any `restore` errors directly to the console as freeform
|
|
||||||
text messages, even when using the `--json` option.
|
|
||||||
|
|
||||||
Now, when `--json` is specified, restic prints them as JSON formatted messages.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4944
|
|
||||||
https://github.com/restic/restic/pull/4946
|
|
|
@ -1,10 +0,0 @@
|
||||||
Bugfix: Include missing backup error text with `--json`
|
|
||||||
|
|
||||||
Previously, when running a backup with the `--json` option, restic failed to
|
|
||||||
include the actual error message in the output, resulting in `"error": {}`
|
|
||||||
being displayed.
|
|
||||||
|
|
||||||
This has now been fixed, and restic now includes the error text in JSON output.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4945
|
|
||||||
https://github.com/restic/restic/pull/4946
|
|
|
@ -1,7 +0,0 @@
|
||||||
Bugfix: Correctly handle long paths on older Windows versions
|
|
||||||
|
|
||||||
On older Windows versions, like Windows Server 2012, restic 0.17.0 failed to
|
|
||||||
back up files with long paths. This problem has now been resolved.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4953
|
|
||||||
https://github.com/restic/restic/pull/4954
|
|
|
@ -1,8 +0,0 @@
|
||||||
Bugfix: Fix delayed cancellation of certain commands
|
|
||||||
|
|
||||||
Since restic 0.17.0, some commands did not immediately respond to cancellation
|
|
||||||
via Ctrl-C (SIGINT) and continued running for a short period. The most affected
|
|
||||||
commands were `diff`,`find`, `ls`, `stats` and `rewrite`. This is now resolved.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4957
|
|
||||||
https://github.com/restic/restic/pull/4960
|
|
|
@ -1,7 +0,0 @@
|
||||||
Bugfix: Correctly restore timestamp for files with resource forks on macOS
|
|
||||||
|
|
||||||
On macOS, timestamps were not restored for files with resource forks. This has
|
|
||||||
now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4969
|
|
||||||
https://github.com/restic/restic/pull/5006
|
|
|
@ -1,15 +0,0 @@
|
||||||
Enhancement: Make timeout for stuck requests customizable
|
|
||||||
|
|
||||||
Restic monitors connections to the backend to detect stuck requests. If a
|
|
||||||
request does not return any data within five minutes, restic assumes the
|
|
||||||
request is stuck and retries it. However, for large repositories this timeout
|
|
||||||
might be insufficient to collect a list of all files, causing the following
|
|
||||||
error:
|
|
||||||
|
|
||||||
`List(data) returned error, retrying after 1s: [...]: request timeout`
|
|
||||||
|
|
||||||
It is now possible to increase the timeout using the `--stuck-request-timeout`
|
|
||||||
option.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4970
|
|
||||||
https://github.com/restic/restic/pull/5014
|
|
|
@ -1,7 +0,0 @@
|
||||||
Bugfix: Prevent `backup --stdin-from-command` from panicking
|
|
||||||
|
|
||||||
Restic would previously crash if `--stdin-from-command` was specified without
|
|
||||||
providing a command. This issue has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4975
|
|
||||||
https://github.com/restic/restic/pull/4976
|
|
|
@ -1,12 +0,0 @@
|
||||||
Bugfix: Fix spurious "A Required Privilege Is Not Held by the Client" error
|
|
||||||
|
|
||||||
On Windows, creating a backup could sometimes trigger the following error:
|
|
||||||
|
|
||||||
```
|
|
||||||
error: nodeFromFileInfo [...]: get named security info failed with: a required privilege is not held by the client.
|
|
||||||
```
|
|
||||||
|
|
||||||
This has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/5004
|
|
||||||
https://github.com/restic/restic/pull/5019
|
|
|
@ -1,16 +0,0 @@
|
||||||
Bugfix: Fix rare failures to retry locking a repository
|
|
||||||
|
|
||||||
Restic 0.17.0 could in rare cases fail to retry locking a repository if one of
|
|
||||||
the lock files failed to load, resulting in the error:
|
|
||||||
|
|
||||||
```
|
|
||||||
unable to create lock in backend: circuit breaker open for file <lock/1234567890>
|
|
||||||
```
|
|
||||||
|
|
||||||
This issue has now been addressed. The error handling now properly retries the
|
|
||||||
locking operation. In addition, restic waits a few seconds between locking
|
|
||||||
retries to increase chances of successful locking.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/5005
|
|
||||||
https://github.com/restic/restic/pull/5011
|
|
||||||
https://github.com/restic/restic/pull/5012
|
|
|
@ -1,7 +0,0 @@
|
||||||
Bugfix: Don't ignore metadata-setting errors during restore
|
|
||||||
|
|
||||||
Previously, restic used to ignore errors when setting timestamps, attributes,
|
|
||||||
or file modes during a restore. It now reports those errors, except for
|
|
||||||
permission related errors when running without root privileges.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4958
|
|
|
@ -1,6 +0,0 @@
|
||||||
Enhancement: Return exit code 12 for "bad password" errors
|
|
||||||
|
|
||||||
Restic now returns exit code 12 when it cannot open the repository due to an
|
|
||||||
incorrect password.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4959
|
|
|
@ -1,16 +0,0 @@
|
||||||
Change: Also back up files with incomplete metadata
|
|
||||||
|
|
||||||
If restic failed to read extended metadata for a file or folder during a
|
|
||||||
backup, then the file or folder was not included in the resulting snapshot.
|
|
||||||
Instead, a warning message was printed along with returning exit code 3 once
|
|
||||||
the backup was finished.
|
|
||||||
|
|
||||||
Now, restic also includes items for which the extended metadata could not be
|
|
||||||
read in a snapshot. The warning message has been updated to:
|
|
||||||
|
|
||||||
```
|
|
||||||
incomplete metadata for /path/to/file: <details about error>
|
|
||||||
```
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4953
|
|
||||||
https://github.com/restic/restic/pull/4977
|
|
|
@ -1,12 +0,0 @@
|
||||||
Bugfix: Skip extended attribute processing on unsupported Windows volumes
|
|
||||||
|
|
||||||
With restic 0.17.0, backups of certain Windows paths, such as network drives,
|
|
||||||
failed due to errors while fetching extended attributes.
|
|
||||||
|
|
||||||
Restic now skips extended attribute processing for volumes where they are not
|
|
||||||
supported.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/4980
|
|
||||||
https://github.com/restic/restic/pull/4998
|
|
||||||
https://github.com/restic/restic/issues/4955
|
|
||||||
https://github.com/restic/restic/issues/4950
|
|
|
@ -1,13 +0,0 @@
|
||||||
Bugfix: Improve HTTP/2 support for REST backend
|
|
||||||
|
|
||||||
If `rest-server` tried to gracefully shut down an HTTP/2 connection still in
|
|
||||||
use by the client, it could result in the following error:
|
|
||||||
|
|
||||||
```
|
|
||||||
http2: Transport: cannot retry err [http2: Transport received Server's graceful shutdown GOAWAY] after Request.Body was written; define Request.GetBody to avoid this error
|
|
||||||
```
|
|
||||||
|
|
||||||
This issue has now been resolved.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/5018
|
|
||||||
https://forum.restic.net/t/receiving-http2-goaway-messages-with-windows-restic-v0-17-0/8367
|
|
|
@ -1,12 +0,0 @@
|
||||||
Bugfix: Support container-level SAS/SAT tokens for Azure backend
|
|
||||||
|
|
||||||
Restic previously expected SAS/SAT tokens to be generated at the account level,
|
|
||||||
which prevented tokens created at the container level from being used to
|
|
||||||
initialize a repository. This caused an error when attempting to initialize a
|
|
||||||
repository with container-level tokens.
|
|
||||||
|
|
||||||
Restic now supports both account-level and container-level SAS/SAT tokens for
|
|
||||||
initializing a repository.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/4004
|
|
||||||
https://github.com/restic/restic/pull/5093
|
|
|
@ -1,7 +0,0 @@
|
||||||
Bugfix: Return error if `tag` fails to lock repository
|
|
||||||
|
|
||||||
Since restic 0.17.0, the `tag` command did not return an error when it failed
|
|
||||||
to open or lock the repository. This issue has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/5050
|
|
||||||
https://github.com/restic/restic/pull/5056
|
|
|
@ -1,12 +0,0 @@
|
||||||
Bugfix: Correctly `backup` extended metadata when using VSS on Windows
|
|
||||||
|
|
||||||
On Windows, when creating a backup with the `--use-fs-snapshot` option, restic
|
|
||||||
read extended metadata from the original filesystem path instead of from the
|
|
||||||
snapshot. This could result in errors if files were removed during the backup
|
|
||||||
process.
|
|
||||||
|
|
||||||
This issue has now been resolved.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/5063
|
|
||||||
https://github.com/restic/restic/pull/5097
|
|
||||||
https://github.com/restic/restic/pull/5099
|
|
|
@ -1,8 +0,0 @@
|
||||||
Bugfix: Resolve potential error during concurrent cache cleanup
|
|
||||||
|
|
||||||
When multiple restic processes ran concurrently, they could compete to remove
|
|
||||||
obsolete snapshots from the local backend cache, sometimes leading to a "no
|
|
||||||
such file or directory" error. Restic now suppresses this error to prevent
|
|
||||||
issues during cache cleanup.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/5047
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue