Хостинг

Монтирование резервных копий

Монтирование резервных копий

Ниже в примерах используется имя диска vdc; замените это значение на реальное имя диска в вашей системе. Проверить имена дисков можно, например, командой lsblk.

 Монтирование резервной копии подразумевает подключение диска внутри операционной системы.


 Для этого:


- Примонтируйте бэкап в панели управления (Резервные копии → нужный бэкап → кнопка «Смонтировать».

Примонтируйте бэкап внутри ОС. Сделать это можно в консоли при помощи команды mount. Пример использования команды:

mount /dev/vdc1 /mnt

 Для отключения диска необходимо сначала отключить его внутри операционной системы командой `umount`. Пример использования:

umount /dev/vdc1

 После необходимо нажать на кнопку «Отключить» в панели управления сервером.

Отключить резервную копию из панели невозможно до тех пор, пока она используется внутри операционной системы.

Кто бэкап?

-

** sda и sda1 ** :

	<li>
	Имеют атрибут `
	RO: 1 `
	, что означает “только для чтения” (Read-Only). Это **
	очень характерно для бэкапов **
	, чтобы защитить данные от случайных изменений.

	-  **
	Однако, у `
	sda1 `
	нет точки монтирования ( `
	MOUNTPOINT `
	) **
	. Это означает, что если `
	sda `
	и является диском с бэкапом, то он **
	на данный момент не примонтирован **
	к файловой системе и его содержимое недоступно через обычные пути.
-

** vda и vda1 ** :

	<li> `
	vda1 `
	примонтирован как корневая файловая система ( `
	/ `
	). Это основной системный диск, а не бэкап.

	-
	Атрибут `
	RO: 0 `
	означает, что он доступен для чтения и записи.
 Диск `
sda `
(и его раздел `
sda1 `
) является наиболее вероятным кандидатом на то, чтобы *
быть *
бэкапом (из-за флага `
RO: 1 `
), но он **
не примонтирован **
. Если вам нужно получить доступ к данным на этом предполагаемом бэкапе, его нужно сначала примонтировать.

Чтобы примонтировать диск `

sda `

“(точнее, его раздел sda1 , так как обычно монтируют именно разделы, содержащие файловые системы), выполните следующие шаги:

-

** Создайте точку монтирования: **

	 Это пустая директория, куда будет “подключено” содержимое раздела `
	sda1 `
	.



       `
    `sudo mkdir /mnt/mybackup`
  `    </pre>

	 (Вы можете назвать директорию как угодно, например, `
	/mnt/sda_disk `
	, `
	/media/backup `
	и т.д. Я выбрал `
	/mnt/mybackup `
	для примера.)





-

** Примонтируйте раздел sda1 : **

	 Поскольку `
	lsblk `
	показал, что `
	sda1 `
	имеет атрибут `
	RO: 1 `
	(только для чтения), лучше всего монтировать его в режиме “только для чтения”, чтобы случайно не повредить данные.



       `
    `sudo mount -o ro /dev/sda1 /mnt/mybackup`
  `    </pre>


	<li> `
	sudo `
	: Команда выполняется с правами суперпользователя.

	-  `
	mount `
	: Команда монтирования.

	-  `
	-o ro `
	: Опция, указывающая монтировать в режиме “только для чтения” (read-only).

	-  `
	/dev/sda1 `
	: Устройство, которое вы хотите примонтировать (первый раздел на диске `
	sda `
	).

	-  `
	/mnt/mybackup `
	: Точка монтирования, которую вы создали на шаге 1.

* Если по какой-то причине вам нужно монтировать его для записи (например, если вы уверены, что это не бэкап или вам нужно что-то на него записать, и вы готовы принять риски), то команда будет выглядеть так (но будьте осторожны, если RO:1 был установлен не случайно): *

       `
    `# sudo mount /dev/sda1 /mnt/mybackup`
  `    </pre>

* В этом случае система может попытаться принудительно перемонтировать его в режиме чтения-записи, если это возможно на уровне устройства/файловой системы. *

-

** Проверьте, что диск примонтирован: **

	 Выполните снова `
	lsblk `
	или `
	df -h `
	:



       `
    `lsblk`
  `    </pre>

	 Вы должны увидеть `
	/mnt/mybackup `
	(или выбранное вами имя) в столбце `
	MOUNTPOINT `
	для `
	sda1 `
	.

	 Или:



       `
    `df -h`
  `    </pre>

	 Эта команда покажет все примонтированные файловые системы, их размер, использование и точки монтирования. Вы должны увидеть там `
	/dev/sda1 `
	, примонтированный к `
	/mnt/mybackup `
	.





-

** Доступ к данным: **

	 Теперь содержимое раздела `
	sda1 `
	доступно в директории `
	/mnt/mybackup `
	.



       `
    `ls /mnt/mybackup cd /mnt/mybackup # и т.д.`
  `    </pre>

-

** Отмонтирование (когда закончите работу): **

	 Когда вы закончите работать с данными на `
	sda1 `
	, его следует отмонтировать:



       `
    `sudo umount /mnt/mybackup`
  `    </pre>

	 Или можно указать устройство:



       `
    `sudo umount /dev/sda1`
  `    </pre>

** Возможные проблемы и их решения: **

-

** “mount: unknown filesystem type” ** : Если вы получите такую ошибку, это означает, что ядро не может автоматически определить тип файловой системы на /dev/sda1 . Вам нужно будет указать его явно с помощью опции -t . Например, если это ext4:

       `
    `sudo mount -o ro -t ext4 /dev/sda1 /mnt/mybackup`
  `
</pre>

	 Другие распространенные типы: `
	xfs `
	, `
	ntfs `
	(потребуется `
	ntfs-3g `
	), `
	vfat `
	. Вы можете попробовать угадать или использовать команду `
	sudo blkid /dev/sda1 `
	или `
	sudo file -s /dev/sda1 `
	чтобы попытаться определить тип файловой системы.





-

** “mount point /mnt/mybackup does not exist” ** : Убедитесь, что вы создали директорию на шаге 1.

-

** “you must be root to do that” ** : Большинство команд монтирования требуют прав суперпользователя, поэтому используйте sudo .

 Начните с команды `
sudo mount -o ro /dev/sda1 /mnt/mybackup `
. Скорее всего, она сработает.

 Хорошо, для этой задачи идеально подойдет команда `
rsync `
. Она очень гибкая и позволяет делать именно то, что вы хотите.

** Команда будет выглядеть так: **

sudo rsync -avhP --ignore-existing /mnt/mybackup/home/bitrix/www/upload/ /home/bitrix/www/upload/

 Давайте разберем опции:


-  `
sudo `
: Копирование в системные директории (такие как `
/home/bitrix/www/upload/ `
) и сохранение прав доступа обычно требует прав суперпользователя.

-  `
rsync `
: Сама команда.

-  `
-a `
(archive): Это сокращение для набора опций ( `
-rlptgoD `
). Она означает:


	<li> `
	-r `
	: рекурсивно для директорий.

	-  `
	-l `
	: копировать символические ссылки как ссылки.

	-  `
	-p `
	: сохранять права доступа (permissions).

	-  `
	-t `
	: сохранять время модификации.

	-  `
	-g `
	: сохранять группу.

	-  `
	-o `
	: сохранять владельца (только для суперпользователя).

	-  `
	-D `
	: сохранять специальные файлы и файлы устройств (только для суперпользователя).
- ` -v ` (verbose): Показывать подробную информацию о процессе, то есть вы будете видеть, какие файлы копируются.
-  `
-h `
(human-readable): Отображать размеры файлов в удобном для человека виде (KB, MB, GB).

-  `
-P `
: Это то же самое, что `
--partial --progress `
.


	<li> `
	--progress `
	: Показывать прогресс копирования для каждого файла (особенно полезно для больших файлов).

	-  `
	--partial `
	: Если передача прервется, при следующем запуске `
	rsync `
	сможет докачать частично скопированные файлы.
- ` --ignore-existing ` : ** Это ключевая опция для вашей задачи. ** Она указывает ` rsync ` пропускать любые файлы, которые уже существуют в целевой директории. Новые файлы и директории будут скопированы.
-  `
/mnt/mybackup/home/bitrix/www/upload/ `
: **
Источник. **
Обратите внимание на слеш `
/ `
в конце. Это важно! Он означает “копировать содержимое этой папки”, а не саму папку.

-  `
/home/bitrix/www/upload/ `
: **
Назначение. **

** Перед выполнением: **

-

** Убедитесь, что sda1 примонтирован к /mnt/mybackup ** :

       `
    `lsblk df -h | grep /mnt/mybackup`
  `    </pre>

	 Если нет, примонтируйте:



       `
    `sudo mount -o ro /dev/sda1 /mnt/mybackup`
  `    </pre>

-

** (Очень рекомендуется) Сначала выполните “сухой запуск” (dry run): **

	 Добавьте опцию `
	-n `
	(или `
	--dry-run `
	), чтобы посмотреть, что `
	rsync ` *
	собирается *
	сделать, не внося никаких реальных изменений:



       `
    `sudo rsync -avhnP --ignore-existing /mnt/mybackup/home/bitrix/www/upload/ /home/bitrix/www/upload/`
  `    </pre>

	 Просмотрите вывод. Если он соответствует вашим ожиданиям (показывает только те файлы и папки, которых нет в целевой директории), тогда можно выполнять реальную команду.





-

** Проверьте наличие свободного места ** на целевом разделе (где находится /home ), если ожидается копирование большого объема данных.

       `
    `df -h /home`
  `    </pre>

** Выполнение реальной команды: **

sudo rsync -avhP --ignore-existing /mnt/mybackup/home/bitrix/www/upload/ /home/bitrix/www/upload/

 Вы увидите список файлов и директорий, которые копируются, а также общий прогресс.

** После копирования: **

-

	 Проверьте, что нужные файлы и папки появились в `
	/home/bitrix/www/upload/ `
	.





-

	 Убедитесь, что права доступа и владелец файлов корректны. Опция `
	-a `
	в `
	rsync `
	старается их сохранить. Если владелец на бэкапе был, например, `
	bitrix:bitrix `
	, то и на целевой системе он должен остаться таким же (если пользователь `
	bitrix `
	с тем же UID/GID существует). Если нет, то владельцем может стать `
	root `
	(потому что вы используете `
	sudo `
	). В этом случае может потребоваться дополнительно изменить владельца:



       `
    `sudo chown -R bitrix:bitrix /home/bitrix/www/upload/`
  `    </pre>

	 (Замените `
	bitrix:bitrix `
	на правильного пользователя и группу, если они другие.)






 Эта команда должна точно выполнить вашу задачу.


 Отлично, для этого используется опция `
--exclude `
в `
rsync `
.


 Команда будет выглядеть так:

sudo rsync -avhP --ignore-existing --exclude='1c_catalog*/' /mnt/mybackup/home/bitrix/www/upload/ /home/bitrix/www/upload/

 Давайте разберем добавленную часть:


-  `
--exclude='1c_catalog*/' `
:


	<li> `
	--exclude=PATTERN `
	: Эта опция указывает `
	rsync `
	исключить файлы и директории, соответствующие заданному `
	PATTERN `
	.

	-  `
	'1c_catalog*/' `
	:


		<li> `
		1c_catalog `
		: Часть имени, которую мы ищем.

		-  `
		* `
		: Звездочка (wildcard) означает “любое количество любых символов”. То есть, это будет соответствовать `
		1c_catalog_data `
		, `
		1c_catalog_files `
		, `
		1c_catalog_images_v2 `
		и т.д.

		-  `
		/ `
		: Слеш в конце шаблона для `
		--exclude `
		особенно важен. Он означает, что шаблон применяется **
		только к директориям **
		. Если бы слеша не было, то `
		rsync `
		исключил бы и файлы, начинающиеся с `
		1c_catalog `
		.

		-
		Кавычки `
		' ' `
		вокруг шаблона используются для того, чтобы оболочка (bash) не пыталась интерпретировать `
		* `
		самостоятельно.

** Как это работает: **

rsync будет просматривать все файлы и директории в источнике ( /mnt/mybackup/home/bitrix/www/upload/ ).

 Когда он встретит директорию, имя которой начинается с `
1c_catalog `
(например, `
1c_catalog_export `
, `
1c_catalog_temp `
и т.д.), он пропустит эту директорию и все ее содержимое.

 Затем, для всех остальных файлов и директорий, он проверит, существуют ли они в целевой папке ( `
/home/bitrix/www/upload/ `
) из-за опции `
--ignore-existing `
. Если не существуют, они будут скопированы.

** Перед выполнением: **

-

** Убедитесь, что sda1 примонтирован к /mnt/mybackup ** (если вы его отмонтировали).

-

** (ОЧЕНЬ РЕКОМЕНДУЕТСЯ) Сначала выполните “сухой запуск” (dry run): **

	 Добавьте опцию `
	-n `
	(или `
	--dry-run `
	), чтобы посмотреть, что `
	rsync ` *
	собирается *
	сделать, не внося никаких реальных изменений:



       `
    `sudo rsync -avhnP --ignore-existing --exclude='1c_catalog*/' /mnt/mybackup/home/bitrix/www/upload/ /home/bitrix/www/upload/`
  `    </pre>

	 Внимательно просмотрите вывод. Убедитесь, что:





	<li>
	Директории `
	1c_catalog* `
	НЕ появляются в списке файлов, которые будут скопированы (они могут быть упомянуты как “excluding”).

	-
	Файлы, которые уже существуют в `
	/home/bitrix/www/upload/ `
	, НЕ появляются в списке (они должны быть пропущены из-за `
	--ignore-existing `
	).

	-
	Показываются только те файлы и папки (не `
	1c_catalog* `
	), которых нет в целевой директории.
-

** Проверьте наличие свободного места ** на целевом разделе.

** Выполнение реальной команды: **

 Если “сухой запуск” выглядит правильно, выполняйте команду без `
-n `
:

sudo rsync -avhP --ignore-existing --exclude='1c_catalog*/' /mnt/mybackup/home/bitrix/www/upload/ /home/bitrix/www/upload/

** Если нужно исключить несколько разных шаблонов: **

 Вы можете использовать опцию `
--exclude `
несколько раз:

sudo rsync -avhP --ignore-existing \ --exclude='1c_catalog*/' \ --exclude='temp_files/' \ --exclude='*.tmp' \ /mnt/mybackup/home/bitrix/www/upload/ /home/bitrix/www/upload/

 Здесь `
\ `
в конце строки используется для переноса длинной команды на несколько строк для читаемости.


 Эта команда должна точно соответствовать вашим требованиям.