Michael Eischer
94b19d64be
termstatus: allow retrieving the underlying writer
...
This is intended for special cases where it must be guaranteed that the
output on stdout exactly matches what was written to the io.Writer.
2025-09-15 22:17:26 +02:00
Michael Eischer
03600ca509
termstatus: don't buffer stdout
...
There's not much use in doing so as nearly every write call was paired
with a flush call. Thus, just use an unbuffered writer.
2025-09-15 21:22:07 +02:00
Michael Eischer
91ecac8003
termstatus: fix crash when printing empty string
2025-09-15 20:25:17 +02:00
Michael Eischer
32b7168a9e
centralize index progress bar for termstatus
2025-09-15 20:25:17 +02:00
Michael Eischer
81fe559222
Merge pull request #5495 from MichaelEischer/fix-check-retries
...
check: fix error reporting on download retry
2025-09-15 19:31:44 +02:00
Michael Eischer
d757e39992
make linter happy
2025-09-13 22:22:53 +02:00
Srigovind Nayak
ce089f7e2d
errors: standardize error wrapping for Fatal errors
...
* replace all occurences of `errors.Fatal(err.Error())` with `errors.Fatalf("%s", err)` so that the error wrapping is correct across the codebase
* updated the review comments
2025-09-13 23:32:40 +05:30
Srigovind Nayak
18b8f8870f
tests: add tests for preserving underlying errors
2025-09-13 23:32:39 +05:30
Srigovind Nayak
79c41966af
errors: enhance fatalError type to include underlying errors
2025-09-13 23:32:39 +05:30
Michael Eischer
de29d74707
check: fix error reporting on download retry
2025-09-08 11:45:28 +02:00
Michael Eischer
b71b77fa77
terminal: unexport tcgetpgrp, tcsetpgrp and getpgrp
2025-09-08 11:04:38 +02:00
Michael Eischer
d10bd1d321
terminal: move reading password from terminal here
2025-09-08 11:03:56 +02:00
Michael Eischer
43b5166de8
terminal: cleanup determining width
2025-09-08 11:03:42 +02:00
Michael Eischer
0b0dd07f15
consolidate checks whether stdin/stdout is terminal
2025-09-08 11:03:26 +02:00
Michael Eischer
93ccc548c8
termstatus: move cursor handling to terminal package
2025-09-08 11:03:17 +02:00
Michael Eischer
0ab38faa2e
termstatus: track current status also in background
...
Without this, restic could temporarily print an outdated status when
moving back into the foreground.
2025-09-08 10:50:53 +02:00
Michael Eischer
48cbbf9651
ui/termstatus: extract background handling code
2025-09-08 10:50:09 +02:00
Michael Eischer
6ff7cd9050
backend/util: extract background handling code
2025-09-08 10:42:35 +02:00
greatroar
1ed93bd54d
backend,termstatus: Unify foreground/background detection
...
PR #5358 reintroduced a version of the TIOCGPGRP ioctl call that works
on all Unix platforms except Linux, due to a bug/inconsistency in
x/sys/unix. This commit fixes that by introducing termstatus.Tcgetpgrp.
It also introduces termstatus.Getpgrp and termstatus.Tcsetpgrp to deal
with the different signature of unix.Getpgrp in Solaris vs. all other
Unix platforms and an int-overflowing constant on AIX, so that some
AIX/Solaris-specific code can be removed elsewhere and
foreground/background detection is done the same everywhere except on
Windows.
2025-09-08 09:33:44 +02:00
Michael Eischer
914bd699be
backend: always start backend process in separate process group
...
The process group is necessary to properly handle ctrl-c.
2025-09-06 19:51:10 +02:00
Michael Eischer
4c19d6410f
backend: only move child process to foreground if already in foreground
...
The rclone and sftp backends require starting a child process. The are
first moved into the foreground and back into the background after the
initial startup is done.
However, this behavior is also active if restic itself is started in the
background. In this case, restic changing the foreground process may
confuse the shell and in case of bash causes it to exit. Thus, disable
modification of the controlling process group of the tty if restic is
run in the background.
2025-09-06 19:51:10 +02:00
Michael Eischer
2ad703bfd8
Merge pull request #5486 from greatroar/duration-panic
...
Avoid panic in duration parsing
2025-09-06 18:32:36 +02:00
greatroar
0864d04c5c
internal/restic: Fix panic in ParseDuration
...
Fixes #5485 . Includes test case by @MichaelEischer.
2025-09-06 10:30:34 +02:00
gregoster
839c38b4c4
EOPNOTSUPP can be returned if the filesystem does not support xattrs ( #5344 )
...
---------
Co-authored-by: Greg Oster <oster@netbsd.org>
2025-09-05 19:09:27 +00:00
Michael Eischer
01bc60e96f
backup: fix test on windows
2025-09-05 19:35:25 +02:00
Michael Eischer
350f6452e7
backup: test that parent directory errors can be correctly filtered
2025-09-05 19:28:18 +02:00
Michael Eischer
484cdf12e5
backup: test that missing parent directory is correctly handled
2025-09-05 19:28:18 +02:00
Michael Eischer
c8bb7bd312
backup: do not fail backup is some parent folder is inaccessible
...
Handle errors for parent directories of backup directories in the same
way as all other file access errors during a backup.
2025-09-05 19:28:18 +02:00
Michael Eischer
a8ce2e45cc
backup: do not crash if nodeFromFileInfo fails
...
this could crash in two cases:
- if a directory is deleted between restic stating it and trying to list
its directory content.
- when restic tries to list the parent directory of a backup target, but
the parent directory has been deleted.
return an error in this case instead.
2025-09-05 19:28:18 +02:00
Dominik Schulz
48e5c0984e
Mark HTTP Error 507 as permanent
...
This change classifies HTTP error 507 (Insufficient Storage) as a
permanent error that should not be retried. I keep running into
this once in a while and there is literally no point in retrying when
the server is full.
Fixes #5429
Signed-off-by: Dominik Schulz <dominik.schulz@gauner.org>
2025-09-05 19:04:16 +02:00
Michael Eischer
b71fe91643
Merge pull request #5345 from mikix/chmod-enotsup
...
backend/local: ignore chmod "not supported" errors
2025-07-21 22:28:53 +02:00
Michael Eischer
3433c5abac
Merge pull request #5408 from MichaelEischer/fix-walker-crash
...
walker: fix error handling if tree cannot be loaded
2025-07-21 21:46:59 +02:00
greatroar
f7f6459eb9
internal/restic: Simplify ParallelRemove
2025-07-19 12:55:40 +02:00
greatroar
95a36b55f4
internal/dump: Clarify writeNode concurrency
2025-07-19 12:54:41 +02:00
greatroar
2c39b1f84f
internal/repository/index: Simplify MasterIndex concurrency
2025-07-18 15:06:37 +02:00
Michael Terry
a8535aba58
backend/local: ignore chmod "not supported" errors
2025-06-02 17:44:30 -04:00
Michael Eischer
e4a7f4aadf
Merge pull request #5356 from MichaelEischer/fix-backup-stdin-filename
...
backup: Fix `--stdin-filename` with directory
2025-06-02 20:27:26 +02:00
Michael Eischer
10cfe96cd4
walker: fix error handling if tree cannot be loaded
...
A tree that cannot be loaded is a fatal error when walking the tree.
Thus, return the error and exit the tree walk.
2025-06-02 20:04:26 +02:00
Michael Eischer
9f39e8a1d3
fs/reader: return proper error on invalid filename
2025-04-11 22:07:31 +02:00
Michael Eischer
ddd48f1e98
fs/reader: test file not exist case
2025-04-11 21:57:45 +02:00
Michael Eischer
6e91ea3397
fs/reader: use test helpers
2025-04-11 21:54:15 +02:00
Michael Eischer
e7c1e4f1ff
fs/reader: deduplicate test code
2025-04-11 21:50:47 +02:00
Michael Eischer
70e1037a49
fs/reader: fix open+stat handling
2025-04-11 21:49:25 +02:00
Michael Eischer
19f48084ea
fs/reader: use modification time for file and directories
...
This ensures that a fixed input generates a fully deterministic output
file structure.
2025-04-11 21:46:24 +02:00
Michael Eischer
3a995172b7
fs: rewrite Reader to build fs tree up front
...
This adds proper support for filenames that include directories. For
example, `/foo/bar` would result in an error when trying to open `/foo`.
The directory tree is now build upfront. This ensures let's the
directory tree construction be handled only once. All accessors then
only have to look up the constructed directory entries.
2025-04-11 21:37:40 +02:00
Srigovind Nayak
f13e9c10a4
Add support for additional compression levels fastest and better ( #5321 )
...
* repository: expose addtional compression levels
* adding better and fastest compression levels for zstd
* repository: add changelog entry for issue-4728
* chore: fix golint issues
* chore: sort compression modes in the help text
* updating review comments
2025-03-31 21:21:12 +02:00
Gilbert Gilb's
eefff0d793
docs: fix unit for S3 restore timeout
...
"d" is not a valid unit.
2025-03-27 21:20:50 +01:00
Michael Eischer
d4772aa469
readd feature flags removed too soon
2025-03-26 18:38:30 +01:00
Michael Eischer
13cb90b83a
Merge pull request #5295 from MichaelEischer/randomize-pack-order
...
Randomize blob to pack file assignment
2025-03-25 18:13:49 +01:00
Michael Eischer
9eee32131a
Merge pull request #5307 from Martin2112/dial_tls
...
Replace deprecated DialTLS with DialTLSContext.
2025-03-25 18:12:10 +01:00
Michael Eischer
0b22d8dc64
Merge pull request #5306 from MichaelEischer/sftp-better-errors
...
sftp: improve error messages
2025-03-24 18:43:47 +01:00
Michael Eischer
ccb92f5bf0
repository/packer: add unit test for Merge method
2025-03-24 17:04:02 +01:00
Martin Smith
47b048f437
Rename param as it looks like context isn't used.
2025-03-24 15:01:47 +00:00
Martin Smith
cd7f384d77
Replace deprecated DialTLS with DialTLSContext.
2025-03-24 14:05:13 +00:00
Michael Eischer
9d58a27428
Merge pull request #5298 from Martin2112/lock_by_value
...
Fix lock pass by value and handle error from Release().
2025-03-24 14:42:38 +01:00
Michael Eischer
9aad8e9ea5
Merge pull request #5299 from Martin2112/go_cleanup
...
A few more small cleanups that should not change behaviour.
2025-03-24 13:59:39 +01:00
Michael Eischer
3adf7d4efb
backend/sftp: wrap further errors
2025-03-24 12:45:15 +01:00
Michael Eischer
66ec735ac2
backend/sftp: include file path in error messages
2025-03-24 12:44:42 +01:00
Michael Eischer
63a71f70e3
backend/sftp: ensure all errors are wrapped with the method name
2025-03-24 12:32:52 +01:00
Michael Eischer
66a8e897a9
Merge pull request #5300 from MichaelEischer/fix-output-race
...
ui/termstatus: fix race condition in StdioWrapper
2025-03-24 11:17:14 +01:00
Michael Eischer
ffd63f893a
Merge pull request #5296 from MichaelEischer/reindex-before-recover
...
recover: reindex before reassembling snapshot
2025-03-24 11:16:38 +01:00
Michael Eischer
ec19d67512
ui/termstatus: fix race condition in StdioWrapper
2025-03-24 11:07:15 +01:00
Martin Smith
cfa3c5884d
Fix lock pass by value and handle error from Release().
2025-03-23 18:53:21 +00:00
Michael Eischer
d60acc5697
restore: fix help message on invalid OverwriteBehavior
2025-03-23 19:51:37 +01:00
Michael Eischer
f7f48b3026
ui/progress: extend Printer interface with print to stdout method
2025-03-23 17:46:04 +01:00
Michael Eischer
4b975bda37
backend/s3: increase timeout for test initialization
2025-03-23 17:28:08 +01:00
Michael Eischer
f8b481fd9b
backend/s3: resolve credential retrieval deprecation
2025-03-23 17:28:08 +01:00
Michael Eischer
4350b95d27
backend/test: fix delayedRemoval timeout handling
...
The timeout for all blobs starts to run after the delete calls have been
issue. Thus, use the same start time for all blobs instead of individual
timeouts.
2025-03-23 16:36:31 +01:00
Michael Eischer
2e58561ad6
backend/test: remove redundant test call to the backend
2025-03-23 16:36:31 +01:00
Michael Eischer
17b585f7c7
backend/test: partially parallelize delayedRemove
2025-03-23 16:36:31 +01:00
Michael Eischer
4640b3c41a
backend/test: parallelize slow tests
2025-03-23 16:36:31 +01:00
Michael Eischer
8d2d50d095
repository: merge small pack files before flushing
...
This prevents chunk size leaks when a backup only consists of a small
file which is split in two parts, which end up in two individual pack
files.
2025-03-23 12:29:16 +01:00
Michael Eischer
62453f9356
repository: randomly distribute blobs over two pack files
2025-03-23 12:29:16 +01:00
Martin Smith
6caad10840
Remove extra brackets.
2025-03-23 10:11:43 +00:00
Martin Smith
4420fde378
Remove deprecated HTTP option that is now the default.
2025-03-23 10:10:54 +00:00
Martin Smith
a389977bd7
Remove redudnant error check, handled above.
2025-03-23 10:05:13 +00:00
Martin Smith
6e45c51509
Fix name including package name and variable shadowing package.
2025-03-23 10:01:19 +00:00
Martin Smith
5e7333d28d
Unify repository receiver name.
2025-03-23 09:57:59 +00:00
Martin Smith
e2ccb18e22
Fix lint for missing const, after fixing godoc for the outer type.
2025-03-22 18:42:12 +00:00
Martin Smith
d2c5241961
Revert a fix that broke compile of sd_windows.go.
2025-03-22 18:27:09 +00:00
Martin Smith
f238f81ba6
Renames to fix clashes with reserved words.
2025-03-22 18:20:30 +00:00
Martin Smith
3788605127
Rename unused parameters to '_'.
2025-03-22 18:20:30 +00:00
Martin Smith
29b4680873
Remove unnecessary type conversions, second set.
2025-03-22 18:20:30 +00:00
Martin Smith
092899df8b
Remove unnecessary type conversions.
2025-03-22 18:20:30 +00:00
Martin Smith
2099ec1cd6
Remove import aliases that match package name.
2025-03-22 18:20:30 +00:00
Martin Smith
1daf5317f8
Fix import ordering.
2025-03-22 18:20:30 +00:00
Martin Smith
db8daeb192
Fix godoc comments.
2025-03-22 18:20:30 +00:00
Michael Eischer
ef692991a4
Merge pull request #5183 from wplapper/cmd_prune
...
restic prune: selection of packs to repack based on size
2025-03-22 15:43:32 +01:00
Michael Eischer
69249372bf
Merge pull request #5249 from MichaelEischer/fix-repair-index
...
Prevent creation of oversized indexes and automatically rewrite them.
2025-03-22 14:29:39 +01:00
Michael Eischer
445477312c
Merge pull request #5251 from MichaelEischer/rclone-retries
...
Retry temporary rclone backend errors
2025-03-22 14:24:47 +01:00
Luz Paz
794341a494
doc: fix various typos
...
Found via `codespell -q 3 -L atleast,iinclude,ist,programm,reenable,ser,uptodate`
2025-03-05 20:47:08 -05:00
Winfried Plappert
a2a1309fd9
prune: make small pack size configureable for prune all changes together
...
cmd_prune.go: added option `--repack-smaller-than`
prune.go: added field `SmallPackBytes` to `PruneOptions`, including checking and processing
prune_test.go: added test `TestPruneSmall`
doc/060_forget.rst: added description of enhancement
changelog/unreleased/issue-5109: description of enhancement
2025-02-18 16:54:44 +00:00
Michael Eischer
5e7ce45ede
retry: test error retries for flaky backends
2025-02-16 22:56:43 +01:00
Michael Eischer
cb8575f001
rclone: remove redundant Warmup methods
2025-02-16 22:41:22 +01:00
Michael Eischer
8d1185b3b8
retry/rclone: retry errors up to 5 times
2025-02-16 22:40:55 +01:00
Michael Eischer
c970e58739
backend: refactor backend Connections and HasAtomicReplace into Properties
2025-02-16 22:27:58 +01:00
Michael Eischer
39e63ee4e3
index: add tests for oversized index handling
2025-02-16 17:42:00 +01:00
Michael Eischer
3b8d15d651
index: rewrite oversized indexes
2025-02-16 17:03:14 +01:00
Michael Eischer
2fd8a3865c
index: automatically write full indexes in StorePack
2025-02-16 16:39:38 +01:00
Srigovind Nayak
8d970e36cf
tests: add unit test to check the progress counter for forget/prune
2025-02-02 20:18:56 +05:30