mirror of
https://github.com/restic/restic.git
synced 2025-10-10 07:21:53 +00:00
restore: support sparse restores also on windows
This commit is contained in:
19
internal/restorer/truncate_windows.go
Normal file
19
internal/restorer/truncate_windows.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package restorer
|
||||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/restic/restic/internal/debug"
|
||||
"golang.org/x/sys/windows"
|
||||
)
|
||||
|
||||
func truncateSparse(f *os.File, size int64) error {
|
||||
// try setting the sparse file attribute, but ignore the error if it fails
|
||||
var t uint32
|
||||
err := windows.DeviceIoControl(windows.Handle(f.Fd()), windows.FSCTL_SET_SPARSE, nil, 0, nil, 0, &t, nil)
|
||||
if err != nil {
|
||||
debug.Log("failed to set sparse attribute for %v: %v", f.Name(), err)
|
||||
}
|
||||
|
||||
return f.Truncate(size)
|
||||
}
|
Reference in New Issue
Block a user