copyFile copies a file from "from" to "to" preserving permissions and ownership.
(from, to string)
| 204 | // copyFile copies a file from "from" to "to" preserving permissions and |
| 205 | // ownership. |
| 206 | func copyFile(from, to string) error { |
| 207 | src, err := os.Open(from) |
| 208 | if err != nil { |
| 209 | return err |
| 210 | } |
| 211 | defer src.Close() |
| 212 | |
| 213 | dst, err := os.Create(to) |
| 214 | if err != nil { |
| 215 | return err |
| 216 | } |
| 217 | defer dst.Close() |
| 218 | |
| 219 | if _, err = io.Copy(dst, src); err != nil { |
| 220 | return err |
| 221 | } |
| 222 | |
| 223 | stat, err := os.Stat(from) |
| 224 | if err != nil { |
| 225 | return err |
| 226 | } |
| 227 | |
| 228 | return os.Chmod(to, stat.Mode()) |
| 229 | } |