A simple PHP rsync wrapper library
This library requires PHP >=5.4
01-13-2018
- Dropped PHP 5.3 support
- Rename
public_key
option to the correctprivate_key
one. Old one still works and will be deprecated in version 2.0
Require it in composer:
composer require albertofem/rsync-lib 1.0.0
Install it:
composer update albertofem/rsync-lib
If you want to run the tests:
./vendor/bin/phpunit
Basic usage example:
<?php
use AFM\Rsync\Rsync;
$origin = __DIR__;
$target = "/target/dir/";
$rsync = new Rsync;
$rsync->sync($origin, $target);
Change behaviour:
<?php
use AFM\Rsync\Rsync;
$origin = __DIR__;
$target = "/target/dir";
$config = array(
'delete_from_target' => true,
'ssh' => array(
'host' => 'myhost.com',
'private_key' => '/my/key'
)
);
$rsync = new Rsync($config);
// change options programatically
$rsync->setFollowSymlinks(false);
$rsync->sync($origin, $target);
Construct options | Rsync argument | Comment |
---|---|---|
executable | path of rsync (default: /usr/bin/rsync ) |
|
archive | -a, --archive | archive mode; equals -rlptgoD (no -H,-A,-X) |
update | -u, --update | skip files that are newer on the receiver |
follow_symlinks | -L, --copy-links | transform symlink into referent file/dir |
dry_run | -n, --dry-run | perform a trial run with no changes made |
option_parameters | add any optional options we've specified | |
verbose | -v, --verbose | increase verbosity |
delete_from_target | --delete | delete extraneous files from destination dirs |
delete_excluded | --delete-excluded | also delete excluded files from destination dirs |
exclude | --exclude=PATTERN | exclude files matching PATTERN |
excludeFrom | --exclude-from=FILE | read exclude patterns from FILE |
recursive | -r, --recursive | recurse into directories |
times | -t, --times | preserve modification times |
show_output | execute and buffers command result to print it | |
ssh | set ssh options | |
compression | -z, --compress | compress file data during the transfer |
remote_origin | use ssh for origin path | |
remove_source | --remove-source-files | sender removes synchronized files (non-dirs) |
info | --info=FLAGS | fine-grained informational verbosity |
compare_dest | --compare-dest=DIR | also compare destination files relative to DIR |
prune_empty_dirs | -m, --prune-empty-dirs | prune empty directory chains from the file-list |