Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- ob_implicit_flush();
- $dests = array(
- array('url' => '/root/.saves/'),
- array('protocol' =>'ftp',
- 'login' => 'ruedesflo',
- 'pass' => 'kikoulol',
- 'host' => 'xx.xx.xx.xx',
- 'dir' => '/.saves/mirage/'
- )
- );
- /**
- * [name, saveLastTime, saveInterval,
- * destinations:[url]
- * pour les destinations ftp :
- * $match[0] = ftp://username:password@sld.domain.tld/path1/path2/
- *
- *
- *
- */
- $dbs = array(
- array(
- 'name' => 'conc_epita17',
- 'saveLastTime' => 0,
- 'saveInterval' => 60*60*24,
- 'saveNb' => 3,
- 'destinations' => $dests
- )
- );
- $userDb = array(
- 'name' => 'root',
- 'pass' => 'dfgdfgf'
- );
- $tempDir = '/root/';
- $mysqlDumpCmd = "mysqldump";
- $ext = 'sql';
- $extGz = 'gz';
- $nbDb = count($dbs);
- // Décommenter pour faire fonctionner le script en boucle
- //while (1)
- {
- for ($i=0; $i < $nbDb; $i++)
- {
- $db =& $dbs[$i];
- $time = time();
- if ( $time > $db['saveLastTime'] + $db['saveInterval'] )
- {
- echo "Sauvegarde de $db[name]\n";
- $date = date("Y-m-d-h-i-s");
- $fileName=$db['name'].'-'.$date;
- $saveAction;
- $cmd = "$mysqlDumpCmd --opt --skip-extended-insert --complete-insert --user=$userDb[name]";
- $cmd .= (!empty($userDb['pass'])) ? " --password=$userDb[pass]" : '';
- $cmd .= " $db[name] | gzip -v > $tempDir$fileName.gz";
- exec($cmd, $retRaw, $retCode);
- foreach ($db['destinations'] as $destination)
- {
- $exists = 0;
- if (!empty($destination['url']))
- {
- echo "Copie locale sur $destination[url]\n";
- $dirList = glob($destination['url'].$db['name'].'*.gz');
- $nbSaves = count($dirList);
- if ($nbSaves > $db['saveNb']) {
- $files = array();
- foreach ($dirList as $file)
- $files[filemtime($file)] = $file;
- ksort($files);
- for ($i=$nbSaves, $j=0; $i > $db['saveNb']; $i--) {
- $fileToDel = $dirList[$j];
- echo "Suppression de $fileToDel\n";
- unlink($fileToDel);
- $j++;
- }
- }
- copy($tempDir.$fileName.'.gz',$destination['url'].$fileName.'.gz');
- }
- else
- {
- $ftp = getFtpConnection($destination);
- if ($ftp == false){
- echo "Copie impossible.\n";
- continue;
- }
- echo "Copie distance sur $destination[host]\n";
- $dirList = ftp_nlist($ftp, '.');
- $files = array();
- foreach ($dirList as $file) {
- if (strpos($file, $db['name']) !== false)
- {
- $mfile = ftp_mdtm($ftp, $file);
- $files[$mfile] = $file;
- }
- }
- $nbSaves = count($files);
- if ($nbSaves > $db['saveNb']) {
- ksort($files);
- for ($i=$nbSaves; $i > $db['saveNb']; $i--) {
- $fileToDel = current($files);
- echo "Suppression distante de $fileToDel\n";
- ftp_delete($ftp, $fileToDel);
- next($files);
- }
- }
- $success = ftp_put($ftp, $fileName.'.gz', $tempDir.$fileName.'.gz', FTP_BINARY);
- echo "Copie OK \n";
- ftp_close($ftp);
- }
- }
- unlink("$tempDir$fileName.gz");
- $db['saveLastTime'] = time();
- }
- }
- //sleep(10);
- }
- function getFtpConnection($data)
- {
- $conn = ftp_connect($data['host']);
- if ($conn === false)
- return false;
- // Login
- if (ftp_login($conn, $data['login'], $data['pass']))
- {
- // Change the dir
- ftp_chdir($conn, $data['dir']);
- // Return the resource
- return $conn;
- }
- // Or retun null
- return null;
- }
- ?>
Add Comment
Please, Sign In to add comment