jamielsharief/file-sync

基于HTTP的文件同步库,使用公钥认证

0.1.1 2020-11-21 09:43 UTC

This package is auto-updated.

Last update: 2024-09-22 18:17:21 UTC


README

license Build Status Coverage Status

基于HTTP的文件同步库,使用公钥认证。

此库可用于从私有源安装或更新应用程序,同步数据文件或任何您能想到的您可能需要rsync功能但又能通过PHP轻松控制的情况。

设置

在远程服务器上创建脚本,例如在服务器上创建sync.php,以便Client与其通信。

use FileSync\Server;
$server = new Server(__DIR__ . '/storage/keys');
$server->dispatch('/server/data');

从脚本或您的应用程序中调用Clientdispatch方法

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