The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

File::Copy::Recursive::Verify - data-safe recursive copy

SYNOPSIS

    use File::Copy::Recursive::Verify qw(verify_rcopy);

    verify_rcopy($dir_a, $dir_b);

    #OOP equivalent

    File::Copy::Recursive::Verify->new(
        src_dir => $dir_a,
        dst_dir => $dir_b,
    )->copy();

    #some complex copy - I know SHA-256 hash of subdir/a.dat file
    #tree $dir_a:
    #.
    #├── c.dat
    #└── subdir
    #    ├── a.dat
    #    └── b.dat

    verify_rcopy($dir_a, $dir_b, {tries => 3, hash_algo => 'SHA-256', src_hash => {'subdir/a.dat' => '0'x64}});

    #OOP equivalent

    File::Copy::Recursive::Verify->new(
        src_dir => $dir_a,
        dst_dir => $dir_b,
        tries   => 3,
        hash_algo => 'SHA-256',
        src_hash => {'subdir/a.dat' => 0x64},
    )->copy();

DESCRIPTION

Use File::Copy::Verify for recursive copy.

FUNCTIONS

verify_rcopy($src_dir, $dst_dir, $options)

functional api

Recusive copy of dir_a to dir_b.

Retry mechanism is via Try::Tiny::Retry (Each file will try verify_copy 10 times with exponential backoff in default).

As verification digest are use fastest MD5 in default.

$options is HashRef of attributes.

return HashRef of copied files (key source, value destination)

rcopy

alias of verify_rcopy

METHODS

new(%attributes)

%attributes

src_dir

source dir

src_hash

source HashRef of path -> hash

dst_dir

destination dir

dst_hash

destination HashRef of path -> hash

hash_algo

hash algorithm

default MD5

tries

number of tries

more about retry - Try::Tiny::Retry

copy;

start recursive copy

return HashRef of copied files (key source, value destination)

LICENSE

Copyright (C) Avast Software.

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

AUTHOR

Jan Seidl <seidl@avast.com>