package hybridBackup import ( "errors" "io" "os" ) func BufferedLargeFileCopy(src string, dst string, BUFFERSIZE int64) error { sourceFileStat, err := os.Stat(src) if err != nil { return err } if !sourceFileStat.Mode().IsRegular() { return errors.New("Invalid file source") } source, err := os.Open(src) if err != nil { return err } destination, err := os.Create(dst) if err != nil { return err } buf := make([]byte, BUFFERSIZE) for { n, err := source.Read(buf) if err != nil && err != io.EOF { source.Close() destination.Close() return err } if n == 0 { source.Close() destination.Close() break } if _, err := destination.Write(buf[:n]); err != nil { source.Close() destination.Close() return err } } return nil }