Smbclient положить не могу найти мой локальный диск?
Я пытаюсь сделать резервную копию моей базы данных на другой жесткий диск, используя PHP/Samba. Но это не работает, и я застрял.
$dbBackup = 'backup_location.gz.des3';
if (!file_exists($dbBackup)) {
throw new Exception("Today's backup does not exist!" . $dbBackup);
}
$dbBackup = realpath($dbBackup);
// create path to save on local drive
$savePath = 'folder\subfolder\\' . date('Y') . '\db\bu\\' . date('n') . '\\';
$savePath .= basename($dbBackup);
// build up SMBClient command
$command = 'smbclient';
$command .= ' -N'; // no-pass
$command .= ' -U ' . escapeshellarg($username) . '%' . escapeshellarg($password); // username/password
$command .= ' -O "TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192"'; // some options
$command .= ' -d 0'; // debug level
$command .= ' ' . escapeshellarg($share); // share name, it is \\x.x.com\x\x\x\x\".
$command .= ' -c ' . escapeshellarg('put ' . $dbBackup . ' ' . $savePath); // command to execute
// execute command on shell
$output = shell_exec($command);
// try to detect error's
if (stripos($output, 'NT_STATUS_') !== false) {
throw new Exception($output);
}
Используя этот код, я получаю эту ошибку: NT_STATUS_OBJECT_PATH_NOT_FOUND
Ошибка дает путь, который она не может найти. Я могу посетить путь, но файл явно не там.
Я очень уверен, что все пути правильны, как и учетные данные пользователя.
Я делаю что-то неправильно? опечатка или что-нибудь? Я застрял на этом в течение нескольких недель.
Заранее благодарю за любую помощь!
1 ответ
Решение
Проблема заключалась в том, что диск, на который я помещал файл, находился в другой рабочей группе.
я добавил -W MYCORRECTWORKGROUP
в команду, и это снова работает!