1
0
Fork 0
mirror of https://github.com/restic/restic.git synced 2025-03-23 00:00:04 +01:00
restic/internal/restorer
Ivan Shapovalov afeca99aef restorer: implement same-file tracking and cloning ("reflinks")
Note that "cloning" means either true block cloning via `ioctl(FICLONE)`
or any kind of local copy in general via fallback to `io.Copy()`.

TBD:
- fallback to restoring a file normally if it could not be cloned
- track all potential cloning sources for each file (every copy that was
  restored rather than cloned) and try to clone from each copy in turn
  (Why: imagine a set of duplicate files being restored N:M to a set of
   distinct filesystems or subvolumes or datasets, such that some pairs
   can be used as operands to a block cloning operation and some cannot)
- progress reporting (report how much space we have saved, or not)

Non-goals:
- cloning individual blobs via `ioctl(FICLONERANGE)`
  (Why: this is not going to work very well, if at all, due to blobs not
   being aligned to any kind of a fundamental block size, _and_ this
   will impact cloning entire files unless the latter is special-cased,
   which is exactly what is being done here.)
2025-02-11 20:53:49 +04:00
..
doc.go fix some typos 2024-03-11 14:35:12 +08:00
filerestorer.go feat(backends/s3): add warmup support before repacks and restores (#5173) 2025-02-01 18:26:27 +00:00
filerestorer_test.go feat(backends/s3): add warmup support before repacks and restores (#5173) 2025-02-01 18:26:27 +00:00
fileswriter.go cleanup imports 2024-08-31 17:37:25 +02:00
fileswriter_other_test.go restorer: windows test fixes 2024-06-13 23:20:09 +02:00
fileswriter_test.go Fix typos 2024-08-11 21:38:15 +02:00
fileswriter_windows_test.go restorer: windows test fixes 2024-06-13 23:20:09 +02:00
hardlinks_index.go restorer: HardlinkIndex: improve API, combine Has() and Value() 2025-02-11 20:53:48 +04:00
hardlinks_index_test.go restorer: HardlinkIndex: improve API, combine Has() and Value() 2025-02-11 20:53:48 +04:00
reflinks_index.go restorer: ReflinkIndex: introduce an index for tracking duplicates 2025-02-11 20:53:49 +04:00
restorer.go restorer: implement same-file tracking and cloning ("reflinks") 2025-02-11 20:53:49 +04:00
restorer_test.go minimize usage of internal/fs in tests 2024-08-31 18:20:41 +02:00
restorer_unix.go restore: use case insensitive file name comparison on windows 2024-07-05 22:38:39 +02:00
restorer_unix_test.go restore: Add progress bar to 'restore --verify' 2024-08-11 22:25:21 +02:00
restorer_windows.go Fix typos 2024-08-11 21:38:15 +02:00
restorer_windows_test.go fs: move WindowsAttributes definition back to restic package 2024-08-31 18:40:36 +02:00
sparsewrite.go restore: fine-grained sparse support for windows 2024-06-13 21:55:33 +02:00
truncate_other.go restore: support sparse restores also on windows 2022-09-24 21:39:39 +02:00
truncate_windows.go restore: support sparse restores also on windows 2022-09-24 21:39:39 +02:00