NAME

IO::BlockSync - Syncronize changed blocks

VERSION

Version 0.001

SYNOPSIS

BlockSync can some of the same stuff that bigsync (by Egor Egorov) can - it's just written in perl.

BlockSync copies data from source file to destination file (can be a block device) and calculates checksum on each block it copies. On all runs after the first only the changed blocks will be copied.

use IO::BlockSync;

# OOP way
my $bs = IO::BlockSync->new(
    src => '/path/to/source/file',
    dst => '/path/to/destination/file',
    chk => '/path/to/chk/file',
);
$bs->run;

# Non OOP way
BlockSync(
    src => '/path/to/source/file',
    dst => '/path/to/destination/file',
    chk => '/path/to/chk/file',
);

EXPORT

BlockSync

Run BlockSync non-object-oriented

ATTRIBUTES

src

Path to source file.

mandatory - string (containing path) or filehandle

dst

Destination file. If not set, then only checksum file will be updated.

optional - string (containing path) or filehandle

chk

Path to checksum file.

mandatory - string (containing path) or filehandle

bs

Block size to use in bytes.

optional - integer - defaults to 1_048_576 B (1 MB)

hash

Sub that retrurn hashed data.

optional - sub - defaults to sub that return MD5 hash followed by newline

sparse

Seek in dst file, instead of writing blocks only containing \0

optional - boolean - defaults to 0 (false)

truncate

Truncate the destination file to same size as source file. Does not work on block devices. Will only be tried if data has default value (whole file is copied).

optional - boolean - defaults to 0 (false)

data

List of areas (in bytes) inside the source file that should be looked at. Usefull if you know excactly which blocks in src that could have changed.

data => [ {start => 0, end => 9999}, {start => 88888, end => 777777}, ]

optional - array of hashes - defaults to "whole file"

status

Sub that will be run everytime a block has been read (and written).

optional - sub - default to sub doing nothing

METHODS

run

This is the method that starts copying data.

LICENSE AND COPYRIGHT

This software is copyright (c) 2019 by Thor Dreier-Hansen.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

Terms of the Perl programming language system itself:

See http://dev.perl.org/licenses/ for more information.