Documentation
¶
Overview ¶
Package scanner implements a file system scanner and hasher.
Index ¶
- Variables
- func Blocks(ctx context.Context, r io.Reader, blocksize int, sizehint int64, ...) ([]protocol.BlockInfo, error)
- func CreateFileInfo(fi fs.FileInfo, name string, filesystem fs.Filesystem, scanOwnership bool) (protocol.FileInfo, error)
- func HashFile(ctx context.Context, fs fs.Filesystem, path string, blockSize int, ...) ([]protocol.BlockInfo, error)
- func Validate(buf, hash []byte, weakHash uint32) bool
- func Walk(ctx context.Context, cfg Config) chan ScanResult
- func WalkWithoutHashing(ctx context.Context, cfg Config) chan ScanResult
- type Config
- type Counter
- type CurrentFiler
- type ScanResult
Constants ¶
This section is empty.
Variables ¶
View Source
var SHA256OfNothing = []uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}
Functions ¶
func Blocks ¶
func Blocks(ctx context.Context, r io.Reader, blocksize int, sizehint int64, counter Counter, useWeakHashes bool) ([]protocol.BlockInfo, error)
Blocks returns the blockwise hash of the reader.
func CreateFileInfo ¶
func HashFile ¶
func HashFile(ctx context.Context, fs fs.Filesystem, path string, blockSize int, counter Counter, useWeakHashes bool) ([]protocol.BlockInfo, error)
HashFile hashes the files and returns a list of blocks representing the file.
func Validate ¶
Validate quickly validates buf against the 32-bit weakHash, if not zero, else against the cryptohash hash, if len(hash)>0. It is satisfied if either hash matches or neither hash is given.
func WalkWithoutHashing ¶
func WalkWithoutHashing(ctx context.Context, cfg Config) chan ScanResult
Types ¶
type Config ¶
type Config struct {
// Folder for which the walker has been created
Folder string
// Limit walking to these paths within Dir, or no limit if Sub is empty
Subs []string
// If Matcher is not nil, it is used to identify files to ignore which were specified by the user.
Matcher *ignore.Matcher
// Number of hours to keep temporary files for
TempLifetime time.Duration
// If CurrentFiler is not nil, it is queried for the current file before rescanning.
CurrentFiler CurrentFiler
// The Filesystem provides an abstraction on top of the actual filesystem.
Filesystem fs.Filesystem
// If IgnorePerms is true, changes to permission bits will not be
// detected.
IgnorePerms bool
// If IgnoreOwnership is true, changes to ownership will not be detected.
IgnoreOwnership bool
// When AutoNormalize is set, file names that are in UTF8 but incorrect
// normalization form will be corrected.
AutoNormalize bool
// Number of routines to use for hashing
Hashers int
// Our vector clock id
ShortID protocol.ShortID
// Optional progress tick interval which defines how often FolderScanProgress
// events are emitted. Negative number means disabled.
ProgressTickIntervalS int
// Local flags to set on scanned files
LocalFlags uint32
// Modification time is to be considered unchanged if the difference is lower.
ModTimeWindow time.Duration
// Event logger to which the scan progress events are sent
EventLogger events.Logger
// If ScanOwnership is true, we pick up ownership information on files while scanning.
ScanOwnership bool
}
type CurrentFiler ¶
Click to show internal directories.
Click to hide internal directories.