/**
* 将多个文件/目录通过tar + scp传输到指定的多个目标机
*
* @param Project $project
* @param TaskModel $task
* @return bool
* @throws \Exception
*/
public function scpCopyFiles(Project $project, TaskModel $task)
{
// 1. 宿主机 tar 打包
$this->_packageFiles($project, $task);
// 2. 传输 tar.gz 文件
foreach (Project::getHosts() as $remoteHost) {
// 循环 scp 传输
$this->_copyPackageToServer($remoteHost, $project, $task);
}
// 3. 目标机 tar 解压
$this->_unpackageFiles($project, $task);
return true;
}