Exemplo n.º 1
0
 /**
  * Cleanup your backup directory.
  *
  * @see    \phpbu\App\Backup\Cleanup::cleanup()
  * @param  \phpbu\App\Backup\Target    $target
  * @param  \phpbu\App\Backup\Collector $collector
  * @param  \phpbu\App\Result           $result
  * @throws \phpbu\App\Backup\Cleaner\Exception
  */
 public function cleanup(Target $target, Collector $collector, Result $result)
 {
     $files = $collector->getBackupFiles();
     $size = $target->getSize();
     /** @var \phpbu\App\Backup\File $file */
     foreach ($files as $file) {
         $size += $file->getSize();
     }
     // backups exceed capacity?
     if ($size > $this->capacityBytes) {
         // oldest backups first
         ksort($files);
         while ($size > $this->capacityBytes && count($files) > 0) {
             $file = array_shift($files);
             $size -= $file->getSize();
             if (!$file->isWritable()) {
                 throw new Exception(sprintf('can\'t delete file: %s', $file->getPathname()));
             }
             $result->debug(sprintf('delete %s', $file->getPathname()));
             $file->unlink();
         }
         // deleted all old backups but still exceeding the space limit
         // delete the currently created backup as well
         if ($this->deleteTarget && $size > $this->capacityBytes) {
             $target->unlink();
         }
     }
 }