codeplayr / rsyncer
此包的最新版本(dev-master)没有可用的许可信息。
无依赖项的轻量级rsync包装器
dev-master
2016-11-16 01:37 UTC
Requires
- php: >=5.4.0
This package is not auto-updated.
Last update: 2024-09-29 02:15:18 UTC
README
rsyncer
一个无依赖项的PHP rsync包装器类
要求
PHP 5.4+,rsync,composer
安装
-
使用 Composer 安装包
-
从项目根目录执行
composer install
或
composer require codeplayr/rsyncer
-
Composer 会处理自动加载。只需在文件顶部包含自动加载器即可
require_once __DIR__ . '/vendor/autoload.php';
用法
请参阅以下示例
use \Codeplayr\Rsyncer\Option; use \Codeplayr\Rsyncer\SSH; use \Codeplayr\Rsyncer\Rsync; $source = __DIR__ . '/src/'; $destination = __DIR__ . '/backup/'; $date = date('Y-m-d', time()); //rsync options $option = new Option([ Option::FILES_FROM => __DIR__ . '/rules.txt', Option::EXCLUDE_FROM=> __DIR__ . '/exclude-rules.txt', Option::LOG_FILE => __DIR__ . "/logs/{$date}.log", Option::ARCHIVE => false, Option::LINKS => true, Option::TIMES => true, Option::RECURSIVE => true, Option::VERBOSE => true, Option::COMPRESS => true, Option::CHECKSUM => true, Option::DRY_RUN => false, ]); //add additional flags $option->addFlag('human-readable') ->addArgument('exclude', '/path/to/exclude') ->addArgument('include', '*.html') ->addArgument('include', '*.php') ->addArgument('include', '*/') ->addArgument('exclude', '*'); //optional ssh connection to remote host $ssh = new SSH([ SSH::USERNAME => 'root', SSH::HOST => '1.2.3.4', SSH::PORT => 22, SSH::IDENTITY_FILE => '/path/to/private/key', ]); //configuration options $conf = [ Rsync::SHOW_OUTPUT => true, ]; $rsnyc = new Rsync( $option, $ssh, $conf ); //assemble and show Command echo $rsnyc->getCommand( $source, $destination ); //start syncing directories if( ! $rsnyc->sync( $source, $destination ) ){ echo $rsnyc->getMessage()->toString(); }
运行脚本将生成以下rsync命令和选项
rsync -ltrvzc --human-readable --files-from="/path/to/rules.txt" --exclude-from="/path/to/exclude-rules.txt" --log-file="/path/to/logs/2016-10-29.log" --exclude='/path/to/exclude' --include="*.html" --include="*.php" --include="*/" --exclude="*" -e="ssh -i /path/to/your/private/key" root@1.2.3.4:"/path/to/src/" "/path/to/backup/"
运行测试
- 所有测试都在
tests
文件夹内。 - 执行
composer install --dev phpunit/phpunit
安装phpunit - 在tests目录内运行
phpunit
以执行测试用例 - 设置
--coverage-text
选项以在终端显示代码覆盖率报告
注意
如果你喜欢这个脚本或想添加一些功能:联系我,fork这个项目,发送pull请求,你知道怎么做的。