scanner

package
v0.8.16 Latest Latest
Warning

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

Go to latest
Published: Jun 22, 2014 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package scanner implements a file system scanner and hasher.

Index

Constants

View Source
const StandardBlockSize = 128 * 1024

Variables

This section is empty.

Functions

func PermsEqual added in v0.8.10

func PermsEqual(a, b uint32) bool

Types

type Block

type Block struct {
	Offset int64
	Size   uint32
	Hash   []byte
}

func BlockDiff

func BlockDiff(src, tgt []Block) (have, need []Block)

BlockDiff returns lists of common and missing (to transform src into tgt) blocks. Both block lists must have been created with the same block size.

func Blocks

func Blocks(r io.Reader, blocksize int) ([]Block, error)

Blocks returns the blockwise hash of the reader.

type CurrentFiler added in v0.6.5

type CurrentFiler interface {
	// CurrentFile returns the file as seen at last scan.
	CurrentFile(name string) File
}

type File

type File struct {
	Name       string
	Flags      uint32
	Modified   int64
	Version    uint64
	Size       int64
	Blocks     []Block
	Suppressed bool
}

func (File) Equals

func (f File) Equals(o File) bool

func (File) NewerThan

func (f File) NewerThan(o File) bool

func (File) String

func (f File) String() string

type Suppressor

type Suppressor interface {
	// Supress returns true if the update to the named file should be ignored.
	Suppress(name string, fi os.FileInfo) (bool, bool)
}

type TempNamer

type TempNamer interface {
	// Temporary returns a temporary name for the filed referred to by filepath.
	TempName(path string) string
	// IsTemporary returns true if path refers to the name of temporary file.
	IsTemporary(path string) bool
}

type Walker

type Walker struct {
	// Dir is the base directory for the walk
	Dir string
	// BlockSize controls the size of the block used when hashing.
	BlockSize int
	// If IgnoreFile is not empty, it is the name used for the file that holds ignore patterns.
	IgnoreFile string
	// If TempNamer is not nil, it is used to ignore tempory files when walking.
	TempNamer TempNamer
	// If CurrentFiler is not nil, it is queried for the current file before rescanning.
	CurrentFiler CurrentFiler
	// If Suppressor is not nil, it is queried for supression of modified files.
	// Suppressed files will be returned with empty metadata and the Suppressed flag set.
	// Requires CurrentFiler to be set.
	Suppressor Suppressor
	// If IgnorePerms is true, changes to permission bits will not be
	// detected. Scanned files will get zero permission bits and the
	// NoPermissionBits flag set.
	IgnorePerms bool
}

func (*Walker) CleanTempFiles

func (w *Walker) CleanTempFiles()

CleanTempFiles removes all files that match the temporary filename pattern.

func (*Walker) Walk

func (w *Walker) Walk() (files []File, ignore map[string][]string, err error)

Walk returns the list of files found in the local repository by scanning the file system. Files are blockwise hashed.

Jump to

Keyboard shortcuts

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