NAME
File::Copy::Undoable - Copy file/directory using rsync, with undo
support
VERSION
version 0.01
FAQ
Why do you use rsync? Why not, say, File::Copy::Recursive?
With "rsync", we can continue interrupted transfer. We need this ability
for recovery. Also, "rsync" can handle hardlinks and preservation of
ownership, something which File::Copy::Recursive currently does not do.
And, being implemented in C, it might be faster when processing large
files/trees..
SEE ALSO
Setup
Rinci::Transaction
DESCRIPTION
This module has Rinci metadata.
FUNCTIONS
None are exported by default, but they are exportable.
cp(%args) -> [status, msg, result, meta]
Copy file/directory using rsync, with undo support.
On do, will copy "source" to "target" (which must not exist beforehand).
On undo, will trash "target".
Fixed state: "source" exists and "target" exists. Content or sizes are
not checked; only existence.
Fixable state: "source" exists and "target" doesn't exist.
Unfixable state: "source" does not exist.
This function is idempotent (repeated invocations with same arguments
has the same effect as single invocation). This function supports
transactions.
Arguments ('*' denotes required arguments):
* rsync_opts => *array* (default: ["-a"])
Rsync options.
By default, "-a" is used. You can add, for example, "--delete" or
other rsync options.
* source* => *str*
* target* => *str*
Target location.
Note that to avoid ambiguity, you must specify full location instead
of just directory name. For example: cp(source=>'/dir',
target=>'/a') will copy /dir to /a and cp(source=>'/dir',
target=>'/a/dir') will copy /dir to /a/dir.
Special arguments:
* -tx_action => *str*
For more information on transaction, see Rinci::Transaction.
* -tx_action_id => *str*
For more information on transaction, see Rinci::Transaction.
* -tx_recovery => *str*
For more information on transaction, see Rinci::Transaction.
* -tx_rollback => *str*
For more information on transaction, see Rinci::Transaction.
* -tx_v => *str*
For more information on transaction, see Rinci::Transaction.
Return value:
Returns an enveloped result (an array). First element (status) is an
integer containing HTTP status code (200 means OK, 4xx caller error, 5xx
function error). Second element (msg) is a string containing error
message, or 'OK' if status is 200. Third element (result) is optional,
the actual result. Fourth element (meta) is called result metadata and
is optional, a hash that contains extra information.
AUTHOR
Steven Haryanto <stevenharyanto@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2012 by Steven Haryanto.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.