phpseclib:SFTPの練習

phpseclibを使って、SFTPサーバにログイン。
カレントディレクトリのファイルリストを表示してみます。

use Sinner\Phpseclib\Net\Net_SFTP as NetSftp;

$targetPattern = '/^data_/';

$sftp = new NetSftp('127.0.0.1');
$sftp->login('username', 'passwd');

// rawlist()は、キーがファイル/ディレクトリ名の連想配列を返します
$files = $sftp->rawlist();
// ソートは後回しにした方がいいけれど
krsort($files);

foreach ($files as $file => $attr) {
    // パターンマッチしてみたり
    if (!preg_match($targetPattern, $file)) {
        continue;
    }
    // 普通のファイルだけを対象に
    if ($attr['type'] != NET_SFTP_TYPE_REGULAR) {
        continue;
    }
    // 空ファイルは無視するとか
    if (!intval($attr['size'])) {
        continue;
    }

    print "${file} : {$attr['size']} byte\n";
}

うんうん。