2
2
mirror of https://github.com/octoleo/restic.git synced 2024-05-28 14:40:49 +00:00
restic/internal/restic
Andrew Gunnerson 8c02ebb029
Add support for extended attributes on symlinks
Linux allows the use of non-`user.` extended attributes on symlinks. One
of the main users of this functionality is SELinux's `security.selinux`
xattr for storing a path's label. By storing symlink xattrs, restic is
now suitable for backing up the root filesystem on Linux distributions
that use SELinux.

This commit adds support for symlink xattrs when backing up data,
restoring data, and mounting snapshots via a fuse mount. All calls to
the xattr library have been updated to the use `L` variants of the
various functions, which always operate on the path given, without
following symlinks.

Fixes: #4375

Signed-off-by: Andrew Gunnerson <accounts+github@chiller3.com>
2023-06-19 14:37:31 -04:00
..
testdata Preserve oldest snapshot when keep-within* does not collect enough 2023-06-17 15:17:20 +02:00
backend_find_test.go restic: change Find to return ids 2022-10-15 16:06:54 +02:00
backend_find.go restic: change Find to return ids 2022-10-15 16:06:54 +02:00
backend.go b2/s3: Move config validation from ApplyEnvironment to Open/Create 2023-06-17 15:15:58 +02:00
blob_set.go prune: Use a single CountedBlobSet to track blobs 2022-10-22 18:45:12 +02:00
blob_test.go Move restic package to internal/restic 2017-07-24 17:43:32 +02:00
blob.go all: Minor cleanups 2022-10-16 10:50:39 +02:00
config_test.go Use _ as parameter name for unused Context 2023-05-18 21:15:45 +02:00
config.go repository: extract Load/StoreJSONUnpacked 2022-07-17 13:22:00 +02:00
counted_blob_set_test.go prune: Shrink keepBlobs set if possible 2022-10-22 18:45:12 +02:00
counted_blob_set.go prune: Shrink keepBlobs set if possible 2022-10-22 18:45:12 +02:00
doc.go Move restic package to internal/restic 2017-07-24 17:43:32 +02:00
duration_test.go forget: Fail test if duration parsing error is missing 2022-08-18 20:14:09 +02:00
duration.go comment cleanup 2022-08-18 20:15:38 +02:00
file_test.go internal/restic: Make FileType a uint8 instead of a string 2022-10-16 10:59:01 +02:00
file.go internal/restic: Make FileType a uint8 instead of a string 2022-10-16 10:59:01 +02:00
find_test.go Replace lots of unused parameters with _ 2023-05-18 21:17:53 +02:00
find.go prune: Use a single CountedBlobSet to track blobs 2022-10-22 18:45:12 +02:00
id_int_test.go Move restic package to internal/restic 2017-07-24 17:43:32 +02:00
id_test.go internal/restic: Remove unused ID.EqualString 2022-10-14 18:20:11 +02:00
id.go internal/restic: Fix ID.UnmarshalJSON, ParseID 2022-10-16 10:39:52 +02:00
ids_test.go restic: Clean up restic.IDs type 2022-12-03 12:38:20 +01:00
ids.go restic: Clean up restic.IDs type 2022-12-03 12:38:20 +01:00
idset_test.go restic: Clean up restic.IDs type 2022-12-03 12:38:20 +01:00
idset.go restic: Clean up restic.IDs type 2022-12-03 12:38:20 +01:00
json.go repository: Reuse buffers in Repository.LoadUnpacked 2023-01-30 22:01:01 +01:00
lock_test.go repository: Remove empty cleanup functions in tests 2022-12-11 11:06:25 +01:00
lock_unix.go lock: Don't copy the lock when checking for process existence 2022-11-11 21:45:55 +01:00
lock_windows.go internal/restic: Fix UID/GID parsing 2022-10-14 18:21:00 +02:00
lock.go Fix deadlock in Lock.Stale 2023-01-27 03:21:37 +11:00
mknod_unix.go add go:build headers everywhere 2022-03-28 22:23:47 +02:00
node_aix.go add go:build headers everywhere 2022-03-28 22:23:47 +02:00
node_darwin.go Make restic.{lchown,mknod} regular functions 2021-05-27 22:51:40 +02:00
node_freebsd.go add go:build headers everywhere 2022-03-28 22:23:47 +02:00
node_linux.go all: Replace some errors.Wrap calls by errors.WithStack 2022-12-17 09:41:07 +01:00
node_netbsd.go Make restic.{lchown,mknod} regular functions 2021-05-27 22:51:40 +02:00
node_openbsd.go Make restic.{lchown,mknod} regular functions 2021-05-27 22:51:40 +02:00
node_solaris.go [#issue 3127] Add xattr support for Solaris 2022-02-13 14:24:37 +05:30
node_test.go Replace most usages of ioutil with the underlying function 2022-12-02 19:36:43 +01:00
node_unix_test.go add go:build headers everywhere 2022-03-28 22:23:47 +02:00
node_unix.go add go:build headers everywhere 2022-03-28 22:23:47 +02:00
node_windows.go restore symlink timestamps on windows 2022-10-30 11:04:04 +01:00
node_xattr.go Add support for extended attributes on symlinks 2023-06-19 14:37:31 -04:00
node.go Add support for extended attributes on symlinks 2023-06-19 14:37:31 -04:00
parallel.go tweak debug logs 2023-04-23 11:38:06 +02:00
repository.go repository: Reuse buffers in Repository.LoadUnpacked 2023-01-30 22:01:01 +01:00
rewind_reader_test.go test: Use testing.T.Cleanup to remove tempdirs 2022-12-09 14:23:55 +01:00
rewind_reader.go panic if hash returns an error 2021-08-04 22:17:46 +02:00
snapshot_find_test.go cmd, restic: Refactor and fix snapshot filtering 2023-02-19 15:04:25 +01:00
snapshot_find.go Remove unnecessary else block 2023-05-18 21:15:45 +02:00
snapshot_group_test.go Refactor group-by to parse options into a struct 2023-02-10 23:18:14 +01:00
snapshot_group.go backup: return normal error if --group-by cannot be parsed 2023-05-18 17:23:31 +02:00
snapshot_policy_test.go Refactor policy sum calculation & duration parsing 2023-03-14 19:29:08 -07:00
snapshot_policy.go Preserve oldest snapshot when keep-within* does not collect enough 2023-06-17 15:17:20 +02:00
snapshot_test.go repository: Remove empty cleanup functions in tests 2022-12-11 11:06:25 +01:00
snapshot.go report snapshot id if loading failed 2023-05-01 17:24:13 +02:00
tag_list_test.go feat(tags): Create Flatten() method 2020-12-29 10:59:46 +01:00
tag_list.go all: Minor cleanups 2022-10-16 10:50:39 +02:00
testing_test.go repository: Remove empty cleanup functions in tests 2022-12-11 11:06:25 +01:00
testing.go Rename unused testing parameter to _ 2023-05-18 21:17:53 +02:00
tree_stream.go repository: extract LoadTree/SaveTree 2022-07-17 13:11:28 +02:00
tree_test.go repository: Remove empty cleanup functions in tests 2022-12-11 11:06:25 +01:00
tree.go internal/restic: Use errors.New when no formatting is needed 2022-10-14 14:07:20 +02:00
zeroprefix_test.go restorer: move zeroPrefixLen to restic package 2022-09-24 21:39:39 +02:00
zeroprefix.go restorer: move zeroPrefixLen to restic package 2022-09-24 21:39:39 +02:00