Диск с базой 1С перестал читаться: снимаем образ, достаём 1CD и проверяем данные
Содержание
Если сломался жёсткий диск с базой 1С, первое действие — выключить компьютер и больше не включать с этим диском, пока не снят посекторный образ. Восстанавливают данные с образа, а не с живого диска: каждый лишний запуск Windows, проверка chkdsk или попытка «просто скопировать папку» добивает повреждённые сектора. Файловая база 1С — это один файл 1Cv8.1CD, и шансы вернуть его целиком высокие, если не торопиться.
Частое заблуждение — что базу спасёт любая программа восстановления файлов. На деле порядок такой: оценить состояние диска, снять образ, достать из образа файл базы, проверить его утилитой chdbfl.exe и тестированием в Конфигураторе. Для клиент-серверной базы на MS SQL или PostgreSQL цепочка другая — ищут не 1CD, а файлы СУБД или её бэкапы.
Диагностика: насколько всё плохо с диском
От первых 10 минут зависит, удастся ли восстановить файлы 1С самостоятельно или диск нужно сразу нести в лабораторию.
Признаки физической неисправности, при которых диск немедленно обесточивают:
- 🔊 стук, щелчки, скрежет, циклический звук «раскрутка — остановка»;
- 🧊 диск не определяется в BIOS или определяется с нулевым объёмом;
- 🔥 запах гари от платы электроники;
- ⏳ система зависает на минуты при обращении к любому файлу.
Со стуком и щелчками диск не подключают снова «ещё разок проверить». Головки царапают пластины, и через несколько включений восстанавливать будет нечего. Такой диск — только в лабораторию.
Если звуков нет и диск виден, подключите его вторым накопителем к исправному компьютеру. Загружаться с повреждённого диска нельзя: Windows при старте пишет на системный раздел, а может и запустить проверку файловой системы.
Состояние смотрят по SMART. В Windows подойдёт CrystalDiskInfo, в Linux — smartctl:
sudo smartctl -a /dev/sdb
На что смотреть в отчёте:
| Атрибут | Что означает | Вывод |
|---|---|---|
| Reallocated Sectors Count | Сектора, уже заменённые резервными | Растёт — диск деградирует |
| Current Pending Sector | Нестабильные сектора, ждут переназначения | Больше нуля — снимать образ немедленно |
| Uncorrectable Sector Count | Сектора, которые не читаются | Часть данных придётся вычитывать повторами |
| UDMA CRC Error Count | Ошибки передачи по кабелю | Сначала замените SATA-кабель |
Если растут только ошибки CRC, проблема часто в кабеле или разъёме, а не в самом диске. Замена кабеля иногда возвращает доступ к базе без всякого восстановления.
С SSD отдельная история. Когда контроллер умер, накопитель пропадает целиком или показывает странный объём вроде 8 МБ — программными средствами это не лечится. А удалённые с SSD файлы почти не вернуть: команда TRIM очищает освободившиеся блоки.
Посекторный образ повреждённого диска
Образ — это побайтная копия всего диска в файл или на другой диск. С ним можно делать что угодно и сколько угодно раз, не трогая оригинал.
Что подготовить заранее:
- Чистый исправный диск объёмом больше повреждённого. Под образ диска на 1 ТБ нужно минимум 1 ТБ свободного места.
- Загрузочную флешку с Linux, где есть GNU ddrescue, — подойдёт почти любой live-дистрибутив или SystemRescue.
- Отдельный порт SATA или надёжный переходник USB–SATA с внешним питанием.
Снимать образ лучше в два прохода. Первый быстро забирает всё, что читается легко, и пропускает проблемные места. Второй возвращается к пропущенному и пробует вычитать его повторами:
# первый проход: без «скрёба» по битым местам
sudo ddrescue -n /dev/sdb /mnt/backup/disk.img /mnt/backup/disk.map
# второй проход: прямой доступ, три повтора по плохим секторам
sudo ddrescue -d -r3 /dev/sdb /mnt/backup/disk.img /mnt/backup/disk.map
Файл disk.map — журнал: в нём записано, какие участки уже прочитаны. Если диск отвалился посреди работы, перезапуск той же командой продолжит с места остановки.
Не перепутайте устройства. Источник (/dev/sdb в примере) — повреждённый диск, приёмник — файл на исправном диске. Если указать наоборот, ddrescue затрёт данные. Проверьте модель и объём командой lsblk -o NAME,SIZE,MODEL перед запуском.
Если нужен только раздел с базами, можно снимать образ раздела (/dev/sdb2), а не всего диска. Это быстрее и меньше нагружает умирающий накопитель.
Под Windows посекторный образ умеют снимать R-Studio, DMDE и аналоги с функцией «создать образ». Они тоже делают повторы по битым секторам, но с ddrescue проще управлять порядком чтения.
Как достать файлы 1С и базу данных из образа
Образ открывают программой восстановления данных: R-Studio, DMDE, TestDisk или их аналогами. Программа сама разбирает файловую систему NTFS, даже если Windows не может её смонтировать.
Что искать в первую очередь:
- 📦
1Cv8.1CD— сама файловая база: все справочники, документы, проводки; - 📁
1Cv8Log— журнал регистрации, полезен, чтобы понять, что успели ввести; - 💾 файлы
.dt— выгрузки базы, если их когда-то делали; - 🗂 архивы
.zipиз папки автоматического резервного копирования; - 📄
.cfи.cfe— конфигурация и расширения, если в базе были доработки.
Путь к базе видно в окне запуска 1С: выделите базу в списке, внизу будет строка вида File="D:\Bases\Buh". Если окно запуска недоступно, этот путь хранится в файле ibases.v8i в профиле пользователя, папка %APPDATA%\1C\1CEStart.
Если файловая система не читается
Когда разметка разрушена и папки не видны, остаётся поиск по сигнатурам. Файл базы 1С 8 начинается с текстовой метки 1CDBMSV8 — по ней программы восстановления находят начало файла в «сыром» пространстве диска.
Проблема сигнатурного поиска — фрагментация. База в несколько гигабайт на рабочем диске почти всегда лежит кусками. Программа найдёт начало, но склеить фрагменты без таблицы файлов не сможет. Поэтому сначала пробуйте восстановить структуру NTFS, а сигнатуры оставьте на крайний случай.
Сравните найденные версии
Часто находятся сразу несколько файлов 1Cv8.1CD: рабочая база, старая копия, тестовая. Сравнивайте их по размеру и дате изменения. Рабочая база обычно самая большая и самая свежая.
| Что нашлось | Как поступить |
|---|---|
Целый 1Cv8.1CD без битых секторов | Скопировать на исправный диск и проверить |
1Cv8.1CD с нечитаемыми участками | Проверить chdbfl.exe, затем тестированием |
Только свежий .dt или архив бэкапа | Загрузить его в новую пустую базу |
| И база, и бэкап | Сравнить: сколько данных потеряно в каждом варианте |
Проверка и лечение восстановленной базы
Работают только с копией. Оставьте нетронутый экземпляр восстановленного файла в отдельной папке — если лечение испортит базу, будет откуда начать заново.
Шаг 1. Утилита chdbfl.exe
chdbfl.exe проверяет физическую целостность файла базы. Она лежит в папке bin установленной платформы, например C:\Program Files\1cv8\8.3.24.1342\bin\chdbfl.exe. Номер версии в пути у вас свой.
- Закройте все сеансы с этой базой.
- Запустите
chdbfl.exe, укажите путь к копии1Cv8.1CD. - Сначала проверьте без исправления.
- Если ошибки есть, отметьте флажок исправления обнаруженных ошибок и запустите ещё раз.
Утилита правит внутреннюю структуру файла: таблицы, индексы, служебные страницы. Записи, которые физически не прочитались с диска, она не вернёт — она только приводит файл в состояние, в котором платформа его откроет.
Шаг 2. Тестирование и исправление в Конфигураторе
Откройте базу в режиме Конфигуратора и выберите Администрирование → Тестирование и исправление. Для повреждённой после сбоя диска базы обычно включают:
- ✅ реиндексацию таблиц информационной базы;
- ✅ проверку логической целостности;
- ✅ проверку ссылочной целостности;
- ✅ пересчёт итогов;
- ✅ сжатие таблиц.
В блоке «Тестирование и исправление» укажите, что делать с битыми ссылками и частично потерянными объектами. Безопаснее создавать объекты вместо удалённых: так вы увидите, где именно пропали данные, и сможете их восстановить вручную.
Тестирование с исправлением требует монопольного доступа к базе, и на большой базе идёт часами. Запускайте его на копии, когда никто не работает, и не прерывайте процесс.
Шаг 3. Выгрузка в .dt и обратная загрузка
Если база открылась, сделайте выгрузку: Администрирование → Выгрузить информационную базу. Затем создайте новую пустую базу и загрузите туда этот .dt. Такая перекладка заново строит все таблицы и часто убирает «хвосты», которые остались после тестирования.
Шаг 4. Проверка учётных данных
Технически целая база ещё не значит, что данные полные. Пройдитесь по последним дням перед поломкой:
- Сверьте последние документы по журналу регистрации — что было введено, а что пропало.
- Сформируйте оборотно-сальдовую ведомость и сравните остатки по 50, 51, 60, 62 с выписками банка и данными контрагентов.
- Найдите объекты с пометкой «Объект не найден» — их создало тестирование вместо потерянных.
Базы на MS SQL и PostgreSQL: другой порядок
В клиент-серверном варианте файла 1CD нет. Данные лежат в СУБД, а сервер 1С хранит только реестр кластера со списком баз. Если сломался диск сервера, восстанавливают в первую очередь СУБД.
MS SQL Server
Варианты в порядке предпочтения:
- Есть бэкап
.bak. Восстановите его на исправном сервере командойRESTORE DATABASEили через SQL Server Management Studio. Если велось резервное копирование журнала транзакций, восстановите цепочку журналов до момента сбоя. - Из образа достали файлы
.mdfи.ldf. Подключите их к экземпляру SQL Server той же или более новой версии через присоединение базы (attach). - Есть только
.mdf, журнал потерян. Присоединение с пересозданием журнала возможно, если база была корректно закрыта. После аварии это часто не срабатывает.
После подключения проверьте базу:
DBCC CHECKDB (N'buh_base') WITH NO_INFOMSGS;
Если DBCC CHECKDB находит ошибки, режим REPAIR_ALLOW_DATA_LOSS удаляет повреждённые страницы вместе с данными. Применяйте его только на копии и только когда нет бэкапа.
PostgreSQL
Для PostgreSQL рабочая резервная копия — дамп pg_dump или физический бэкап через pg_basebackup. Если удалось достать каталог данных кластера целиком, его запускают на той же основной версии PostgreSQL, что стояла на сервере. Другая основная версия каталог не примет.
Регистрация базы в кластере 1С
Когда база в СУБД поднята, её нужно снова зарегистрировать в кластере 1С. В консоли администрирования серверов создайте информационную базу, укажите сервер СУБД, имя существующей базы данных и снимите флажок создания новой базы в СУБД. После этого сделайте выгрузку в .dt — пусть свежая копия лежит отдельно.
Если сервер 1С и СУБД стоят на одной машине и диск сломался там, остановите службы и не перезапускайте их на повреждённом диске. Пользователи всё равно отключены, а лишняя запись в журнал СУБД может затереть страницы, которые ещё можно было вычитать.
Профилактика: как не потерять базу 1С при поломке диска
Восстановление с образа — лотерея. Бэкап — гарантия. Минимальная схема для небольшой фирмы:
| Что | Как часто | Куда |
|---|---|---|
Выгрузка .dt или копия 1CD | Ежедневно, ночью | Второй физический диск или NAS |
| Архив за неделю | Раз в неделю | Облако или внешний диск вне офиса |
| Копия перед обновлением конфигурации | Перед каждым обновлением | Рядом с базой и на внешний носитель |
Бэкап СУБД (.bak, дамп) | Ежедневно полный, журнал — чаще | Отдельный сервер или хранилище |
Практические приёмы:
- 💾 В типовых конфигурациях для файловой базы есть встроенное автоматическое резервное копирование:
Администрирование → Обслуживание → Резервное копирование и восстановление. Укажите каталог на другом физическом диске, не на том, где лежит база. - 🪞 RAID 1 спасает от отказа одного диска, но не от удаления данных, шифровальщика или ошибки пользователя. Это не замена бэкапу.
- 📈 Настройте мониторинг SMART. Рост переназначенных секторов — повод заменить диск до того, как он умрёт.
- 🔁 Раз в квартал разворачивайте бэкап в тестовую базу и открывайте её. Непроверенный бэкап часто оказывается пустым или битым.
- 🔌 Копирование 1CD «на лету» во время работы пользователей даёт несогласованный файл. Копируйте при закрытой базе или делайте выгрузку
.dt.
Частые ошибки при восстановлении
- ❌ Запуск
chkdskна умирающем диске. Проверка файловой системы пишет на диск и «исправляет» разметку по-своему. Часть файлов после неё оказывается в папкеFOUND.000под именами видаFILE0001.CHK, а куски базы могут пропасть. - ❌ Восстановление на тот же диск. Найденный файл записывают поверх места, где лежали другие удалённые данные. Сохраняйте только на другой накопитель.
- ❌ Многократные попытки скопировать папку проводником. Каждый заход на битые сектора ухудшает состояние диска. Один образ лучше десяти копирований.
- ❌ Лечение единственного экземпляра. Если
chdbfl.exeили тестирование пойдут не так, вернуться будет некуда. - ❌ Вскрытие диска дома. Пыль на пластинах делает дальнейшее восстановление дороже или невозможным.