/** * 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(); }
/** * 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(); }