package file import ( "fmt" "io" "os" ) // Copy copies a file from src to dest func Copy(src, dest string) error { fi, err := os.Lstat(src) if err != nil { return err } srcFi, err := os.Open(src) if err != nil { return fmt.Errorf("could not open src: %w", err) } defer srcFi.Close() destFi, err := os.Create(dest) if err != nil { return fmt.Errorf("could not create dest: %w", err) } defer destFi.Close() if err := os.Chmod(dest, fi.Mode()); err != nil { return err } if _, err := io.Copy(destFi, srcFi); err != nil { return fmt.Errorf("could not copy %s to %s: %w", src, dest, err) } return nil }