xobotyi / rsync
php 的 rsync 封装库
v1.0.3
2018-07-20 09:13 UTC
Requires
- php: >=7.1
Requires (Dev)
- codacy/coverage: ^1.4.0
- phpunit/phpunit: ^6.5.3
This package is auto-updated.
Last update: 2024-09-22 01:26:25 UTC
README
关于
Rsync 是一个纯 PHP 7.1+ 的无依赖封装库,用于 rsync 客户端。它为您提供了一个简单的方法,可以从 PHP 中抽象地控制命令行 rsync。库使用 PSR-4 自动加载标准,并且总是有 100% 的测试覆盖率。
关于 rsync,无需过多介绍,除了 PHP 没有任何更快或同等内置的方式将文件上传到远程服务器。
库支持 rsync 客户端版本 3.1.2 中实现的众多选项和参数。
为什么选择 Rsync?
- 它体积小,且完全覆盖测试
- 它有良好的文档
- 我正在吃自己的甜点=)
- 支持 rsync 和 ssh 的众多参数和选项
- 易于使用
- 在 Windows 上运行(当然,如果您已安装了 Windows 的 ssh 和 rsync 客户端)
要求
- PHP 7.1+
- PHP 配置
variables_order
必须包含E
,例如:variables_order=EGPCS
。
否则,您将需要手动指定 rsync 和 ssh 二进制的绝对路径(至少在 Windows 上) - rsync 客户端 3.1.2+
安装
使用 composer 安装
composer require xobotyi/rsync
文档
代码有良好的文档,方法描述请参阅源代码。
使用
最简单
use xobotyi\rsync\Rsync; $rsync = new Rsync(); $rsync->sync('/path/to/source', '/path/to/destination');
如果您需要 SSH
use xobotyi\rsync\Rsync; use xobotyi\rsync\SSH; $rsync = new Rsync([ Rsync::CONF_CWD => __DIR__, Rsync::CONF_EXECUTABLE => '/even/alternative/executable/rsync.exe', Rsync::CONF_SSH => [ SSH::CONF_EXECUTABLE => '/even/alternative/executable/ssh.exe', SSH::CONF_OPTIONS => [ SSH::OPT_OPTION => ['BatchMode=yes', 'StrictHostKeyChecking=no'], SSH::OPT_IDENTIFICATION_FILE => './path/to/ident', SSH::OPT_PORT => 2222, ], ], ]); $rsync->sync('./relative/path/to/source', 'user@some.remote.lan:/abs/path/to/destination'); echo './relative/path/to/source ' . ($rsync->getExitCode() === 0 ? 'successfully synchronized with remote.' : 'not synchronised due to errors.') . "\n"; $rsync->setExecutable('ssh') ->setOption(SSH::OPT_OPTION, false)// 'false' value turns off the options ->setOptions([ SSH::OPT_IDENTIFICATION_FILE => './new/path/to/ident', SSH::OPT_PORT => 22, ]); $rsync->sync('/new/path/to/source', 'user@some.remote.lan:/abs/path/to/destination'); echo '/new/path/to/source ' . ($rsync->getExitCode() === 0 ? 'successfully synchronized with remote.' : 'not synchronised due to errors.') . "\n";