falc/flysystem-sftp-symlink-plugin

Flysystem 的 Sftp 符号链接插件。

v1.2.0 2015-12-13 11:42 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:18:37 UTC


README

需求

安装

使用 Composer

composer require falc/flysystem-sftp-symlink-plugin

或者手动添加

{
    "require": {
        "falc/flysystem-sftp-symlink-plugin": "1.*"
    }
}

用法

此插件需要一个使用 Sftp 适配器Filesystem 实例。

use Falc\Flysystem\Plugin\Symlink\Sftp as SftpSymlinkPlugin;
use League\Flysystem\Adapter\Sftp as SftpAdapter;
use League\Flysystem\Filesystem;

$filesystem = new Filesystem(new SftpAdapter(array(
    'host' => 'example.com',
    'port' => 22,
    'username' => 'username',
    'password' => 'password',
    'privateKey' => 'path/to/or/contents/of/privatekey',
    'root' => '/',
    'timeout' => 10
)));

符号链接

使用 symlink($target, $symlink) 来创建符号链接。

$filesystem->addPlugin(new SftpSymlinkPlugin\Symlink());

$success = $filesystem->symlink('/tmp/some/target', '/tmp/symlink');

删除符号链接

使用 deleteSymlink($symlink) 来删除符号链接。

$filesystem->addPlugin(new SftpSymlinkPlugin\DeleteSymlink());

$success = $filesystem->deleteSymlink('/tmp/symlink');

检查符号链接

使用 isSymlink($filename) 来检查一个文件是否存在且为符号链接。

$filesystem->addPlugin(new SftpSymlinkPlugin\IsSymlink());

$isSymlink = $filesystem->isSymlink('/tmp/symlink');

完整路径和相对路径

上述示例展示了如何使用 / 作为根和完整路径创建符号链接。但也可以使用相对路径。

use Falc\Flysystem\Plugin\Symlink\Sftp as SftpSymlinkPlugin;
use League\Flysystem\Adapter\Sftp as SftpAdapter;
use League\Flysystem\Filesystem;

$filesystem = new Filesystem(new SftpAdapter(array(
    'host' => 'example.com',
    'port' => 22,
    'username' => 'username',
    'password' => 'password',
    'privateKey' => 'path/to/or/contents/of/privatekey',
    'root' => '/home/falc',
    'timeout' => 10
)));

$filesystem->addPlugin(new SftpSymlinkPlugin\Symlink());
$filesystem->addPlugin(new SftpSymlinkPlugin\IsSymlink());
$filesystem->addPlugin(new SftpSymlinkPlugin\DeleteSymlink());

// Result: /home/falc/flytest -> /home/falc/projects/cli/flytest
$filesystem->symlink('projects/cli/flytest', 'flytest');

// It is possible to check it or delete it in the same way:
$isSymlink = $filesystem->isSymlink('flytest');
$filesystem->deleteSymlink('flytest');