我在不同的网站上使用过这个脚本(https://github.com/backup-manager/backup-manager),效果很好。 在一个单一的我有一个问题:Filesystem.php第395行中的FileExistsException: 文件已存在于路径:5693d2350eb67test.sql.gz (这与每个网站上的代码完全相同)
我已在silex / Symfony应用程序中实现了此脚本。 我的所有网站都在同一个Debian服务器上。
你知道在哪里寻找吗? 也许关于服务器配置,文件夹权限......
非常感谢你帮助我。抱歉我的英文不好;)
这是我打电话的功能:
public function restoreAction($id, Application $app) {
$manager = require 'BootstrapController.php';
$sauvegarde = $app['dao.sauvegarde']->findbyId($id);
$nomfichier = $sauvegarde->getNomfichier();
$nomfichiergz = $nomfichier.'.gz';
$sauvegardesnext = $app['dao.sauvegarde']->findlaterthan($id);
$manager->makeRestore()->run('local',$nomfichiergz, 'production', 'gzip');
//On recrée le fichier de sauvegarde correspondant a la restauration effectuée
//car ce putain de backupDB nous le supprime
$manager->makeBackup()->run('production', 'local', $nomfichier, 'gzip');
//On supprime le fichier sql temp
//$urlfichier = $app['dossiersave'].$nomfichier;
//$fs->remove($urlfichier);
//On supprime de la bdd les sauvegardes qui n'ont plus de fichier save sur le disque
//effectivement quand on fait la 2 ou + eme sauvegarde, celui ci mémorise les sauvegardes précedentes
//mais si entre temps l'utilisateur les supprime, celle-ci ne devrait plus aparaitre
//elles sont pourtant ds le fichier savedb qu'on avait effectué avant car elle n'étaient pas supprimées a ce moment la !
//
$sauvegardes = $app['dao.sauvegarde']->findAll();
foreach ($sauvegardes as $sauvegarde) {
$fs = new Filesystem();
if (($fs->exists($app['dossiersave'].$sauvegarde->getNomfichier().'.gz')) == false) {
// On supprime la sauvegarde en bdd
$app['dao.sauvegarde']->delete($sauvegarde->getId());
}
}
//On recrée les points de sauvegarde ulterieur a la restauration car elles ne sont
//plus en bdd
foreach ($sauvegardesnext as $savedb) {
$savecurrent = new Sauvegarde();
//$savecurrent->setId($savedb->getId());
$savecurrent->setDate($savedb->getDate());
$savecurrent->setNom($savedb->getNom());
$savecurrent->setNomfichier($savedb->getNomfichier());
$app['dao.sauvegarde']->save($savecurrent);
}
$fs = new Filesystem();
$fs->mirror($app['dossiersave'].'images'.$sauvegarde->getNom().'_'.$id,$app['dossierimages'],null,$options = array('delete' => true, 'override' => true ));
$app['session']->getFlashBag()->add('success', 'Votre sauvegarde ' .$sauvegarde->getNom(). ' a bien été restaurée');
return $app->redirect ('/admin');
}