- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/backup.php
- Класс: CBackup
- Вызов: CBackup::ignorePath
static function ignorePath($path)
{
if (!file_exists($path)) // in case of wrong symlinks
return true;
if (!self::$REAL_DOCUMENT_ROOT_SITE)
self::$REAL_DOCUMENT_ROOT_SITE = realpath(self::$DOCUMENT_ROOT_SITE);
## Ignore paths
static $ignore_path;
if (!$ignore_path)
$ignore_path = array(
BX_PERSONAL_ROOT."/cache",
BX_PERSONAL_ROOT."/cache_image",
BX_PERSONAL_ROOT."/managed_cache",
BX_PERSONAL_ROOT."/managed_flags",
BX_PERSONAL_ROOT."/stack_cache",
BX_PERSONAL_ROOT."/html_pages",
BX_PERSONAL_ROOT."/tmp",
BX_ROOT."/tmp",
BX_ROOT."/help",
BX_ROOT."/updates",
'/'.COption::GetOptionString("main", "upload_dir", "upload")."/tmp",
'/'.COption::GetOptionString("main", "upload_dir", "upload")."/resize_cache",
);
foreach($ignore_path as $value)
if(self::$DOCUMENT_ROOT_SITE.$value == $path)
return true;
## Clouds
if (IntOption('dump_do_clouds'))
{
$clouds = self::$DOCUMENT_ROOT_SITE.BX_ROOT.'/backup/clouds/';
if (mb_strpos($path, $clouds) === 0 || mb_strpos($clouds, $path) === 0)
return false;
}
## Backups
if (mb_strpos($path, self::$DOCUMENT_ROOT_SITE.BX_ROOT.'/backup/') === 0)
return true;
## Symlinks
if (is_dir($path))
{
if (is_link($path))
{
if (mb_strpos(realpath($path), self::$REAL_DOCUMENT_ROOT_SITE) !== false) // если симлинк ведет на папку внутри структуры сайта
return true;
}
} ## File size
elseif (($max_file_size = IntOption("dump_max_file_size")) > 0 && filesize($path) > $max_file_size * 1024)
return true;
## Skip mask
if (CBackup::skipMask($path))
return true;
## Kernel vs Public
$dump_file_public = IntOption('dump_file_public');
$dump_file_kernel = IntOption('dump_file_kernel');
if ($dump_file_public == $dump_file_kernel) // если обе опции либо включены либо выключены
return !$dump_file_public;
if (mb_strpos(self::$DOCUMENT_ROOT_SITE.BX_ROOT, $path) !== false) // на пути к /bitrix
return false;
if (mb_strpos($path, self::$DOCUMENT_ROOT_SITE.BX_ROOT) === false) // за пределами /bitrix
return !$dump_file_public;
$path_root = mb_substr($path, mb_strlen(self::$DOCUMENT_ROOT_SITE));
if (preg_match('#^/bitrix/(.settings.php|php_interface|templates)/([^/]*)#',$path_root.'/',$regs))
return !$dump_file_public;
if (preg_match('#^/bitrix/(activities|components|gadgets|wizards)/([^/]*)#',$path_root.'/',$regs))
{
if (!$regs[2])
return false;
if ($regs[2] == 'bitrix')
return !$dump_file_kernel;
return !$dump_file_public;
}
// всё остальное в папке bitrix - ядро
return !$dump_file_kernel;
}