/**
  * Perform backup
  * @return string
  */
 public static function create()
 {
     $collection = new Collection();
     $locations = Helper::getPreparedLocations();
     foreach ($locations as $type => $dirs) {
         foreach ($dirs as $name => $path) {
             Helper::checkr($path, $collection);
         }
     }
     if (count($collection->getNotReadable()) || count($collection->getNotWritable())) {
         $e = new PermissionException();
         $e->setCollection($collection);
         throw $e;
     }
     try {
         Helper::mkdir(self::getPath(), true);
         foreach ($locations as $type => $dirs) {
             $backupFullPath = self::getPath() . '/' . $type . '/';
             Helper::mkdir($backupFullPath, true);
             foreach ($dirs as $name => $path) {
                 Helper::copyr($path, $backupFullPath . $name);
             }
         }
     } catch (\Exception $e) {
         App::log('Backup creation failed. Disk full?');
         self::cleanUp();
         throw new FsException($e->getMessage());
     }
     return self::getPath();
 }
Exemple #2
0
 /**
  * Perform backup
  * @return string
  */
 public static function create($version)
 {
     $collection = new Collection();
     $installed = Helper::getDirectories();
     $sources = Helper::getSources($version);
     $thirdPartyUpdater = new \OCA\Updater\Location\Thirdparty($installed[Helper::THIRDPARTY_DIRNAME], $sources[Helper::THIRDPARTY_DIRNAME]);
     $coreUpdater = new \OCA\Updater\Location\Core($installed[Helper::CORE_DIRNAME], $sources[Helper::CORE_DIRNAME]);
     $appUpdater = new \OCA\Updater\Location\Apps($installed[Helper::APP_DIRNAME], '');
     $thirdPartyFiles = $thirdPartyUpdater->collect(true);
     $coreFiles = $coreUpdater->collect(true);
     $appFiles = $appUpdater->collect(true);
     $locations = array(Helper::THIRDPARTY_DIRNAME => $thirdPartyFiles['old'], Helper::CORE_DIRNAME => $coreFiles['old'], Helper::APP_DIRNAME => $appFiles['old']);
     foreach ($locations as $type => $dirs) {
         foreach ($dirs as $name => $path) {
             Helper::checkr($path, $collection);
         }
     }
     if (count($collection->getNotReadable()) || count($collection->getNotWritable())) {
         $e = new PermissionException();
         $e->setCollection($collection);
         throw $e;
     }
     try {
         Helper::mkdir(self::getPath(), true);
         foreach ($locations as $type => $dirs) {
             $backupFullPath = self::getPath() . '/' . $type . '/';
             Helper::mkdir($backupFullPath, true);
             foreach ($dirs as $name => $path) {
                 Helper::copyr($path, $backupFullPath . $name);
             }
         }
     } catch (\Exception $e) {
         \OC::$server->getLogger()->error('Backup creation failed. Disk full?', ['app' => 'updater']);
         self::cleanUp();
         throw new FsException($e->getMessage());
     }
     return self::getPath();
 }