12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 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
- }
- //Get the last modification tiem of a given file
- func lastModTime(filename string) int64 {
- file, err := os.Stat(filename)
- if err != nil {
- return 0
- }
- modifiedtime := file.ModTime()
- return modifiedtime.Unix()
- }
- func isDir(filename string) bool {
- file, err := os.Open(filename)
- if err != nil {
- return false
- }
- fileInfo, err := file.Stat()
- if err != nil {
- return false
- }
- return fileInfo.IsDir()
- }
- func fileSize(filename string) int64 {
- fi, err := os.Stat("/path/to/file")
- if err != nil {
- return -1
- }
- // get the size
- size := fi.Size()
- return size
- }
|