mirror of
https://github.com/restic/restic.git
synced 2026-10-29 19:45:42 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7e72d638df |
No files matched your search
@@ -39,8 +39,8 @@ Please describe the feature you'd like us to add here.
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
What are you trying to do? What problem would this solve?
|
What are you trying to do?
|
||||||
---------------------------------------------------------
|
--------------------------
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
This section should contain a brief description what you're trying to do, which
|
This section should contain a brief description what you're trying to do, which
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ your time and add more commits. If you're done and ready for review, please
|
|||||||
check the last box.
|
check the last box.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
What does this PR change? What problem does it solve?
|
What is the purpose of this change? What does it change?
|
||||||
-----------------------------------------------------
|
--------------------------------------------------------
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Describe the changes and their purpose here, as detailed as needed.
|
Describe the changes here, as detailed as needed.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
Was the change discussed in an issue or in the forum before?
|
Was the change discussed in an issue or in the forum before?
|
||||||
@@ -23,8 +23,8 @@ Was the change discussed in an issue or in the forum before?
|
|||||||
<!--
|
<!--
|
||||||
Link issues and relevant forum posts here.
|
Link issues and relevant forum posts here.
|
||||||
|
|
||||||
If this PR resolves an issue on GitHub, use "Closes #1234" so that the issue
|
If this PR resolves an issue on GitHub, use "closes #1234" so that the issue is
|
||||||
is closed automatically when this PR is merged.
|
closed automatically when this PR is merged.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
Checklist
|
Checklist
|
||||||
|
|||||||
@@ -1,258 +0,0 @@
|
|||||||
name: test
|
|
||||||
on:
|
|
||||||
# run tests on push to master, but not when other branches are pushed to
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- master
|
|
||||||
|
|
||||||
# run tests for all pull requests
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
test:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
# list of jobs to run:
|
|
||||||
include:
|
|
||||||
- job_name: Windows
|
|
||||||
go: 1.15.x
|
|
||||||
os: windows-latest
|
|
||||||
|
|
||||||
- job_name: macOS
|
|
||||||
go: 1.15.x
|
|
||||||
os: macOS-latest
|
|
||||||
test_fuse: false
|
|
||||||
|
|
||||||
- job_name: Linux
|
|
||||||
go: 1.15.x
|
|
||||||
os: ubuntu-latest
|
|
||||||
test_cloud_backends: true
|
|
||||||
test_fuse: true
|
|
||||||
check_changelog: true
|
|
||||||
|
|
||||||
- job_name: Linux
|
|
||||||
go: 1.14.x
|
|
||||||
os: ubuntu-latest
|
|
||||||
test_fuse: true
|
|
||||||
|
|
||||||
- job_name: Linux
|
|
||||||
go: 1.13.x
|
|
||||||
os: ubuntu-latest
|
|
||||||
test_fuse: true
|
|
||||||
|
|
||||||
name: ${{ matrix.job_name }} Go ${{ matrix.go }}
|
|
||||||
runs-on: ${{ matrix.os }}
|
|
||||||
|
|
||||||
env:
|
|
||||||
GOPROXY: https://proxy.golang.org
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Set up Go ${{ matrix.go }}
|
|
||||||
uses: actions/setup-go@v2
|
|
||||||
with:
|
|
||||||
go-version: ${{ matrix.go }}
|
|
||||||
|
|
||||||
- name: Get programs (Linux/macOS)
|
|
||||||
run: |
|
|
||||||
echo "build Go tools"
|
|
||||||
go get github.com/restic/rest-server/...
|
|
||||||
|
|
||||||
echo "install minio server"
|
|
||||||
mkdir $HOME/bin
|
|
||||||
if [ "$RUNNER_OS" == "macOS" ]; then
|
|
||||||
wget --no-verbose -O $HOME/bin/minio https://dl.minio.io/server/minio/release/darwin-amd64/minio
|
|
||||||
else
|
|
||||||
wget --no-verbose -O $HOME/bin/minio https://dl.minio.io/server/minio/release/linux-amd64/minio
|
|
||||||
fi
|
|
||||||
chmod 755 $HOME/bin/minio
|
|
||||||
|
|
||||||
echo "install rclone"
|
|
||||||
if [ "$RUNNER_OS" == "macOS" ]; then
|
|
||||||
wget --no-verbose -O rclone.zip https://downloads.rclone.org/rclone-current-osx-amd64.zip
|
|
||||||
else
|
|
||||||
wget --no-verbose -O rclone.zip https://downloads.rclone.org/rclone-current-linux-amd64.zip
|
|
||||||
fi
|
|
||||||
unzip rclone.zip
|
|
||||||
cp rclone*/rclone $HOME/bin
|
|
||||||
chmod 755 $HOME/bin/rclone
|
|
||||||
rm -rf rclone*
|
|
||||||
|
|
||||||
# add $HOME/bin to path ($GOBIN was already added to the path by setup-go@v2)
|
|
||||||
echo $HOME/bin >> $GITHUB_PATH
|
|
||||||
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macOS-latest'
|
|
||||||
|
|
||||||
- name: Get programs (Windows)
|
|
||||||
shell: powershell
|
|
||||||
run: |
|
|
||||||
$ProgressPreference = 'SilentlyContinue'
|
|
||||||
|
|
||||||
echo "build Go tools"
|
|
||||||
go get github.com/restic/rest-server/...
|
|
||||||
|
|
||||||
echo "install minio server"
|
|
||||||
mkdir $Env:USERPROFILE/bin
|
|
||||||
Invoke-WebRequest https://dl.minio.io/server/minio/release/windows-amd64/minio.exe -OutFile $Env:USERPROFILE/bin/minio.exe
|
|
||||||
|
|
||||||
echo "install rclone"
|
|
||||||
Invoke-WebRequest https://downloads.rclone.org/rclone-current-windows-amd64.zip -OutFile rclone.zip
|
|
||||||
|
|
||||||
unzip rclone.zip
|
|
||||||
copy rclone*/rclone.exe $Env:USERPROFILE/bin
|
|
||||||
|
|
||||||
# add $USERPROFILE/bin to path ($GOBIN was already added to the path by setup-go@v2)
|
|
||||||
echo $Env:USERPROFILE\bin >> $Env:GITHUB_PATH
|
|
||||||
|
|
||||||
echo "install tar"
|
|
||||||
cd $env:USERPROFILE
|
|
||||||
mkdir tar
|
|
||||||
cd tar
|
|
||||||
|
|
||||||
# install exactly these versions of tar and the libraries, other combinations might not work!
|
|
||||||
|
|
||||||
Invoke-WebRequest https://github.com/restic/test-assets/raw/master/tar-1.13-1-bin.zip -OutFile tar.zip
|
|
||||||
unzip tar.zip
|
|
||||||
Invoke-WebRequest https://github.com/restic/test-assets/raw/master/libintl-0.11.5-2-bin.zip -OutFile libintl.zip
|
|
||||||
unzip libintl.zip
|
|
||||||
Invoke-WebRequest https://github.com/restic/test-assets/raw/master/libiconv-1.8-1-bin.zip -OutFile libiconv.zip
|
|
||||||
unzip libiconv.zip
|
|
||||||
|
|
||||||
# add $USERPROFILE/tar/bin to path
|
|
||||||
echo $Env:USERPROFILE\tar\bin >> $Env:GITHUB_PATH
|
|
||||||
if: matrix.os == 'windows-latest'
|
|
||||||
|
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Build with build.go
|
|
||||||
run: |
|
|
||||||
go run build.go
|
|
||||||
|
|
||||||
- name: Run local Tests
|
|
||||||
env:
|
|
||||||
RESTIC_TEST_FUSE: ${{ matrix.test_fuse }}
|
|
||||||
run: |
|
|
||||||
go test -cover ./...
|
|
||||||
|
|
||||||
- name: Test cloud backends
|
|
||||||
env:
|
|
||||||
RESTIC_TEST_S3_KEY: ${{ secrets.RESTIC_TEST_S3_KEY }}
|
|
||||||
RESTIC_TEST_S3_SECRET: ${{ secrets.RESTIC_TEST_S3_SECRET }}
|
|
||||||
RESTIC_TEST_S3_REPOSITORY: ${{ secrets.RESTIC_TEST_S3_REPOSITORY }}
|
|
||||||
RESTIC_TEST_AZURE_ACCOUNT_NAME: ${{ secrets.RESTIC_TEST_AZURE_ACCOUNT_NAME }}
|
|
||||||
RESTIC_TEST_AZURE_ACCOUNT_KEY: ${{ secrets.RESTIC_TEST_AZURE_ACCOUNT_KEY }}
|
|
||||||
RESTIC_TEST_AZURE_REPOSITORY: ${{ secrets.RESTIC_TEST_AZURE_REPOSITORY }}
|
|
||||||
RESTIC_TEST_B2_ACCOUNT_ID: ${{ secrets.RESTIC_TEST_B2_ACCOUNT_ID }}
|
|
||||||
RESTIC_TEST_B2_ACCOUNT_KEY: ${{ secrets.RESTIC_TEST_B2_ACCOUNT_KEY }}
|
|
||||||
RESTIC_TEST_B2_REPOSITORY: ${{ secrets.RESTIC_TEST_B2_REPOSITORY }}
|
|
||||||
RESTIC_TEST_GS_REPOSITORY: ${{ secrets.RESTIC_TEST_GS_REPOSITORY }}
|
|
||||||
RESTIC_TEST_GS_PROJECT_ID: ${{ secrets.RESTIC_TEST_GS_PROJECT_ID }}
|
|
||||||
GOOGLE_PROJECT_ID: ${{ secrets.RESTIC_TEST_GS_PROJECT_ID }}
|
|
||||||
RESTIC_TEST_GS_APPLICATION_CREDENTIALS_B64: ${{ secrets.RESTIC_TEST_GS_APPLICATION_CREDENTIALS_B64 }}
|
|
||||||
RESTIC_TEST_OS_AUTH_URL: ${{ secrets.RESTIC_TEST_OS_AUTH_URL }}
|
|
||||||
RESTIC_TEST_OS_TENANT_NAME: ${{ secrets.RESTIC_TEST_OS_TENANT_NAME }}
|
|
||||||
RESTIC_TEST_OS_USERNAME: ${{ secrets.RESTIC_TEST_OS_USERNAME }}
|
|
||||||
RESTIC_TEST_OS_PASSWORD: ${{ secrets.RESTIC_TEST_OS_PASSWORD }}
|
|
||||||
RESTIC_TEST_OS_REGION_NAME: ${{ secrets.RESTIC_TEST_OS_REGION_NAME }}
|
|
||||||
RESTIC_TEST_SWIFT: ${{ secrets.RESTIC_TEST_SWIFT }}
|
|
||||||
# fail if any of the following tests cannot be run
|
|
||||||
RESTIC_TEST_DISALLOW_SKIP: "restic/backend/rest.TestBackendREST,\
|
|
||||||
restic/backend/sftp.TestBackendSFTP,\
|
|
||||||
restic/backend/s3.TestBackendMinio,\
|
|
||||||
restic/backend/rclone.TestBackendRclone,\
|
|
||||||
restic/backend/s3.TestBackendS3,\
|
|
||||||
restic/backend/swift.TestBackendSwift,\
|
|
||||||
restic/backend/b2.TestBackendB2,\
|
|
||||||
restic/backend/gs.TestBackendGS,\
|
|
||||||
restic/backend/azure.TestBackendAzure"
|
|
||||||
run: |
|
|
||||||
# prepare credentials for Google Cloud Storage tests in a temp file
|
|
||||||
export GOOGLE_APPLICATION_CREDENTIALS=$(mktemp --tmpdir restic-gcs-auth-XXXXXXX)
|
|
||||||
echo $RESTIC_TEST_GS_APPLICATION_CREDENTIALS_B64 | base64 -d > $GOOGLE_APPLICATION_CREDENTIALS
|
|
||||||
go test -cover -parallel 4 ./internal/backend/...
|
|
||||||
|
|
||||||
# only run cloud backend tests for pull requests from and pushes to our
|
|
||||||
# own repo, otherwise the secrets are not available
|
|
||||||
if: (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) && matrix.test_cloud_backends
|
|
||||||
|
|
||||||
- name: Check changelog files with calens
|
|
||||||
run: |
|
|
||||||
echo "install calens"
|
|
||||||
go get github.com/restic/calens
|
|
||||||
|
|
||||||
echo "check changelog files"
|
|
||||||
calens
|
|
||||||
if: matrix.check_changelog
|
|
||||||
|
|
||||||
cross_compile:
|
|
||||||
strategy:
|
|
||||||
|
|
||||||
# ATTENTION: the list of architectures must be in sync with helpers/build-release-binaries/main.go!
|
|
||||||
matrix:
|
|
||||||
# run cross-compile in two batches parallel so the overall tests run faster
|
|
||||||
targets:
|
|
||||||
- "linux/386 linux/amd64 linux/arm linux/arm64 linux/ppc64le linux/mips linux/mipsle linux/mips64 linux/mips64le \
|
|
||||||
openbsd/386 openbsd/amd64"
|
|
||||||
|
|
||||||
- "freebsd/386 freebsd/amd64 freebsd/arm \
|
|
||||||
aix/ppc64 \
|
|
||||||
darwin/amd64 \
|
|
||||||
netbsd/386 netbsd/amd64 \
|
|
||||||
windows/386 windows/amd64 \
|
|
||||||
solaris/amd64"
|
|
||||||
|
|
||||||
env:
|
|
||||||
go: 1.15.x
|
|
||||||
GOPROXY: https://proxy.golang.org
|
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
name: Cross Compile for ${{ matrix.targets }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Set up Go ${{ env.go }}
|
|
||||||
uses: actions/setup-go@v2
|
|
||||||
with:
|
|
||||||
go-version: ${{ env.go }}
|
|
||||||
|
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Install gox
|
|
||||||
run: |
|
|
||||||
go get github.com/mitchellh/gox
|
|
||||||
|
|
||||||
- name: Cross-compile with gox for ${{ matrix.targets }}
|
|
||||||
env:
|
|
||||||
GOFLAGS: "-trimpath"
|
|
||||||
GOX_ARCHS: "${{ matrix.targets }}"
|
|
||||||
run: |
|
|
||||||
mkdir build-output
|
|
||||||
gox -parallel 2 -verbose -osarch "$GOX_ARCHS" -output "build-output/{{.Dir}}_{{.OS}}_{{.Arch}}" ./cmd/restic
|
|
||||||
gox -parallel 2 -verbose -osarch "$GOX_ARCHS" -tags debug -output "build-output/{{.Dir}}_{{.OS}}_{{.Arch}}_debug" ./cmd/restic
|
|
||||||
|
|
||||||
lint:
|
|
||||||
name: lint
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check out code
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: golangci-lint
|
|
||||||
uses: golangci/golangci-lint-action@v2
|
|
||||||
with:
|
|
||||||
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
|
|
||||||
version: v1.36
|
|
||||||
# Optional: show only new issues if it's a pull request. The default value is `false`.
|
|
||||||
only-new-issues: true
|
|
||||||
args: --verbose --timeout 5m
|
|
||||||
|
|
||||||
# only run golangci-lint for pull requests, otherwise ALL hints get
|
|
||||||
# reported. We need to slowly address all issues until we can enable
|
|
||||||
# linting the master branch :)
|
|
||||||
if: github.event_name == 'pull_request'
|
|
||||||
|
|
||||||
- name: Check go.mod/go.sum
|
|
||||||
run: |
|
|
||||||
echo "check if go.mod and go.sum are up to date"
|
|
||||||
go mod tidy
|
|
||||||
git diff --exit-code go.mod go.sum
|
|
||||||
@@ -1,3 +1,2 @@
|
|||||||
/restic
|
/restic
|
||||||
/.vagrant
|
/.vagrant
|
||||||
/.vscode
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
# This is the configuration for golangci-lint for the restic project.
|
|
||||||
#
|
|
||||||
# A sample config with all settings is here:
|
|
||||||
# https://github.com/golangci/golangci-lint/blob/master/.golangci.example.yml
|
|
||||||
|
|
||||||
linters:
|
|
||||||
# only enable the linters listed below
|
|
||||||
disable-all: true
|
|
||||||
enable:
|
|
||||||
# make sure all errors returned by functions are handled
|
|
||||||
- errcheck
|
|
||||||
|
|
||||||
# find unused code
|
|
||||||
- deadcode
|
|
||||||
|
|
||||||
# show how code can be simplified
|
|
||||||
- gosimple
|
|
||||||
|
|
||||||
# # make sure code is formatted
|
|
||||||
- gofmt
|
|
||||||
|
|
||||||
# examine code and report suspicious constructs, such as Printf calls whose
|
|
||||||
# arguments do not align with the format string
|
|
||||||
- govet
|
|
||||||
|
|
||||||
# make sure names and comments are used according to the conventions
|
|
||||||
- golint
|
|
||||||
|
|
||||||
# detect when assignments to existing variables are not used
|
|
||||||
- ineffassign
|
|
||||||
|
|
||||||
# run static analysis and find errors
|
|
||||||
- staticcheck
|
|
||||||
|
|
||||||
# find unused variables, functions, structs, types, etc.
|
|
||||||
- unused
|
|
||||||
|
|
||||||
# find unused struct fields
|
|
||||||
- structcheck
|
|
||||||
|
|
||||||
# find unused global variables
|
|
||||||
- varcheck
|
|
||||||
|
|
||||||
# parse and typecheck code
|
|
||||||
- typecheck
|
|
||||||
|
|
||||||
issues:
|
|
||||||
# don't use the default exclude rules, this hides (among others) ignored
|
|
||||||
# errors from Close() calls
|
|
||||||
exclude-use-default: false
|
|
||||||
|
|
||||||
# list of things to not warn about
|
|
||||||
exclude:
|
|
||||||
# golint: do not warn about missing comments for exported stuff
|
|
||||||
- exported (function|method|var|type|const) `.*` should have comment or be unexported
|
|
||||||
# golint: ignore constants in all caps
|
|
||||||
- don't use ALL_CAPS in Go names; use CamelCase
|
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
go:
|
||||||
|
enabled: true
|
||||||
+66
@@ -0,0 +1,66 @@
|
|||||||
|
language: go
|
||||||
|
sudo: false
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- os: linux
|
||||||
|
go: "1.11.x"
|
||||||
|
env: RESTIC_TEST_FUSE=0 RESTIC_TEST_CLOUD_BACKENDS=0
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/.cache/go-build
|
||||||
|
- $HOME/gopath/pkg/mod
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
go: "1.12.x"
|
||||||
|
env: RESTIC_TEST_FUSE=0 RESTIC_TEST_CLOUD_BACKENDS=0
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/.cache/go-build
|
||||||
|
- $HOME/gopath/pkg/mod
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
go: "1.13.x"
|
||||||
|
env: RESTIC_TEST_FUSE=0 RESTIC_TEST_CLOUD_BACKENDS=0
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/.cache/go-build
|
||||||
|
- $HOME/gopath/pkg/mod
|
||||||
|
|
||||||
|
# only run fuse and cloud backends tests on Travis for the latest Go on Linux
|
||||||
|
- os: linux
|
||||||
|
go: "1.14.x"
|
||||||
|
sudo: true
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/.cache/go-build
|
||||||
|
- $HOME/gopath/pkg/mod
|
||||||
|
|
||||||
|
- os: osx
|
||||||
|
go: "1.14.x"
|
||||||
|
env: RESTIC_TEST_FUSE=0 RESTIC_TEST_CLOUD_BACKENDS=0
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/Library/Caches/go-build
|
||||||
|
- $HOME/gopath/pkg/mod
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
irc:
|
||||||
|
channels:
|
||||||
|
- "chat.freenode.net#restic"
|
||||||
|
on_success: change
|
||||||
|
on_failure: change
|
||||||
|
skip_join: true
|
||||||
|
|
||||||
|
install:
|
||||||
|
- go version
|
||||||
|
- export GOBIN="$GOPATH/bin"
|
||||||
|
- export PATH="$PATH:$GOBIN"
|
||||||
|
- go env
|
||||||
|
|
||||||
|
script:
|
||||||
|
- go run run_integration_tests.go
|
||||||
+4
-1140
File diff suppressed because it is too large.
Load diff
+56
-33
@@ -16,8 +16,7 @@ help also.
|
|||||||
|
|
||||||
The restic project uses the GitHub infrastructure (see the
|
The restic project uses the GitHub infrastructure (see the
|
||||||
[project page](https://github.com/restic/restic)) for all related discussions
|
[project page](https://github.com/restic/restic)) for all related discussions
|
||||||
as well as the [forum](https://forum.restic.net/) and the `#restic` channel
|
as well as the `#restic` channel on `irc.freenode.net`.
|
||||||
on [irc.freenode.net](https://kiwiirc.com/nextclient/irc.freenode.net/restic).
|
|
||||||
|
|
||||||
If you want to find an area that currently needs improving have a look at the
|
If you want to find an area that currently needs improving have a look at the
|
||||||
open issues listed at the
|
open issues listed at the
|
||||||
@@ -26,10 +25,7 @@ for discussing enhancement to the restic tools.
|
|||||||
|
|
||||||
If you are unsure what to do, please have a look at the issues, especially
|
If you are unsure what to do, please have a look at the issues, especially
|
||||||
those tagged
|
those tagged
|
||||||
[minor complexity](https://github.com/restic/restic/labels/help%3A%20minor%20complexity)
|
[minor complexity](https://github.com/restic/restic/labels/minor%20complexity).
|
||||||
or [good first issue](https://github.com/restic/restic/labels/help%3A%20good%20first%20issue).
|
|
||||||
If you are already a bit experienced with the restic internals, take a look
|
|
||||||
at the issues tagged as [help wanted](https://github.com/restic/restic/labels/help%3A%20wanted).
|
|
||||||
|
|
||||||
|
|
||||||
Reporting Bugs
|
Reporting Bugs
|
||||||
@@ -64,11 +60,16 @@ uploading it somewhere or post only the parts that are really relevant.
|
|||||||
Development Environment
|
Development Environment
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
The repository contains the code written for restic in the directories
|
The repository contains several sets of directories with code: `cmd/` and
|
||||||
`cmd/` and `internal/`.
|
`internal/` contain the code written for restic, whereas `vendor/` contains
|
||||||
|
copies of libraries restic depends on. The libraries are managed with the
|
||||||
|
command `go mod vendor`.
|
||||||
|
|
||||||
Restic requires Go version 1.13 or later for compiling. Clone the repo (without
|
Go >= 1.11
|
||||||
having `$GOPATH` set) and `cd` into the directory:
|
----------
|
||||||
|
|
||||||
|
For Go version 1.11 or later, you should clone the repo (without having
|
||||||
|
`$GOPATH` set) and `cd` into the directory:
|
||||||
|
|
||||||
$ unset GOPATH
|
$ unset GOPATH
|
||||||
$ git clone https://github.com/restic/restic
|
$ git clone https://github.com/restic/restic
|
||||||
@@ -78,12 +79,40 @@ Then use the `go` tool to build restic:
|
|||||||
|
|
||||||
$ go build ./cmd/restic
|
$ go build ./cmd/restic
|
||||||
$ ./restic version
|
$ ./restic version
|
||||||
restic 0.10.0-dev (compiled manually) compiled with go1.15.2 on linux/amd64
|
restic 0.9.2-dev (compiled manually) compiled with go1.11 on linux/amd64
|
||||||
|
|
||||||
You can run all tests with the following command:
|
You can run all tests with the following command:
|
||||||
|
|
||||||
$ go test ./...
|
$ go test ./...
|
||||||
|
|
||||||
|
Go < 1.11
|
||||||
|
---------
|
||||||
|
|
||||||
|
In order to compile restic with Go before 1.11, it needs to be checked out at
|
||||||
|
the right path within a `GOPATH`. The concept of a `GOPATH` is explained in
|
||||||
|
["How to write Go code"](https://golang.org/doc/code.html).
|
||||||
|
|
||||||
|
If you do not have a directory with Go code yet, executing the following
|
||||||
|
instructions in your shell will create one for you and check out the restic
|
||||||
|
repo:
|
||||||
|
|
||||||
|
$ export GOPATH="$HOME/go"
|
||||||
|
$ mkdir -p "$GOPATH/src/github.com/restic"
|
||||||
|
$ cd "$GOPATH/src/github.com/restic"
|
||||||
|
$ git clone https://github.com/restic/restic
|
||||||
|
$ cd restic
|
||||||
|
|
||||||
|
You can then build restic as follows:
|
||||||
|
|
||||||
|
$ go build ./cmd/restic
|
||||||
|
$ ./restic version
|
||||||
|
restic compiled manually
|
||||||
|
compiled with go1.8.3 on linux/amd64
|
||||||
|
|
||||||
|
The following commands can be used to run all the tests:
|
||||||
|
|
||||||
|
$ go test ./...
|
||||||
|
|
||||||
Providing Patches
|
Providing Patches
|
||||||
=================
|
=================
|
||||||
|
|
||||||
@@ -96,14 +125,15 @@ down to the following steps:
|
|||||||
GitHub. For a new feature, please add an issue before starting to work on
|
GitHub. For a new feature, please add an issue before starting to work on
|
||||||
it, so that duplicate work is prevented.
|
it, so that duplicate work is prevented.
|
||||||
|
|
||||||
1. Next, fork our project on GitHub if you haven't done so already.
|
1. First we would kindly ask you to fork our project on GitHub if you haven't
|
||||||
|
done so already.
|
||||||
|
|
||||||
2. Clone your fork of the repository locally and **create a new branch** for
|
2. Clone the repository locally and create a new branch. If you are working on
|
||||||
your changes. If you are working on the code itself, please set up the
|
the code itself, please set up the development environment as described in
|
||||||
development environment as described in the previous section.
|
the previous section.
|
||||||
|
|
||||||
3. Commit your changes to the new branch as fine grained as possible, as
|
3. Then commit your changes as fine grained as possible, as smaller patches,
|
||||||
smaller patches, for individual changes, are easier to discuss and merge.
|
that handle one and only one issue are easier to discuss and merge.
|
||||||
|
|
||||||
4. Push the new branch with your changes to your fork of the repository.
|
4. Push the new branch with your changes to your fork of the repository.
|
||||||
|
|
||||||
@@ -116,19 +146,20 @@ down to the following steps:
|
|||||||
existing commit, use common sense to decide which is better), they will be
|
existing commit, use common sense to decide which is better), they will be
|
||||||
automatically added to the pull request.
|
automatically added to the pull request.
|
||||||
|
|
||||||
7. If your pull request changes anything that users should be aware of
|
7. If your pull request changes anything that users should be aware
|
||||||
(a bugfix, a new feature, ...) please add an entry as a new file in
|
of (a bugfix, a new feature, ...) please add an entry as a new
|
||||||
`changelog/unreleased` including the issue number in the filename (e.g.
|
file in `changelog/unreleased` including the issue number in the
|
||||||
`issue-8756`). Use the template in `changelog/TEMPLATE` for the content.
|
filename (e.g. `issue-8756`). Use the template in
|
||||||
It will be used in the announcement of the next stable release. While
|
`changelog/TEMPLATE` for the content. It will be used in the
|
||||||
writing, ask yourself: If I were the user, what would I need to be aware
|
announcement of the next stable release. While writing, ask
|
||||||
of with this change?
|
yourself: If I were the user, what would I need to be aware of
|
||||||
|
with this change.
|
||||||
|
|
||||||
8. Once your code looks good and passes all the tests, we'll merge it. Thanks
|
8. Once your code looks good and passes all the tests, we'll merge it. Thanks
|
||||||
a lot for your contribution!
|
a lot for your contribution!
|
||||||
|
|
||||||
Please provide the patches for each bug or feature in a separate branch and
|
Please provide the patches for each bug or feature in a separate branch and
|
||||||
open up a pull request for each, as this simplifies discussion and merging.
|
open up a pull request for each.
|
||||||
|
|
||||||
The restic project uses the `gofmt` tool for Go source indentation, so please
|
The restic project uses the `gofmt` tool for Go source indentation, so please
|
||||||
run
|
run
|
||||||
@@ -141,14 +172,6 @@ Installing the script `fmt-check` from https://github.com/edsrzf/gofmt-git-hook
|
|||||||
locally as a pre-commit hook checks formatting before committing automatically,
|
locally as a pre-commit hook checks formatting before committing automatically,
|
||||||
just copy this script to `.git/hooks/pre-commit`.
|
just copy this script to `.git/hooks/pre-commit`.
|
||||||
|
|
||||||
The project is using the program
|
|
||||||
[`golangci-lint`](https://github.com/golangci/golangci-lint) to run a list of
|
|
||||||
linters and checkers. It will be run on the code when you submit a PR. In order
|
|
||||||
to check your code beforehand, you can run `golangci-lint run` manually.
|
|
||||||
Eventually, we will enable `golangci-lint` for the whole code base. For now,
|
|
||||||
you can ignore warnings printed for lines you did not modify, those will be
|
|
||||||
ignored by the CI.
|
|
||||||
|
|
||||||
For each pull request, several different systems run the integration tests on
|
For each pull request, several different systems run the integration tests on
|
||||||
Linux, macOS and Windows. We won't merge any code that does not pass all tests
|
Linux, macOS and Windows. We won't merge any code that does not pass all tests
|
||||||
for all systems, so when a tests fails, try to find out what's wrong and fix
|
for all systems, so when a tests fails, try to find out what's wrong and fix
|
||||||
|
|||||||
@@ -1,113 +0,0 @@
|
|||||||
[](https://restic.readthedocs.io/en/latest/?badge=latest)
|
|
||||||
[](https://github.com/restic/restic/actions?query=workflow%3Atest)
|
|
||||||
[](https://goreportcard.com/report/github.com/restic/restic)
|
|
||||||
|
|
||||||
# Introduction
|
|
||||||
|
|
||||||
restic is a backup program that is fast, efficient and secure. It supports the three major operating systems (Linux, macOS, Windows) and a few smaller ones (FreeBSD, OpenBSD).
|
|
||||||
|
|
||||||
For detailed usage and installation instructions check out the [documentation](https://restic.readthedocs.io/en/latest).
|
|
||||||
|
|
||||||
You can ask questions in our [Discourse forum](https://forum.restic.net).
|
|
||||||
|
|
||||||
Quick start
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Once you've [installed](https://restic.readthedocs.io/en/latest/020_installation.html) restic, start
|
|
||||||
off with creating a repository for your backups:
|
|
||||||
|
|
||||||
$ restic init --repo /tmp/backup
|
|
||||||
enter password for new backend:
|
|
||||||
enter password again:
|
|
||||||
created restic backend 085b3c76b9 at /tmp/backup
|
|
||||||
Please note that knowledge of your password is required to access the repository.
|
|
||||||
Losing your password means that your data is irrecoverably lost.
|
|
||||||
|
|
||||||
and add some data:
|
|
||||||
|
|
||||||
$ restic --repo /tmp/backup backup ~/work
|
|
||||||
enter password for repository:
|
|
||||||
scan [/home/user/work]
|
|
||||||
scanned 764 directories, 1816 files in 0:00
|
|
||||||
[0:29] 100.00% 54.732 MiB/s 1.582 GiB / 1.582 GiB 2580 / 2580 items 0 errors ETA 0:00
|
|
||||||
duration: 0:29, 54.47MiB/s
|
|
||||||
snapshot 40dc1520 saved
|
|
||||||
|
|
||||||
Next you can either use `restic restore` to restore files or use `restic
|
|
||||||
mount` to mount the repository via fuse and browse the files from previous
|
|
||||||
snapshots.
|
|
||||||
|
|
||||||
For more options check out the [online documentation](https://restic.readthedocs.io/en/latest/).
|
|
||||||
|
|
||||||
# Backends
|
|
||||||
|
|
||||||
Saving a backup on the same machine is nice but not a real backup strategy.
|
|
||||||
Therefore, restic supports the following backends for storing backups natively:
|
|
||||||
|
|
||||||
- [Local directory](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#local)
|
|
||||||
- [sftp server (via SSH)](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#sftp)
|
|
||||||
- [HTTP REST server](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#rest-server) ([protocol](doc/100_references.rst#rest-backend), [rest-server](https://github.com/restic/rest-server))
|
|
||||||
- [AWS S3](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#amazon-s3) (either from Amazon or using the [Minio](https://minio.io) server)
|
|
||||||
- [OpenStack Swift](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#openstack-swift)
|
|
||||||
- [BackBlaze B2](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#backblaze-b2)
|
|
||||||
- [Microsoft Azure Blob Storage](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#microsoft-azure-blob-storage)
|
|
||||||
- [Google Cloud Storage](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#google-cloud-storage)
|
|
||||||
- And many other services via the [rclone](https://rclone.org) [Backend](https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#other-services-via-rclone)
|
|
||||||
|
|
||||||
# Design Principles
|
|
||||||
|
|
||||||
Restic is a program that does backups right and was designed with the
|
|
||||||
following principles in mind:
|
|
||||||
|
|
||||||
- **Easy:** Doing backups should be a frictionless process, otherwise
|
|
||||||
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
|
|
||||||
it. Likewise, restoring data should not be complicated.
|
|
||||||
|
|
||||||
- **Fast**: Backing up your data with restic should only be limited by
|
|
||||||
your network or hard disk bandwidth so that you can backup your files
|
|
||||||
every day. Nobody does backups if it takes too much time. Restoring
|
|
||||||
backups should only transfer data that is needed for the files that
|
|
||||||
are to be restored, so that this process is also fast.
|
|
||||||
|
|
||||||
- **Verifiable**: Much more important than backup is restore, so restic
|
|
||||||
enables you to easily verify that all data can be restored.
|
|
||||||
|
|
||||||
- **Secure**: Restic uses cryptography to guarantee confidentiality and
|
|
||||||
integrity of your data. The location the backup data is stored is
|
|
||||||
assumed not to be a trusted environment (e.g. a shared space where
|
|
||||||
others like system administrators are able to access your backups).
|
|
||||||
Restic is built to secure your data against such attackers.
|
|
||||||
|
|
||||||
- **Efficient**: With the growth of data, additional snapshots should
|
|
||||||
only take the storage of the actual increment. Even more, duplicate
|
|
||||||
data should be de-duplicated before it is actually written to the
|
|
||||||
storage back end to save precious backup space.
|
|
||||||
|
|
||||||
# Reproducible Builds
|
|
||||||
|
|
||||||
The binaries released with each restic version starting at 0.6.1 are
|
|
||||||
[reproducible](https://reproducible-builds.org/), which means that you can
|
|
||||||
reproduce a byte identical version from the source code for that
|
|
||||||
release. Instructions on how to do that are contained in the
|
|
||||||
[builder repository](https://github.com/restic/builder).
|
|
||||||
|
|
||||||
News
|
|
||||||
----
|
|
||||||
|
|
||||||
You can follow the restic project on Twitter [@resticbackup](https://twitter.com/resticbackup) or by subscribing to
|
|
||||||
the [project blog](https://restic.net/blog/).
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
Restic is licensed under [BSD 2-Clause License](https://opensource.org/licenses/BSD-2-Clause). You can find the
|
|
||||||
complete text in [``LICENSE``](LICENSE).
|
|
||||||
|
|
||||||
Sponsorship
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Backend integration tests for Google Cloud Storage and Microsoft Azure Blob
|
|
||||||
Storage are sponsored by [AppsCode](https://appscode.com)!
|
|
||||||
|
|
||||||
[](https://appscode.com)
|
|
||||||
+135
@@ -0,0 +1,135 @@
|
|||||||
|
|Documentation| |Build Status| |Build status| |Report Card| |Say Thanks| |Reviewed by Hound|
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
restic is a backup program that is fast, efficient and secure. It supports the three major operating systems (Linux, macOS, Windows) and a few smaller ones (FreeBSD, OpenBSD).
|
||||||
|
|
||||||
|
For detailed usage and installation instructions check out the `documentation <https://restic.readthedocs.io/en/latest>`__.
|
||||||
|
|
||||||
|
You can ask questions in our `Discourse forum <https://forum.restic.net>`__.
|
||||||
|
|
||||||
|
Quick start
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Once you've `installed
|
||||||
|
<https://restic.readthedocs.io/en/latest/020_installation.html>`__ restic, start
|
||||||
|
off with creating a repository for your backups:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ restic init --repo /tmp/backup
|
||||||
|
enter password for new backend:
|
||||||
|
enter password again:
|
||||||
|
created restic backend 085b3c76b9 at /tmp/backup
|
||||||
|
Please note that knowledge of your password is required to access the repository.
|
||||||
|
Losing your password means that your data is irrecoverably lost.
|
||||||
|
|
||||||
|
and add some data:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ restic --repo /tmp/backup backup ~/work
|
||||||
|
enter password for repository:
|
||||||
|
scan [/home/user/work]
|
||||||
|
scanned 764 directories, 1816 files in 0:00
|
||||||
|
[0:29] 100.00% 54.732 MiB/s 1.582 GiB / 1.582 GiB 2580 / 2580 items 0 errors ETA 0:00
|
||||||
|
duration: 0:29, 54.47MiB/s
|
||||||
|
snapshot 40dc1520 saved
|
||||||
|
|
||||||
|
Next you can either use ``restic restore`` to restore files or use ``restic
|
||||||
|
mount`` to mount the repository via fuse and browse the files from previous
|
||||||
|
snapshots.
|
||||||
|
|
||||||
|
For more options check out the `online documentation <https://restic.readthedocs.io/en/latest/>`__.
|
||||||
|
|
||||||
|
Backends
|
||||||
|
--------
|
||||||
|
|
||||||
|
Saving a backup on the same machine is nice but not a real backup strategy.
|
||||||
|
Therefore, restic supports the following backends for storing backups natively:
|
||||||
|
|
||||||
|
- `Local directory <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#local>`__
|
||||||
|
- `sftp server (via SSH) <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#sftp>`__
|
||||||
|
- `HTTP REST server <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#rest-server>`__ (`protocol <doc/100_references.rst#rest-backend>`__ `rest-server <https://github.com/restic/rest-server>`__)
|
||||||
|
- `AWS S3 <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#amazon-s3>`__ (either from Amazon or using the `Minio <https://minio.io>`__ server)
|
||||||
|
- `OpenStack Swift <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#openstack-swift>`__
|
||||||
|
- `BackBlaze B2 <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#backblaze-b2>`__
|
||||||
|
- `Microsoft Azure Blob Storage <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#microsoft-azure-blob-storage>`__
|
||||||
|
- `Google Cloud Storage <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#google-cloud-storage>`__
|
||||||
|
- And many other services via the `rclone <https://rclone.org>`__ `Backend <https://restic.readthedocs.io/en/latest/030_preparing_a_new_repo.html#other-services-via-rclone>`__
|
||||||
|
|
||||||
|
Design Principles
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Restic is a program that does backups right and was designed with the
|
||||||
|
following principles in mind:
|
||||||
|
|
||||||
|
- **Easy:** Doing backups should be a frictionless process, otherwise
|
||||||
|
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
|
||||||
|
it. Likewise, restoring data should not be complicated.
|
||||||
|
|
||||||
|
- **Fast**: Backing up your data with restic should only be limited by
|
||||||
|
your network or hard disk bandwidth so that you can backup your files
|
||||||
|
every day. Nobody does backups if it takes too much time. Restoring
|
||||||
|
backups should only transfer data that is needed for the files that
|
||||||
|
are to be restored, so that this process is also fast.
|
||||||
|
|
||||||
|
- **Verifiable**: Much more important than backup is restore, so restic
|
||||||
|
enables you to easily verify that all data can be restored.
|
||||||
|
|
||||||
|
- **Secure**: Restic uses cryptography to guarantee confidentiality and
|
||||||
|
integrity of your data. The location the backup data is stored is
|
||||||
|
assumed not to be a trusted environment (e.g. a shared space where
|
||||||
|
others like system administrators are able to access your backups).
|
||||||
|
Restic is built to secure your data against such attackers.
|
||||||
|
|
||||||
|
- **Efficient**: With the growth of data, additional snapshots should
|
||||||
|
only take the storage of the actual increment. Even more, duplicate
|
||||||
|
data should be de-duplicated before it is actually written to the
|
||||||
|
storage back end to save precious backup space.
|
||||||
|
|
||||||
|
Reproducible Builds
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
The binaries released with each restic version starting at 0.6.1 are
|
||||||
|
`reproducible <https://reproducible-builds.org/>`__, 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 <https://github.com/restic/builder>`__.
|
||||||
|
|
||||||
|
News
|
||||||
|
----
|
||||||
|
|
||||||
|
You can follow the restic project on Twitter `@resticbackup <https://twitter.com/resticbackup>`__ or by subscribing to
|
||||||
|
the `development blog <https://restic.net/blog/>`__.
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
Restic is licensed under `BSD 2-Clause License <https://opensource.org/licenses/BSD-2-Clause>`__. You can find the
|
||||||
|
complete text in ``LICENSE``.
|
||||||
|
|
||||||
|
Sponsorship
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Backend integration tests for Google Cloud Storage and Microsoft Azure Blob
|
||||||
|
Storage are sponsored by `AppsCode <https://appscode.com>`__!
|
||||||
|
|
||||||
|
|AppsCode|
|
||||||
|
|
||||||
|
.. |Documentation| image:: https://readthedocs.org/projects/restic/badge/?version=latest
|
||||||
|
:target: https://restic.readthedocs.io/en/latest/?badge=latest
|
||||||
|
.. |Build Status| image:: https://travis-ci.com/restic/restic.svg?branch=master
|
||||||
|
:target: https://travis-ci.com/restic/restic
|
||||||
|
.. |Build status| image:: https://ci.appveyor.com/api/projects/status/nuy4lfbgfbytw92q/branch/master?svg=true
|
||||||
|
:target: https://ci.appveyor.com/project/fd0/restic/branch/master
|
||||||
|
.. |Report Card| image:: https://goreportcard.com/badge/github.com/restic/restic
|
||||||
|
:target: https://goreportcard.com/report/github.com/restic/restic
|
||||||
|
.. |Say Thanks| image:: https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg
|
||||||
|
:target: https://saythanks.io/to/restic
|
||||||
|
.. |AppsCode| image:: https://cdn.appscode.com/images/logo/appscode/ac-logo-color.png
|
||||||
|
:target: https://appscode.com
|
||||||
|
.. |Reviewed by Hound| image:: https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg
|
||||||
|
:target: https://houndci.com
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
clone_folder: c:\restic
|
||||||
|
|
||||||
|
environment:
|
||||||
|
GOPATH: c:\gopath
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
|
||||||
|
cache:
|
||||||
|
- '%LocalAppData%\go-build'
|
||||||
|
|
||||||
|
init:
|
||||||
|
- ps: >-
|
||||||
|
$app = Get-WmiObject -Class Win32_Product -Filter "Vendor = 'http://golang.org'"
|
||||||
|
|
||||||
|
if ($app) {
|
||||||
|
$app.Uninstall()
|
||||||
|
}
|
||||||
|
|
||||||
|
install:
|
||||||
|
- rmdir c:\go /s /q
|
||||||
|
- appveyor DownloadFile https://dl.google.com/go/go1.14.windows-amd64.msi
|
||||||
|
- msiexec /i go1.14.windows-amd64.msi /q
|
||||||
|
- go version
|
||||||
|
- go env
|
||||||
|
- appveyor DownloadFile http://sourceforge.netcologne.de/project/gnuwin32/tar/1.13-1/tar-1.13-1-bin.zip -FileName tar.zip
|
||||||
|
- 7z x tar.zip bin/tar.exe
|
||||||
|
- set PATH=bin/;%PATH%
|
||||||
|
|
||||||
|
build_script:
|
||||||
|
- go run run_integration_tests.go
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
// This program aims to make building Go programs for end users easier by just
|
// This program aims to make building Go programs for end users easier by just
|
||||||
// calling it with `go run`, without having to setup a GOPATH.
|
// calling it with `go run`, without having to setup a GOPATH.
|
||||||
//
|
//
|
||||||
// This program needs Go >= 1.12. It'll use Go modules for compilation. It
|
// This program needs Go >= 1.11. It'll use Go modules for compilation. It
|
||||||
// builds the package configured as Main in the Config struct.
|
// builds the package configured as Main in the Config struct.
|
||||||
|
|
||||||
// BSD 2-Clause License
|
// BSD 2-Clause License
|
||||||
@@ -327,8 +327,8 @@ func (v GoVersion) String() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
if !goVersion.AtLeast(GoVersion{1, 12, 0}) {
|
if !goVersion.AtLeast(GoVersion{1, 11, 0}) {
|
||||||
die("Go version (%v) is too old, restic requires Go >= 1.12\n", goVersion)
|
die("Go version (%v) is too old, Go <= 1.11 does not support Go Modules\n", goVersion)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !goVersion.AtLeast(config.MinVersion) {
|
if !goVersion.AtLeast(config.MinVersion) {
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Optimize `restic mount`
|
|
||||||
|
|
||||||
We've optimized the FUSE implementation used within restic.
|
|
||||||
`restic mount` is now more responsive and uses less memory.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1680
|
|
||||||
https://github.com/restic/restic/pull/2587
|
|
||||||
https://github.com/restic/restic/pull/2787
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Bugfix: Report correct number of directories processed by backup
|
|
||||||
|
|
||||||
The directory statistics calculation was fixed to report the actual number
|
|
||||||
of processed directories instead of always zero.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1863
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Enhancement: Allow specifying user and host when creating keys
|
|
||||||
|
|
||||||
When adding a new key to the repository, the username and hostname for the new
|
|
||||||
key can be specified on the command line. This allows overriding the defaults,
|
|
||||||
for example if you would prefer to use the FQDN to identify the host or if you
|
|
||||||
want to add keys for several different hosts without having to run the key add
|
|
||||||
command on those hosts.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2175
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: Fix tar issues when dumping `/`
|
|
||||||
|
|
||||||
We've fixed an issue with dumping either `/` or files on the first sublevel
|
|
||||||
e.g. `/foo` to tar. This also fixes tar dumping issues on Windows where this
|
|
||||||
issue could also happen.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2254
|
|
||||||
https://github.com/restic/restic/issues/2357
|
|
||||||
https://github.com/restic/restic/pull/2255
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
Enhancement: Ignore sync errors when operation not supported by local filesystem
|
|
||||||
|
|
||||||
The local backend has been modified to work with filesystems which doesn't support
|
|
||||||
the `sync` operation. This operation is normally used by restic to ensure that data
|
|
||||||
files are fully written to disk before continuing.
|
|
||||||
|
|
||||||
For these limited filesystems, saving a file in the backend would previously fail with
|
|
||||||
an "operation not supported" error. This error is now ignored, which means that e.g.
|
|
||||||
an SMB mount on macOS can now be used as storage location for a repository.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2395
|
|
||||||
https://forum.restic.net/t/sync-errors-on-mac-over-smb/1859
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
Enhancement: Add flag `--iexclude-file` to backup command
|
|
||||||
|
|
||||||
The backup command now supports the flag `--iexclude-file` which is a
|
|
||||||
case-insensitive version of `--exclude-file`.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2427
|
|
||||||
https://github.com/restic/restic/pull/2898
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Support excluding files by their size
|
|
||||||
|
|
||||||
The `backup` command now supports the `--exclude-larger-than` option to exclude files which are
|
|
||||||
larger than the specified maximum size. This can for example be useful to exclude unimportant
|
|
||||||
files with a large file size.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2569
|
|
||||||
https://github.com/restic/restic/pull/2914
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
Enhancement: Self-heal missing file parts during backup of unchanged files
|
|
||||||
|
|
||||||
We've improved the resilience of restic to certain types of repository corruption.
|
|
||||||
|
|
||||||
For files that are unchanged since the parent snapshot, the backup command now
|
|
||||||
verifies that all parts of the files still exist in the repository. Parts that are
|
|
||||||
missing, e.g. from a damaged repository, are backed up again. This verification
|
|
||||||
was already run for files that were modified since the parent snapshot, but is
|
|
||||||
now also done for unchanged files.
|
|
||||||
|
|
||||||
Note that restic will not backup file parts that are referenced in the index but
|
|
||||||
where the actual data is not present on disk, as this situation can only be
|
|
||||||
detected by restic check. Please ensure that you run `restic check` regularly.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2571
|
|
||||||
https://github.com/restic/restic/pull/2827
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Enhancement: Support filtering snapshots by tag and path in the stats command
|
|
||||||
|
|
||||||
We've added filtering snapshots by `--tag tagList` and by `--path path` to
|
|
||||||
the `stats` command. This includes filtering of only 'latest' snapshots or
|
|
||||||
all snapshots in a repository.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2858
|
|
||||||
https://github.com/restic/restic/pull/2859
|
|
||||||
https://forum.restic.net/t/stats-for-a-host-and-filtered-snapshots/3020
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
Enhancement: Add command for copying snapshots between repositories
|
|
||||||
|
|
||||||
We've added a copy command, allowing you to copy snapshots from one
|
|
||||||
repository to another.
|
|
||||||
|
|
||||||
Note that this process will have to read (download) and write (upload) the
|
|
||||||
entire snapshot(s) due to the different encryption keys used on the source
|
|
||||||
and destination repository. Also, the transferred files are not re-chunked,
|
|
||||||
which may break deduplication between files already stored in the
|
|
||||||
destination repo and files copied there using this command.
|
|
||||||
|
|
||||||
To fully support deduplication between repositories when the copy command is
|
|
||||||
used, the init command now supports the `--copy-chunker-params` option,
|
|
||||||
which initializes the new repository with identical parameters for splitting
|
|
||||||
files into chunks as an already existing repository. This allows copied
|
|
||||||
snapshots to be equally deduplicated in both repositories.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/323
|
|
||||||
https://github.com/restic/restic/pull/2606
|
|
||||||
https://github.com/restic/restic/pull/2928
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Enhancement: Use optimized library for hash calculation of file chunks
|
|
||||||
|
|
||||||
We've switched the library used to calculate the hashes of file chunks, which
|
|
||||||
are used for deduplication, to the optimized Minio SHA-256 implementation.
|
|
||||||
|
|
||||||
Depending on the CPU it improves the hashing throughput by 10-30%. Modern x86
|
|
||||||
CPUs with the SHA Extension should be about two to three times faster.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/551
|
|
||||||
https://github.com/restic/restic/pull/2709
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Improve speed of check command
|
|
||||||
|
|
||||||
We've improved the check command to traverse trees only once independent of
|
|
||||||
whether they are contained in multiple snapshots. The check command is now much
|
|
||||||
faster for repositories with a large number of snapshots.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2328
|
|
||||||
https://github.com/restic/restic/issues/2284
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
Change: Return exit code 3 when failing to backup all source data
|
|
||||||
|
|
||||||
The backup command used to return a zero exit code as long as a snapshot
|
|
||||||
could be created successfully, even if some of the source files could not
|
|
||||||
be read (in which case the snapshot would contain the rest of the files).
|
|
||||||
|
|
||||||
This made it hard for automation/scripts to detect failures/incomplete
|
|
||||||
backups by looking at the exit code. Restic now returns the following exit
|
|
||||||
codes for the backup command:
|
|
||||||
|
|
||||||
- 0 when the command was successful
|
|
||||||
- 1 when there was a fatal error (no snapshot created)
|
|
||||||
- 3 when some source data could not be read (incomplete snapshot created)
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2546
|
|
||||||
https://github.com/restic/restic/issues/956
|
|
||||||
https://github.com/restic/restic/issues/2064
|
|
||||||
https://github.com/restic/restic/issues/2526
|
|
||||||
https://github.com/restic/restic/issues/2364
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Enhancement: Improve speed of diff command
|
|
||||||
|
|
||||||
We've improved the performance of the diff command when comparing snapshots
|
|
||||||
with similar content. It should run up to twice as fast as before.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2598
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Enhancement: Slightly reduce memory usage of prune and stats commands
|
|
||||||
|
|
||||||
The prune and the stats command kept directory identifiers in memory twice
|
|
||||||
while searching for used blobs.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2599
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
Change: Update dependencies, require Go >= 1.13
|
|
||||||
|
|
||||||
Restic now requires Go to be at least 1.13. This allows simplifications in the
|
|
||||||
build process and removing workarounds.
|
|
||||||
|
|
||||||
This is also probably the last version of restic still supporting mounting
|
|
||||||
repositories via fuse on macOS. The library we're using for fuse does not
|
|
||||||
support macOS any more and osxfuse is not open source any more.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2600
|
|
||||||
https://github.com/restic/restic/pull/2852
|
|
||||||
https://github.com/restic/restic/pull/2927
|
|
||||||
https://github.com/bazil/fuse/issues/224
|
|
||||||
https://github.com/osxfuse/osxfuse/issues/590
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Bugfix: Add stricter prune error checks
|
|
||||||
|
|
||||||
Additional checks were added to the prune command in order to improve
|
|
||||||
resiliency to backend, hardware and/or networking issues. The checks now
|
|
||||||
detect a few more cases where such outside factors could potentially cause
|
|
||||||
data loss.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2674
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Enhancement: S3 backend: Add support for WebIdentityTokenFile
|
|
||||||
|
|
||||||
We've added support for EKS IAM roles for service accounts feature to the S3 backend.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2733
|
|
||||||
https://github.com/restic/restic/issues/2703
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Enhancement: Optimize handling of new index entries
|
|
||||||
|
|
||||||
Restic now uses less memory for backups which add a lot of data, e.g. large initial backups.
|
|
||||||
In addition, we've improved the stability in some edge cases.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2773
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Reduce memory consumption of in-memory index
|
|
||||||
|
|
||||||
We've improved how the index is stored in memory.
|
|
||||||
This change can reduce memory usage for large repositories by up to 50%
|
|
||||||
(depending on the operation).
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2781
|
|
||||||
https://github.com/restic/restic/pull/2812
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Enhancement: Optimize `list blobs` command
|
|
||||||
|
|
||||||
We've changed the implementation of `list blobs` which should be now a bit faster
|
|
||||||
and consume almost no memory even for large repositories.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2786
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Enhancement: Optimized file access in restic mount
|
|
||||||
|
|
||||||
Reading large (> 100GiB) files from restic mountpoints is now faster,
|
|
||||||
and the speedup is greater for larger files.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2790
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Change: Honor the --no-lock flag in the mount command
|
|
||||||
|
|
||||||
The mount command now does not lock the repository if given the
|
|
||||||
--no-lock flag. This allows to mount repositories which are archived
|
|
||||||
on a read only backend/filesystem.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1597
|
|
||||||
https://github.com/restic/restic/pull/2821
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
Enhancement: Speed-up file deletion in forget, prune and rebuild-index
|
|
||||||
|
|
||||||
We've sped up the file deletion for the commands forget, prune and
|
|
||||||
rebuild-index, especially for remote repositories.
|
|
||||||
Deletion was sequential before and is now run in parallel.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2840
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: Fix possible crash in the progress bar of check --read-data
|
|
||||||
|
|
||||||
We've fixed a possible crash while displaying the progress bar for the
|
|
||||||
check --read-data command. The crash occurred when the length of the
|
|
||||||
progress bar status exceeded the terminal width, which only happened for
|
|
||||||
very narrow terminal windows.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2899
|
|
||||||
https://forum.restic.net/t/restic-rclone-pcloud-connection-issues/2963/15
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
Bugfix: Restore timestamps and permissions on intermediate directories
|
|
||||||
|
|
||||||
When using the `--include` option of the restore command, restic restored
|
|
||||||
timestamps and permissions only on directories selected by the include pattern.
|
|
||||||
Intermediate directories, which are necessary to restore files located in sub-
|
|
||||||
directories, were created with default permissions. We've fixed the restore
|
|
||||||
command to restore timestamps and permissions for these directories as well.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1212
|
|
||||||
https://github.com/restic/restic/issues/1402
|
|
||||||
https://github.com/restic/restic/pull/2906
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
Bugfix: Mark repository files as read-only when using the local backend
|
|
||||||
|
|
||||||
Files stored in a local repository were marked as writeable on the
|
|
||||||
filesystem for non-Windows systems, which did not prevent accidental file
|
|
||||||
modifications outside of restic. In addition, the local backend did not work
|
|
||||||
with certain filesystems and network mounts which do not permit modifications
|
|
||||||
of file permissions.
|
|
||||||
|
|
||||||
restic now marks files stored in a local repository as read-only on the
|
|
||||||
filesystem on non-Windows systems. The error handling is improved to support
|
|
||||||
more filesystems.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1756
|
|
||||||
https://github.com/restic/restic/issues/2157
|
|
||||||
https://github.com/restic/restic/pull/2989
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Bugfix: Hide password in REST backend repository URLs
|
|
||||||
|
|
||||||
When using a password in the REST backend repository URL,
|
|
||||||
the password could in some cases be included in the output
|
|
||||||
from restic, e.g. when initializing a repo or during an error.
|
|
||||||
|
|
||||||
The password is now replaced with "***" where applicable.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2241
|
|
||||||
https://github.com/restic/restic/pull/2658
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
Bugfix: Correctly dump directories into tar files
|
|
||||||
|
|
||||||
The dump command previously wrote directories in a tar file in a way which
|
|
||||||
can cause compatibility problems. This caused, for example, 7zip on Windows
|
|
||||||
to not open tar files containing directories. In addition it was not possible
|
|
||||||
to dump directories with extended attributes. These compatibility problems
|
|
||||||
are now corrected.
|
|
||||||
|
|
||||||
In addition, a tar file now includes the name of the owner and group of a file.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2319
|
|
||||||
https://github.com/restic/restic/pull/3039
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: Don't require `self-update --output` placeholder file
|
|
||||||
|
|
||||||
`restic self-update --output /path/to/new-restic` used to require that
|
|
||||||
new-restic was an existing file, to be overwritten. Now it's possible
|
|
||||||
to download an updated restic binary to a new path, without first
|
|
||||||
having to create a placeholder file.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2491
|
|
||||||
https://github.com/restic/restic/pull/2937
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
Bugfix: Fix rare cases of backup command hanging forever
|
|
||||||
|
|
||||||
We've fixed an issue with the backup progress reporting which could cause
|
|
||||||
restic to hang forever right before finishing a backup.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2834
|
|
||||||
https://github.com/restic/restic/pull/2963
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Bugfix: Fix manpage formatting
|
|
||||||
|
|
||||||
The manpage formatting in restic v0.10.0 was garbled, which is fixed now.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2938
|
|
||||||
https://github.com/restic/restic/pull/2977
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
Bugfix: Make --exclude-larger-than handle disappearing files
|
|
||||||
|
|
||||||
There was a small bug in the backup command's --exclude-larger-than
|
|
||||||
option where files that disappeared between scanning and actually
|
|
||||||
backing them up to the repository caused a panic. This is now fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2942
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: restic generate, help and self-update no longer check passwords
|
|
||||||
|
|
||||||
The commands `restic cache`, `generate`, `help` and `self-update` don't need
|
|
||||||
passwords, but they previously did run the RESTIC_PASSWORD_COMMAND (if set in
|
|
||||||
the environment), prompting users to authenticate for no reason. They now skip
|
|
||||||
running the password command.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2951
|
|
||||||
https://github.com/restic/restic/pull/2987
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Enhancement: Optimize check for unchanged files during backup
|
|
||||||
|
|
||||||
During a backup restic skips processing files which have not changed since the last backup run.
|
|
||||||
Previously this required opening each file once which can be slow on network filesystems. The
|
|
||||||
backup command now checks for file changes before opening a file. This considerably reduces
|
|
||||||
the time to create a backup on network filesystems.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2969
|
|
||||||
https://github.com/restic/restic/pull/2970
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: Make snapshots --json output [] instead of null when no snapshots
|
|
||||||
|
|
||||||
Restic previously output `null` instead of `[]` for the `--json snapshots`
|
|
||||||
command, when there were no snapshots in the repository. This caused some
|
|
||||||
minor problems when parsing the output, but is now fixed such that `[]` is
|
|
||||||
output when the list of snapshots is empty.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2979
|
|
||||||
https://github.com/restic/restic/pull/2984
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
Enhancement: Add support for Volume Shadow Copy Service (VSS) on Windows
|
|
||||||
|
|
||||||
Volume Shadow Copy Service allows read access to files that are locked by
|
|
||||||
another process using an exclusive lock through a filesystem snapshot. Restic
|
|
||||||
was unable to backup those files before. This update enables backing up these
|
|
||||||
files.
|
|
||||||
|
|
||||||
This needs to be enabled explicitely using the --use-fs-snapshot option of the
|
|
||||||
backup command.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/340
|
|
||||||
https://github.com/restic/restic/pull/2274
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
Enhancement: Authenticate to Google Cloud Storage with access token
|
|
||||||
|
|
||||||
When using the GCS backend, it is now possible to authenticate with OAuth2
|
|
||||||
access tokens instead of a credentials file by setting the GOOGLE_ACCESS_TOKEN
|
|
||||||
environment variable.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2849
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Enhancement: New option --repository-file
|
|
||||||
|
|
||||||
We've added a new command-line option --repository-file as an alternative
|
|
||||||
to -r. This allows to read the repository URL from a file in order to
|
|
||||||
prevent certain types of information leaks, especially for URLs containing
|
|
||||||
credentials.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1458
|
|
||||||
https://github.com/restic/restic/issues/2900
|
|
||||||
https://github.com/restic/restic/pull/2910
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Warn if parent snapshot cannot be loaded during backup
|
|
||||||
|
|
||||||
During a backup restic uses the parent snapshot to check whether a file was
|
|
||||||
changed and has to be backed up again. For this check the backup has to read
|
|
||||||
the directories contained in the old snapshot. If a tree blob cannot be
|
|
||||||
loaded, restic now warns about this problem with the backup repository.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2978
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Bugfix: Make `mount` not create missing mount point directory
|
|
||||||
|
|
||||||
When specifying a non-existent directory as mount point for the `mount`
|
|
||||||
command, restic used to create the specified directory automatically.
|
|
||||||
|
|
||||||
This has now changed such that restic instead gives an error when the
|
|
||||||
specified directory for the mount point does not exist.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1681
|
|
||||||
https://github.com/restic/restic/pull/3008
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Bugfix: Ignore `no data available` filesystem error during backup
|
|
||||||
|
|
||||||
Restic was unable to backup files on some filesystems, for example certain
|
|
||||||
configurations of CIFS on Linux which return a `no data available` error
|
|
||||||
when reading extended attributes. These errors are now ignored.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1800
|
|
||||||
https://github.com/restic/restic/pull/3034
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Allow specifying percentage in `check --read-data-subset`
|
|
||||||
|
|
||||||
We've enhanced the `check` command's `--read-data-subset` option to also accept
|
|
||||||
a percentage (e.g. `2.5%` or `10%`). This will check the given percentage of
|
|
||||||
pack files (which are randomly selected on each run).
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2186
|
|
||||||
https://github.com/restic/restic/pull/3038
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
Enhancement: Report permanent/fatal backend errors earlier
|
|
||||||
|
|
||||||
When encountering errors in reading from or writing to storage backends,
|
|
||||||
restic retries the failing operation up to nine times (for a total of ten
|
|
||||||
attempts). It used to retry all backend operations, but now detects some
|
|
||||||
permanent error conditions so that it can report fatal errors earlier.
|
|
||||||
|
|
||||||
Permanent failures include local disks being full, SSH connections
|
|
||||||
dropping and permission errors.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2453
|
|
||||||
https://github.com/restic/restic/pull/3170
|
|
||||||
https://github.com/restic/restic/issues/3180
|
|
||||||
https://github.com/restic/restic/pull/3181
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
Enhancement: Add Alibaba/Aliyun OSS support in the `s3` backend
|
|
||||||
|
|
||||||
A new extended option `s3.bucket-lookup` has been added to support
|
|
||||||
Alibaba/Aliyun OSS in the `s3` backend. The option can be set to one
|
|
||||||
of the following values:
|
|
||||||
|
|
||||||
- `auto` - Existing behaviour
|
|
||||||
- `dns` - Use DNS style bucket access
|
|
||||||
- `path` - Use path style bucket access
|
|
||||||
|
|
||||||
To make the `s3` backend work with Alibaba/Aliyun OSS you must set
|
|
||||||
`s3.bucket-lookup` to `dns` and set the `s3.region` parameter. For
|
|
||||||
example:
|
|
||||||
|
|
||||||
restic -o s3.bucket-lookup=dns -o s3.region=oss-eu-west-1 -r s3:https://oss-eu-west-1.aliyuncs.com/bucketname init
|
|
||||||
|
|
||||||
Note that `s3.region` must be set, otherwise the MinIO SDK tries to
|
|
||||||
look it up and it seems that Alibaba doesn't support that properly.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2528
|
|
||||||
https://github.com/restic/restic/pull/2535
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: Report the correct owner of directories in FUSE mounts
|
|
||||||
|
|
||||||
Restic 0.10.0 changed the FUSE mount to always report the current user
|
|
||||||
as the owner of directories within the FUSE mount, which is incorrect.
|
|
||||||
|
|
||||||
This is now changed back to reporting the correct owner of a directory.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2563
|
|
||||||
https://github.com/restic/restic/pull/3141
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
Bugfix: Make `backup` and `tag` commands separate tags by comma
|
|
||||||
|
|
||||||
Running `restic backup --tag foo,bar` previously created snapshots with one
|
|
||||||
single tag containing a comma (`foo,bar`) instead of two tags (`foo`, `bar`).
|
|
||||||
|
|
||||||
Similarly, the `tag` command's `--set`, `--add` and `--remove` options would
|
|
||||||
treat `foo,bar` as one tag instead of two tags. This was inconsistent with
|
|
||||||
other commands and often unexpected when one intended `foo,bar` to mean two
|
|
||||||
tags.
|
|
||||||
|
|
||||||
To be consistent in all commands, restic now interprets `foo,bar` to mean two
|
|
||||||
separate tags (`foo` and `bar`) instead of one tag (`foo,bar`) everywhere,
|
|
||||||
including in the `backup` and `tag` commands.
|
|
||||||
|
|
||||||
NOTE: This change might result in unexpected behavior in cases where you use
|
|
||||||
the `forget` command and filter on tags like `foo,bar`. Snapshots previously
|
|
||||||
backed up with `--tag foo,bar` will still not match that filter, but snapshots
|
|
||||||
saved from now on will match that filter.
|
|
||||||
|
|
||||||
To replace `foo,bar` tags with `foo` and `bar` tags in old snapshots, you can
|
|
||||||
first generate a list of the relevant snapshots using a command like:
|
|
||||||
|
|
||||||
restic snapshots --json --quiet | jq '.[] | select(contains({tags: ["foo,bar"]})) | .id'
|
|
||||||
|
|
||||||
and then use `restic tag --set foo --set bar snapshotID [...]` to set the new
|
|
||||||
tags. Please adjust the commands to include real tag names and any additional
|
|
||||||
tags, as well as the list of snapshots to process.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2688
|
|
||||||
https://github.com/restic/restic/pull/2690
|
|
||||||
https://github.com/restic/restic/pull/3197
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
Enhancement: Configurable progress reports for non-interactive terminals
|
|
||||||
|
|
||||||
The `backup`, `check` and `prune` commands never printed any progress
|
|
||||||
reports on non-interactive terminals. This behavior is now configurable
|
|
||||||
using the `RESTIC_PROGRESS_FPS` environment variable. Use for example a
|
|
||||||
value of `1` for an update every second, or `0.01666` for an update every
|
|
||||||
minute.
|
|
||||||
|
|
||||||
The `backup` command now also prints the current progress when restic
|
|
||||||
receives a `SIGUSR1` signal.
|
|
||||||
|
|
||||||
Setting the `RESTIC_PROGRESS_FPS` environment variable or sending a `SIGUSR1`
|
|
||||||
signal prints a status report even when `--quiet` was specified.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2706
|
|
||||||
https://github.com/restic/restic/issues/3194
|
|
||||||
https://github.com/restic/restic/pull/3199
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
Bugfix: Make the `cat` command respect the `--no-lock` option
|
|
||||||
|
|
||||||
The `cat` command would not respect the `--no-lock` flag. This is now fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2739
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
Enhancement: Add `backup` options `--files-from-{verbatim,raw}`
|
|
||||||
|
|
||||||
The new `backup` options `--files-from-verbatim` and `--files-from-raw` read a
|
|
||||||
list of files to back up from a file. Unlike the existing `--files-from`
|
|
||||||
option, these options do not interpret the listed filenames as glob patterns;
|
|
||||||
instead, whitespace in filenames is preserved as-is and no pattern expansion is
|
|
||||||
done. Please see the documentation for specifics.
|
|
||||||
|
|
||||||
These new options are highly recommended over `--files-from`, when using a
|
|
||||||
script to generate the list of files to back up.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2944
|
|
||||||
https://github.com/restic/restic/issues/3013
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
Enhancement: Allow usage of deprecated S3 `ListObjects` API
|
|
||||||
|
|
||||||
Some S3 API implementations, e.g. Ceph before version 14.2.5, have a broken
|
|
||||||
`ListObjectsV2` implementation which causes problems for restic when using
|
|
||||||
their API endpoints. When a broken server implementation is used, restic prints
|
|
||||||
errors similar to the following:
|
|
||||||
|
|
||||||
List() returned error: Truncated response should have continuation token set
|
|
||||||
|
|
||||||
As a temporary workaround, restic now allows using the older `ListObjects`
|
|
||||||
endpoint by setting the `s3.list-objects-v1` extended option, for instance:
|
|
||||||
|
|
||||||
restic -o s3.list-objects-v1=true snapshots
|
|
||||||
|
|
||||||
Please note that this option may be removed in future versions of restic.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3083
|
|
||||||
https://github.com/restic/restic/pull/3085
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Bugfix: The `--use-fs-snapshot` option now works on windows/386
|
|
||||||
|
|
||||||
Restic failed to create VSS snapshots on windows/386 with the following error:
|
|
||||||
|
|
||||||
GetSnapshotProperties() failed: E_INVALIDARG (0x80070057)
|
|
||||||
|
|
||||||
This is now fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3087
|
|
||||||
https://github.com/restic/restic/pull/3090
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
Change: Deleting files on Google Drive now moves them to the trash
|
|
||||||
|
|
||||||
When deleting files on Google Drive via the `rclone` backend, restic used to
|
|
||||||
bypass the trash folder required that one used the `-o rclone.args` option to
|
|
||||||
enable usage of the trash folder. This ensured that deleted files in Google
|
|
||||||
Drive were not kept indefinitely in the trash folder. However, since Google
|
|
||||||
Drive's trash retention policy changed to deleting trashed files after 30 days,
|
|
||||||
this is no longer needed.
|
|
||||||
|
|
||||||
Restic now leaves it up to rclone and its configuration to use or not use the
|
|
||||||
trash folder when deleting files. The default is to use the trash folder, as
|
|
||||||
of rclone 1.53.2. To re-enable the restic 0.11 behavior, set the
|
|
||||||
`RCLONE_DRIVE_USE_TRASH` environment variable or change the rclone
|
|
||||||
configuration. See the rclone documentation for more details.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3095
|
|
||||||
https://github.com/restic/restic/pull/3102
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Bugfix: Do not require gs bucket permissions when running `init`
|
|
||||||
|
|
||||||
Restic used to require bucket level permissions for the `gs` backend
|
|
||||||
in order to initialize a restic repository.
|
|
||||||
|
|
||||||
It now allows a `gs` service account to initialize a repository if the
|
|
||||||
bucket does exist and the service account has permissions to write/read
|
|
||||||
to that bucket.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3100
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: Correctly detect output redirection for `backup` command on Windows
|
|
||||||
|
|
||||||
On Windows, since restic 0.10.0 the `backup` command did not properly detect
|
|
||||||
when the output was redirected to a file. This caused restic to output
|
|
||||||
terminal control characters. This has been fixed by correcting the terminal
|
|
||||||
detection.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3111
|
|
||||||
https://github.com/restic/restic/pull/3150
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
Enhancement: Support additional environment variables for Swift authentication
|
|
||||||
|
|
||||||
The `swift` backend now supports the following additional environment variables
|
|
||||||
for passing authentication details to restic:
|
|
||||||
`OS_USER_ID`, `OS_USER_DOMAIN_ID`, `OS_PROJECT_DOMAIN_ID` and `OS_TRUST_ID`
|
|
||||||
|
|
||||||
Depending on the `openrc` configuration file these might be required when the
|
|
||||||
user and project domains differ from one another.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3147
|
|
||||||
https://github.com/restic/restic/pull/3158
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: Don't create invalid snapshots when `backup` is interrupted
|
|
||||||
|
|
||||||
When canceling a backup run at a certain moment it was possible that
|
|
||||||
restic created a snapshot with an invalid "null" tree. This caused
|
|
||||||
`check` and other operations to fail. The `backup` command now properly
|
|
||||||
handles interruptions and never saves a snapshot when interrupted.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3151
|
|
||||||
https://github.com/restic/restic/pull/3164
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
Bugfix: Improve error handling in the `restore` command
|
|
||||||
|
|
||||||
The `restore` command used to not print errors while downloading file contents
|
|
||||||
from the repository. It also incorrectly exited with a zero error code even
|
|
||||||
when there were errors during the restore process. This has all been fixed and
|
|
||||||
`restore` now returns with a non-zero exit code when there's an error.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3166
|
|
||||||
https://github.com/restic/restic/pull/3207
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Add release binaries for MIPS architectures
|
|
||||||
|
|
||||||
We've added a few new architectures for Linux to the release binaries: `mips`,
|
|
||||||
`mipsle`, `mips64`, and `mip64le`. MIPS is mostly used for low-end embedded
|
|
||||||
systems.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3191
|
|
||||||
https://github.com/restic/restic/pull/3208
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
Bugfix: Correct statistics for overlapping targets
|
|
||||||
|
|
||||||
A user reported that restic's statistics and progress information during backup
|
|
||||||
was not correctly calculated when the backup targets (files/dirs to save)
|
|
||||||
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
|
|
||||||
size of the file `foo/bar` twice, so the completeness percentage as well as the
|
|
||||||
number of files was wrong. This is now corrected.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/3232
|
|
||||||
https://github.com/restic/restic/pull/3243
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
Enhancement: Back up mountpoints as empty directories
|
|
||||||
|
|
||||||
When the `--one-file-system` option is specified to `restic backup`, it
|
|
||||||
ignores all file systems mounted below one of the target directories. This
|
|
||||||
means that when a snapshot is restored, users needed to manually recreate
|
|
||||||
the mountpoint directories.
|
|
||||||
|
|
||||||
Restic now backs up mountpoints as empty directories and therefore implements
|
|
||||||
the same approach as `tar`.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/909
|
|
||||||
https://github.com/restic/restic/pull/3119
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Enhancement: Add several more error checks
|
|
||||||
|
|
||||||
We've added a lot more error checks in places where errors were previously
|
|
||||||
ignored (as hinted by the static analysis program `errcheck` via `golangci-lint`).
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3250
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
Enhancement: Improve `prune` performance and make it more customizable
|
|
||||||
|
|
||||||
The `prune` command is now much faster. This is especially the case for remote
|
|
||||||
repositories or repositories with not much data to remove. Also the memory
|
|
||||||
usage of the `prune` command is now reduced.
|
|
||||||
|
|
||||||
Restic used to rebuild the index from scratch after pruning. This could lead
|
|
||||||
to missing packs in the index in some cases for eventually consistent backends
|
|
||||||
such as e.g. AWS S3. This behavior is now changed and the index rebuilding
|
|
||||||
uses the information already known by `prune`.
|
|
||||||
|
|
||||||
By default, the `prune` command no longer removes all unused data. This
|
|
||||||
behavior can be fine-tuned by new options, like the acceptable amount of
|
|
||||||
unused space or the maximum size of data to reorganize. For more details,
|
|
||||||
please see https://restic.readthedocs.io/en/stable/060_forget.html .
|
|
||||||
|
|
||||||
Moreover, `prune` now accepts the `--dry-run` option and also running
|
|
||||||
`forget --dry-run --prune` will show what `prune` would do.
|
|
||||||
|
|
||||||
This enhancement also fixes several open issues, e.g.:
|
|
||||||
- https://github.com/restic/restic/issues/1140
|
|
||||||
- https://github.com/restic/restic/issues/1599
|
|
||||||
- https://github.com/restic/restic/issues/1985
|
|
||||||
- https://github.com/restic/restic/issues/2112
|
|
||||||
- https://github.com/restic/restic/issues/2227
|
|
||||||
- https://github.com/restic/restic/issues/2305
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2718
|
|
||||||
https://github.com/restic/restic/pull/2842
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
Enhancement: Add option to let `backup` trust mtime without checking ctime
|
|
||||||
|
|
||||||
The `backup` command used to require that both `ctime` and `mtime` of a file
|
|
||||||
matched with a previously backed up version to determine that the file was
|
|
||||||
unchanged. In other words, if either `ctime` or `mtime` of the file had
|
|
||||||
changed, it would be considered changed and restic would read the file's
|
|
||||||
content again to back up the relevant (changed) parts of it.
|
|
||||||
|
|
||||||
The new option `--ignore-ctime` makes restic look at `mtime` only, such that
|
|
||||||
`ctime` changes for a file does not cause restic to read the file's contents
|
|
||||||
again.
|
|
||||||
|
|
||||||
The check for both `ctime` and `mtime` was introduced in restic 0.9.6 to make
|
|
||||||
backups more reliable in the face of programs that reset `mtime` (some Unix
|
|
||||||
archivers do that), but it turned out to often be expensive because it made
|
|
||||||
restic read file contents even if only the metadata (owner, permissions) of
|
|
||||||
a file had changed. The new `--ignore-ctime` option lets the user restore the
|
|
||||||
0.9.5 behavior when needed. The existing `--ignore-inode` option already
|
|
||||||
turned off this behavior, but also removed a different check.
|
|
||||||
|
|
||||||
Please note that changes in files' metadata are still recorded, regardless of
|
|
||||||
the command line options provided to the backup command.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/2495
|
|
||||||
https://github.com/restic/restic/issues/2558
|
|
||||||
https://github.com/restic/restic/issues/2819
|
|
||||||
https://github.com/restic/restic/pull/2823
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Speed up the repacking step of the `prune` command
|
|
||||||
|
|
||||||
The repack step of the `prune` command, which moves still used file parts into
|
|
||||||
new pack files such that the old ones can be garbage collected later on, now
|
|
||||||
processes multiple pack files in parallel. This is especially beneficial for
|
|
||||||
high latency backends or when using a fast network connection.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2941
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
Enhancement: Speed up the `rebuild-index` command
|
|
||||||
|
|
||||||
We've optimized the `rebuild-index` command. Now, existing index entries are used
|
|
||||||
to minimize the number of pack files that must be read. This speeds up the index
|
|
||||||
rebuild a lot.
|
|
||||||
|
|
||||||
Additionally, the option `--read-all-packs` has been added, implementing the
|
|
||||||
previous behavior.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issue/2547
|
|
||||||
https://github.com/restic/restic/pull/3006
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
Bugfix: Fix sporadic stream reset between rclone and restic
|
|
||||||
|
|
||||||
Sometimes when using restic with the `rclone` backend, an error message
|
|
||||||
similar to the following would be printed:
|
|
||||||
|
|
||||||
Didn't finish writing GET request (wrote 0/xxx): http2: stream closed
|
|
||||||
|
|
||||||
It was found that this was caused by restic closing the connection to rclone
|
|
||||||
to soon when downloading data. A workaround has been added which waits for
|
|
||||||
the end of the download before closing the connection.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3014
|
|
||||||
https://github.com/rclone/rclone/issues/2598
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
Enhancement: Add more checks for index and pack files in the `check` command
|
|
||||||
|
|
||||||
The `check` command run with the `--read-data` or `--read-data-subset` options
|
|
||||||
used to only verify only the pack file content - it did not check if the blobs
|
|
||||||
within the pack are correctly contained in the index.
|
|
||||||
|
|
||||||
A check for the latter is now in place, which can print the following error:
|
|
||||||
|
|
||||||
Blob ID is not contained in index or position is incorrect
|
|
||||||
|
|
||||||
Another test is also added, which compares pack file sizes computed from the
|
|
||||||
index and the pack header with the actual file size. This test is able to
|
|
||||||
detect truncated pack files.
|
|
||||||
|
|
||||||
If the index is not correct, it can be rebuilt by using the `rebuild-index`
|
|
||||||
command.
|
|
||||||
|
|
||||||
Having added these tests, `restic check` is now able to detect non-existing
|
|
||||||
blobs which are wrongly referenced in the index. This situation could have
|
|
||||||
lead to missing data.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3048
|
|
||||||
https://github.com/restic/restic/pull/3082
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Make the `dump` command support `zip` format
|
|
||||||
|
|
||||||
Previously, restic could dump the contents of a whole folder structure only
|
|
||||||
in the `tar` format. The `dump` command now has a new flag to change output
|
|
||||||
format to `zip`. Just pass `--archive zip` as an option to `restic dump`.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/2433
|
|
||||||
https://github.com/restic/restic/pull/3081
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
Enhancement: Reduce memory usage of `check` command
|
|
||||||
|
|
||||||
The `check` command now requires less memory if it is run without the
|
|
||||||
`--check-unused` option.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3099
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
Enhancement: Parallelize scan of snapshot content in `copy` and `prune`
|
|
||||||
|
|
||||||
The `copy` and `prune` commands used to traverse the directories of
|
|
||||||
snapshots one by one to find used data. This snapshot traversal is
|
|
||||||
now parallized which can speed up this step several times.
|
|
||||||
|
|
||||||
In addition the `check` command now reports how many snapshots have
|
|
||||||
already been processed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3106
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
Enhancement: Parallelize reading of locks and snapshots
|
|
||||||
|
|
||||||
Restic used to read snapshots sequentially. For repositories containing
|
|
||||||
many snapshots this slowed down commands which have to read all snapshots.
|
|
||||||
|
|
||||||
Now the reading of snapshots is parallelized. This speeds up for example
|
|
||||||
`prune`, `backup` and other commands that search for snapshots with certain
|
|
||||||
properties or which have to find the `latest` snapshot.
|
|
||||||
|
|
||||||
The speed up also applies to locks stored in the backup repository.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3130
|
|
||||||
https://github.com/restic/restic/pull/3174
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Bugfix: Do not hang until foregrounded when completed in background
|
|
||||||
|
|
||||||
On Linux, when running in the background restic failed to stop the terminal
|
|
||||||
output of the `backup` command after it had completed. This caused restic to
|
|
||||||
hang until moved to the foreground. This has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3152
|
|
||||||
https://forum.restic.net/t/restic-alpine-container-cron-hangs-epoll-pwait/3334
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
Bugfix: Improve error handling in `gs` backend
|
|
||||||
|
|
||||||
The `gs` backend did not notice when the last step of completing a
|
|
||||||
file upload failed. Under rare circumstances, this could cause
|
|
||||||
missing files in the backup repository. This has now been fixed.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3249
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
Enhancement: Enable HTTP/2 for backend connections
|
|
||||||
|
|
||||||
Go's HTTP library usually automatically chooses between HTTP/1.x and HTTP/2
|
|
||||||
depending on what the server supports. But for compatibility this mechanism
|
|
||||||
is disabled if DialContext is used (which is the case for restic). This change
|
|
||||||
allows restic's HTTP client to negotiate HTTP/2 if supported by the server.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/pull/3254
|
|
||||||
@@ -7,7 +7,7 @@ vulnerability, but urge all users to upgrade to the latest version of restic.
|
|||||||
|
|
||||||
Exploiting the vulnerability requires a Linux/Unix system which saves backups
|
Exploiting the vulnerability requires a Linux/Unix system which saves backups
|
||||||
via restic and a Windows systems which restores files from the repo. In
|
via restic and a Windows systems which restores files from the repo. In
|
||||||
addition, the attackers need to be able to create files with arbitrary
|
addition, the attackers need to be able to create create files with arbitrary
|
||||||
names which are then saved to the restic repo. For example, by creating a file
|
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
|
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
|
restoring a snapshot containing this file on Windows, it would be written to
|
||||||
|
|||||||
+6
-16
@@ -1,21 +1,11 @@
|
|||||||
# The first line must start with Bugfix:, Enhancement: or Change:,
|
Bugfix: Fix behavior for foobar (in present tense)
|
||||||
# including the colon. Use present use. Remove lines starting with '#'
|
|
||||||
# from this template.
|
|
||||||
Enhancement: Allow custom bar in the foo command
|
|
||||||
|
|
||||||
# Describe the problem in the past tense, the new behavior in the present
|
We've fixed the behavior for foobar, a long-standing annoyance for restic
|
||||||
# tense. Mention the affected commands, backends, operating systems, etc.
|
users.
|
||||||
# Focus on user-facing behavior, not the implementation.
|
|
||||||
|
|
||||||
Restic foo always used the system-wide bar when deciding how to frob an
|
The text in the paragraphs is written in past tense. The last section is a list
|
||||||
item in the baz backend. It now permits selecting the bar with --bar or
|
of issue URLs, PR URLs and other URLs. The first issue ID (or the first PR ID,
|
||||||
the environment variable RESTIC_BAR. The system-wide bar is still the
|
in case there aren't any issue links) is used as the primary ID.
|
||||||
default.
|
|
||||||
|
|
||||||
# The last section is a list of issue, PR and forum URLs.
|
|
||||||
# The first issue ID determines the filename for the changelog entry:
|
|
||||||
# changelog/unreleased/issue-1234. If there are no relevant issue links,
|
|
||||||
# use the PR ID and call the file pull-55555.
|
|
||||||
|
|
||||||
https://github.com/restic/restic/issues/1234
|
https://github.com/restic/restic/issues/1234
|
||||||
https://github.com/restic/restic/pull/55555
|
https://github.com/restic/restic/pull/55555
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
# this file is here so the unreleased/ directory is tracked within git, even if
|
|
||||||
# no other changelog files are present.
|
|
||||||
Whitespace-only changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 437 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user