codeplayr/rsyncer

此包的最新版本(dev-master)没有可用的许可信息。

无依赖项的轻量级rsync包装器

dev-master 2016-11-16 01:37 UTC

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请求,你知道怎么做的。