Help us shape the future of Go! Take the 2026 Go Developer Survey

copy

package module
v1.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2020 License: MIT Imports: 6 Imported by: 1,320

README

copy

Actions Status codecov GoDoc Go Report Card

copy copies directories recursively.

Example:

err := Copy("your/directory", "your/directory.copy")

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Copy

func Copy(src, dest string, opt ...Options) error

Copy copies src to dest, doesn't matter if src is a directory or a file.

Example
err := Copy("testdata/example", "testdata.copy/example")
fmt.Println("Error:", err)
info, _ := os.Stat("testdata.copy/example")
fmt.Println("IsDir:", info.IsDir())
Output:
Error: <nil>
IsDir: true

Types

type Options added in v1.1.0

type Options struct {
	// OnSymlink can specify what to do on symlink
	OnSymlink func(src string) SymlinkAction
	// Skip can specify which files should be skipped
	Skip func(src string) (bool, error)
	// AddPermission to every entities,
	// NO MORE THAN 0777
	AddPermission os.FileMode
	// Sync file after copy.
	// Useful in case when file must be on the disk
	// (in case crash happens, for example),
	// at the expense of some performance penalty
	Sync bool
	// Preserve the atime and the mtime of the entries
	// On linux we can preserve only up to 1 millisecond accuracy
	PreserveTimes bool
}

Options specifies optional actions on copying.

Example
err := Copy(
	"testdata/example",
	"testdata.copy/example_with_options",
	Options{
		Skip: func(src string) (bool, error) {
			return strings.HasSuffix(src, ".git-like"), nil
		},
		OnSymlink: func(src string) SymlinkAction {
			return Skip
		},
		AddPermission: 0200,
	},
)
fmt.Println("Error:", err)
_, err = os.Stat("testdata.copy/example_with_options/.git-like")
fmt.Println("Skipped:", os.IsNotExist(err))
Output:
Error: <nil>
Skipped: true

type SymlinkAction added in v1.1.0

type SymlinkAction int

SymlinkAction represents what to do on symlink.

const (
	// Deep creates hard-copy of contents.
	Deep SymlinkAction = iota
	// Shallow creates new symlink to the dest of symlink.
	Shallow
	// Skip does nothing with symlink.
	Skip
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL