[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: используем php для синхронизации по rsync через ss
saifuddin
Доброго времени суток.
Помогите разобраться с настройкой PHP.
Есть команда rsync, для синхронизации файлов. Сейчас есть два сервера cs1 и cs2. на обоих стоят ssh ключи без паролей.
Если ввести в терминале команду

rsync -rvzat --delete -e 'ssh -p 8055 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'  /var/www/editor/user/  user@cs2:/var/www/editor/user/


То происходит синхронизация. Теперь мне нужно добиться этого при помощи PHP.


<?php
//echo "fff";
//system("cat /home/user/.ssh/id_rsa.pub", $result);
//echo system("ssh -i/home/user/.ssh/id_rsa.pub user@cs2 ls /", $result);

$connection = ssh2_connect('cs2', 22, array('hostkey'=>'ssh-rsa'));

if (ssh2_auth_pubkey_file($connection, 'user',
'/home/user/.ssh/id_rsa.pub',
'/home/user/.ssh/id_rsa', '')) {
echo "Public Key Authentication Successful\n";
} else {
echo "Public Key Authentication Failed";
die('Public Key Authentication Failed');
}

//$stream = ssh2_exec($connection, 'ls -l /');
$stream = ssh2_exec($connection, 'system("rsync -rvzat --delete -e $connection /var/www/editor/user/ user@cs2:/var/www/editor/user/", $result);');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
echo stream_get_contents($stream_out);


Явно я что-то не так делаю. Помогите разобраться что нужно сделать, чтобы все заработало. Подключение по ключам происходит. Вот только выполнить команду не могу.

Я уже записал эту команду в баш скрипте и попробовал его запустить из терминала. Все работает. Но, если запускать через функцию system, то он не отрабатывает, потому, что там есть ssh. Без него он будет работать. Если rsync будет локально отрабатывать команду.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.