• Модуль: 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;
}