Пример #1
0
func mainCopy(args []string) int {
	f := flag.NewFlagSet("cp", flag.ExitOnError)
	opt_dry_run := f.Bool("n", false, "Dry run")
	opt_quiet := f.Bool("q", false, "Quiet")
	opt_force := f.Bool("f", false, "Force copy even if there are errors")
	opt_dedup := f.Bool("d", false, "Deduplicate files on destination (link files on destination instead of copying them from source if possible)")
	opt_dd := f.Bool("dd", false, "Like -d but also remove duplicate files")
	opt_hash := f.Bool("dc", false, "check hash for files that has been modified on the destination directory when deduplicating")
	opt_from := f.String("from", "", "Specify the source directory")
	opt_to := f.String("to", "", "Specify the destination directory")
	opt_commit := f.Bool("commit", false, "Commit the new hash if it has been computed (appear in both source and destination)")
	opt_2pass := f.Bool("2", false, "Scan before copy in two distinct pass")
	opt_nodocignore := f.Bool("no-docignore", false, "Don't respect .docignore")
	opt_verbose := f.Bool("v", false, "Verbose mode")
	f.Usage = func() {
		fmt.Print(copyUsage)
		f.PrintDefaults()
	}
	f.Parse(args)

	src, dst := findSourceDest(*opt_from, *opt_to, f.Args())
	sync_opts := sync.SyncOptions{
		Preparator: &sync.FilePreparatorOpts{
			Commit:    *opt_commit,
			CheckHash: *opt_hash,
			Bidir:     false,
			DocIgnore: !*opt_nodocignore,
		},
		DryRun:    *opt_dry_run,
		Force:     *opt_force,
		Quiet:     *opt_quiet,
		Dedup:     *opt_dedup || *opt_dd,
		DeleteDup: *opt_dd,
		TwoPass:   *opt_2pass,
		Verbose:   *opt_verbose,
	}
	if sync.Sync(src, dst, sync_opts) > 0 {
		os.Exit(1)
	}
	return 0
}
Пример #2
0
func mainSync(args []string) int {
	f := flag.NewFlagSet("sync", flag.ExitOnError)
	opt_dry_run := f.Bool("n", false, "Dry run")
	opt_quiet := f.Bool("q", false, "Quiet")
	opt_force := f.Bool("f", false, "Force copy even if there are errors")
	opt_from := f.String("from", "", "Specify the source directory")
	opt_to := f.String("to", "", "Specify the destination directory")
	opt_commit := f.Bool("commit", false, "Commit the new hash if it has been computed")
	opt_2pass := f.Bool("2", false, "Scan before copy in two distinct pass")
	opt_nodocignore := f.Bool("no-docignore", false, "Don't respect .docignore")
	opt_verbose := f.Bool("v", false, "Verbose mode")
	f.Usage = func() {
		fmt.Print(syncUsage)
		f.PrintDefaults()
	}
	f.Parse(args)

	src, dst := findSourceDest(*opt_from, *opt_to, f.Args())
	sync_opts := sync.SyncOptions{
		Preparator: &sync.FilePreparatorOpts{
			Commit:    *opt_commit,
			CheckHash: false,
			Bidir:     true,
			DocIgnore: !*opt_nodocignore,
		},
		DryRun:    *opt_dry_run,
		Force:     *opt_force,
		Quiet:     *opt_quiet,
		Dedup:     false,
		DeleteDup: false,
		TwoPass:   *opt_2pass,
		Verbose:   *opt_verbose,
	}
	if sync.Sync(src, dst, sync_opts) > 0 {
		os.Exit(1)
	}
	return 0
}