Ниже в примерах используется имя диска
vdc; замените это значение на реальное имя диска в вашей системе. Проверить имена дисков можно, например, командой lsblk.
Монтирование резервной копии подразумевает подключение диска внутри операционной системы.
Для этого:
- Примонтируйте бэкап в панели управления (Резервные копии → нужный бэкап → кнопка «Смонтировать».
Примонтируйте бэкап внутри ОС. Сделать это можно в консоли при помощи команды mount. Пример использования команды:
mount /dev/vdc1 /mnt
Для отключения диска необходимо сначала отключить его внутри операционной системы командой umount. Пример использования:
umount /dev/vdc1
После необходимо нажать на кнопку «Отключить» в панели управления сервером.
Отключить резервную копию из панели невозможно до тех пор, пока она используется внутри операционной системы.
Кто бэкап?
-
**
sdaиsda1** : -
Имеют атрибут
RO: 1, что означает “только для чтения” (Read-Only). Это ** очень характерно для бэкапов ** , чтобы защитить данные от случайных изменений. -
** Однако, у
sda1нет точки монтирования (MOUNTPOINT) ** . Это означает, что еслиsdaи является диском с бэкапом, то он ** на данный момент не примонтирован ** к файловой системе и его содержимое недоступно через обычные пути. -
**
vdaиvda1** : -
vda1примонтирован как корневая файловая система (/). Это основной системный диск, а не бэкап. -
Атрибут
RO: 0означает, что он доступен для чтения и записи.
Диск sda
(и его раздел sda1
) является наиболее вероятным кандидатом на то, чтобы *
быть *
бэкапом (из-за флага RO: 1
), но он **
не примонтирован **
. Если вам нужно получить доступ к данным на этом предполагаемом бэкапе, его нужно сначала примонтировать.
Чтобы примонтировать диск `
sda `
“(точнее, его раздел sda1
, так как обычно монтируют именно разделы, содержащие файловые системы), выполните следующие шаги:
- ** Создайте точку монтирования: **
Это пустая директория, куда будет “подключено” содержимое раздела sda1
.
sudo mkdir /mnt/mybackup
(Вы можете назвать директорию как угодно, например, /mnt/sda_disk
, /media/backup
и т.д. Я выбрал /mnt/mybackup
для примера.)
- **
Примонтируйте раздел
sda1: **
Поскольку lsblk
показал, что sda1
имеет атрибут RO: 1
(только для чтения), лучше всего монтировать его в режиме “только для чтения”, чтобы случайно не повредить данные.
sudo mount -o ro /dev/sda1 /mnt/mybackup
-
sudo: Команда выполняется с правами суперпользователя. -
mount: Команда монтирования. -
-o ro: Опция, указывающая монтировать в режиме “только для чтения” (read-only). -
/dev/sda1: Устройство, которое вы хотите примонтировать (первый раздел на дискеsda). -
/mnt/mybackup: Точка монтирования, которую вы создали на шаге 1.
Если по какой-то причине вам нужно монтировать его для записи (например, если вы уверены, что это не бэкап или вам нужно что-то на него записать, и вы готовы принять риски), то команда будет выглядеть так (но будьте осторожны, если RO:1
был установлен не случайно): *
# sudo mount /dev/sda1 /mnt/mybackup
В этом случае система может попытаться принудительно перемонтировать его в режиме чтения-записи, если это возможно на уровне устройства/файловой системы. *
- ** Проверьте, что диск примонтирован: **
Выполните снова lsblk
или df -h
:
lsblk
Вы должны увидеть /mnt/mybackup
(или выбранное вами имя) в столбце MOUNTPOINT
для sda1
.
Или:
df -h
Эта команда покажет все примонтированные файловые системы, их размер, использование и точки монтирования. Вы должны увидеть там /dev/sda1
, примонтированный к /mnt/mybackup
.
- ** Доступ к данным: **
Теперь содержимое раздела sda1
доступно в директории /mnt/mybackup
.
ls /mnt/mybackup cd /mnt/mybackup # и т.д.
- ** Отмонтирование (когда закончите работу): **
Когда вы закончите работать с данными на sda1
, его следует отмонтировать:
sudo umount /mnt/mybackup
Или можно указать устройство:
sudo umount /dev/sda1
** Возможные проблемы и их решения: **
- **
“mount: unknown filesystem type” **
: Если вы получите такую ошибку, это означает, что ядро не может автоматически определить тип файловой системы на
/dev/sda1. Вам нужно будет указать его явно с помощью опции-t. Например, если это ext4:
sudo mount -o ro -t ext4 /dev/sda1 /mnt/mybackup
Другие распространенные типы: 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). Она означает: -
-r: рекурсивно для директорий. -
-l: копировать символические ссылки как ссылки. -
-p: сохранять права доступа (permissions). -
-t: сохранять время модификации. -
-g: сохранять группу. -
-o: сохранять владельца (только для суперпользователя). -
-D: сохранять специальные файлы и файлы устройств (только для суперпользователя). -
-v(verbose): Показывать подробную информацию о процессе, то есть вы будете видеть, какие файлы копируются. -
-h(human-readable): Отображать размеры файлов в удобном для человека виде (KB, MB, GB). -
-P: Это то же самое, что--partial --progress. -
--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
Если нет, примонтируйте:
sudo mount -o ro /dev/sda1 /mnt/mybackup
- ** (Очень рекомендуется) Сначала выполните “сухой запуск” (dry run): **
Добавьте опцию -n
(или --dry-run
), чтобы посмотреть, что rsync *
собирается *
сделать, не внося никаких реальных изменений:
sudo rsync -avhnP —ignore-existing /mnt/mybackup/home/bitrix/www/upload/ /home/bitrix/www/upload/
Просмотрите вывод. Если он соответствует вашим ожиданиям (показывает только те файлы и папки, которых нет в целевой директории), тогда можно выполнять реальную команду.
- **
Проверьте наличие свободного места **
на целевом разделе (где находится
/home), если ожидается копирование большого объема данных.
df -h /home
** Выполнение реальной команды: **
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/
(Замените 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*/': -
--exclude=PATTERN: Эта опция указываетrsyncисключить файлы и директории, соответствующие заданномуPATTERN. -
'1c_catalog*/': -
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/
Внимательно просмотрите вывод. Убедитесь, что:
-
Директории
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/
Здесь \
в конце строки используется для переноса длинной команды на несколько строк для читаемости.
Эта команда должна точно соответствовать вашим требованиям.
Ищете надежного партнера по веб-разработке и автоматизации? Мы помогаем бизнесу расти с помощью современных технологий, автоматизации процессов и экспертного SEO. Свяжитесь с нами, чтобы обсудить вашу задачу.