diff --git a/internal/instancewriter/instance_raw_writer.go b/internal/instancewriter/instance_raw_writer.go index 5de504aca..86d5d2825 100644 --- a/internal/instancewriter/instance_raw_writer.go +++ b/internal/instancewriter/instance_raw_writer.go @@ -25,6 +25,6 @@ func (crw *InstanceRawWriter) WriteFile(name string, srcPath string, fi os.FileI // WriteFileFromReader streams a file into the target file. func (crw *InstanceRawWriter) WriteFileFromReader(src io.Reader, fi os.FileInfo) error { - _, err := io.Copy(crw.rawWriter, src) + _, err := io.CopyN(crw.rawWriter, src, fi.Size()) return err } diff --git a/internal/server/storage/drivers/generic_vfs.go b/internal/server/storage/drivers/generic_vfs.go index ced83774a..3fc79ec95 100644 --- a/internal/server/storage/drivers/generic_vfs.go +++ b/internal/server/storage/drivers/generic_vfs.go @@ -8,6 +8,7 @@ import ( "io/fs" "os" "path/filepath" + "strconv" "strings" "time" @@ -602,9 +603,15 @@ func genericVFSBackupVolume(d Driver, vol Volume, writer instancewriter.Instance defer func() { _ = from.Close() }() + var fileSize int64 + fileSize, err = strconv.ParseInt(vol.config["size"], 10, 64) + if err != nil { + fileSize = blockDiskSize + } + fi := instancewriter.FileInfo{ FileName: name, - FileSize: blockDiskSize, + FileSize: fileSize, FileMode: 0o600, FileModTime: time.Now(), }