jamielsharief / file-sync
基于HTTP的文件同步库,使用公钥认证
0.1.1
2020-11-21 09:43 UTC
Requires
- php: >=7.3.0
- jamielsharief/encryption: ^1.1
- originphp/http-client: ^2.0
Requires (Dev)
- phpstan/phpstan: ^0.12.52
- phpunit/phpunit: ^9.2
- symfony/process: ^5.1
README
基于HTTP的文件同步库,使用公钥认证。
此库可用于从私有源安装或更新应用程序,同步数据文件或任何您能想到的您可能需要rsync
功能但又能通过PHP轻松控制的情况。
设置
在远程服务器上创建脚本,例如在服务器上创建sync.php
,以便Client
与其通信。
use FileSync\Server; $server = new Server(__DIR__ . '/storage/keys'); $server->dispatch('/server/data');
从脚本或您的应用程序中调用Client
的dispatch
方法
use FileSync\Client; $client = new Client(__DIR__ . '/storage/keys'); $client->dispatch('https://:8000/sync.php','demo@example.com','/var/www/app.example.com/public_html');
生成密钥对
FileSync
根据所需密钥的类型查找密钥,例如使用.privateKey
和.publicKey
扩展。
您需要生成一个private
密钥并将其保存到客户端计算机上,在创建实例时将public
密钥保存到服务器上的密钥链文件夹中。
PHP
FileSync
使用jamielsharief/encryption库进行加密和解密。
生成密钥对
use Encryption\Keypair; $keyPair = KeyPair::generate(); echo $keyPair->privateKey(); echo $keyPair->publicKey();
仅生成私有密钥
use Encryption\PrivateKey; $privateKey = PrivateKey::generate();
处理私有或公钥
$publicKey = PublicKey::load($pathToKey); $privateKey = PrivateKey::load($pathToKey);
有关更多信息,请参阅jamielsharief/encryption。
命令行
生成私有密钥并将其保存到文件中
$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out demo@example.com.privateKey
从私有密钥生成公钥
$ openssl rsa -in demo@example.com.privateKey -pubout > demo@example.com.publicKey
忽略文件
您绝对不应该将包含私人数据的文件夹与其他人同步。
要忽略客户端或服务器上的文件,只需创建一个.syncignore
文件。
以下是一个示例,说明如何排除单个文件、具有扩展名的文件或完整的文件夹
version.txt
config/details.conf
*.json
vendor/
演示
要加载演示,首先启动内置的PHP web服务器
$ php -S localhost:8000
然后运行以下命令,这将创建一个名为dest
的文件夹并将src
中的文件同步到该文件夹。
$ php demo.php