Кэш и временные файлы 1С забили диск C: переносим их на D через ссылку и TEMP

· 9 мин

Содержание

Перенести кэш 1С на другой диск можно двумя способами: каталог %LOCALAPPDATA%\1C\1cv8 скопировать на новый диск и оставить на старом месте ссылку mklink /J, а временные файлы перенаправить сменой переменных TEMP и TMP. Отдельной галочки «где хранить кэш» в окне запуска 1С:Предприятия 8.3 нет, поэтому работает именно связка «ссылка + переменные среды».

Всё ниже относится к платформе 8.3 на Windows и не зависит от конфигурации: для Бухгалтерии, ЗУП и УТ порядок одинаковый. Для клиент-серверного варианта есть ещё серверный каталог srvinfo, о нём — отдельный раздел.

Что 1С хранит на диске и сколько это занимает

Платформа раскладывает служебные данные по трём местам в профиле пользователя Windows:

КаталогЧто внутриМожно удалять
%LOCALAPPDATA%\1C\1cv8Кэш конфигураций: папки с именами-GUID, по одной на каждую базуДа, при закрытой 1С
%APPDATA%\1C\1cv8Локальные настройки клиента, тоже по папкам-GUIDДа, но часть настроек окна сбросится
%APPDATA%\1C\1CEStartСписок баз ibases.v8i и настройки окна запускаНет — пропадёт список баз
%TEMP%Временные файлы сеанса, выгрузки, распакованные отчётыДа, при закрытой 1С

Самый тяжёлый — первый каталог. Платформа держит в нём копию метаданных каждой базы, которую хоть раз открывали на этом компьютере. Одна база типовой Бухгалтерии даёт несколько сотен мегабайт. Если у бухгалтера десять баз, а на терминальном сервере двадцать таких бухгалтеров, кэш легко съедает десятки гигабайт на системном диске.

Как оценить объём за минуту

Откройте Win+R, введите %LOCALAPPDATA%\1C\1cv8 и нажмите Enter. Проводник покажет папки с длинными именами вида 3f2a1c7e-.... Выделите все, откройте свойства — увидите общий размер.

Точнее и быстрее — в PowerShell:

Get-ChildItem "$env:LOCALAPPDATA\1C\1cv8" -Recurse -File |
  Measure-Object -Property Length -Sum |
  Select-Object @{n='ГБ';e={[math]::Round($_.Sum/1GB,2)}}

Какая папка относится к какой базе

Имя папки совпадает с идентификатором базы в списке запуска. Откройте %APPDATA%\1C\1CEStart\ibases.v8i в Блокноте. У каждой базы есть строка ID= с тем же GUID. Так вы найдёте «мёртвые» папки от баз, которых давно нет в списке, — их можно удалить сразу, ещё до переноса.

Готовим новый диск и папку под кэш

Перед переносом проверьте три вещи.

  • 💽 Файловая система NTFS. Ссылка-соединение (junction) работает только на локальных томах NTFS. Флешка в FAT32 или exFAT и сетевая папка не подойдут.
  • ⚡ Скорость диска. Кэш читается при каждом запуске базы. Перенос с SSD на старый HDD сэкономит место, но первый вход в базу станет заметно дольше. Лучше второй SSD, чем медленный диск.
  • 🔌 Диск подключён всегда. Если это съёмный или подключаемый по расписанию том, при его отсутствии 1С не найдёт кэш и будет падать на запуске.

Создайте структуру каталогов. Удобно держать всё в одном месте:

mkdir D:\1C-cache
mkdir D:\Temp

Если компьютером пользуются несколько человек, сделайте подпапку на каждого: D:\1C-cache\ivanova, D:\1C-cache\petrov. Иначе кэши разных профилей смешаются, а права доступа превратятся в головоломку.

Проверьте права на новую папку: у пользователя должна быть полная запись. На диске D: обычные пользователи по умолчанию могут создавать папки, но если диск настраивали вручную, права могут быть урезаны.

Переносим кэш 1С на другой диск через символическую ссылку

Главный приём — ссылка-соединение. Платформа продолжает обращаться к %LOCALAPPDATA%\1C\1cv8, а Windows незаметно отправляет её на диск D. Ни 1С, ни другие программы разницы не видят.

Шаг 1. Закройте 1С

Закройте все окна 1С:Предприятия и Конфигуратора. Проверьте в Диспетчере задач, что не осталось процессов 1cv8.exe и 1cv8c.exe. Открытая база держит файлы кэша, и копирование сорвётся на середине.

Шаг 2. Скопируйте кэш

Откройте командную строку от имени того пользователя, чей кэш переносите (не от другого администратора — у него свой %LOCALAPPDATA%):

robocopy "%LOCALAPPDATA%\1C\1cv8" "D:\1C-cache\1cv8" /E /COPY:DAT /R:1 /W:1

Ключ /E копирует все подпапки, включая пустые. В конце robocopy выведет сводку: в графе ошибок должен быть ноль.

Шаг 3. Уберите старую папку с дороги

Ссылку нельзя создать там, где уже лежит папка с тем же именем. Не удаляйте её сразу — переименуйте:

ren "%LOCALAPPDATA%\1C\1cv8" 1cv8.old

Шаг 4. Создайте ссылку

mklink /J "%LOCALAPPDATA%\1C\1cv8" "D:\1C-cache\1cv8"

Ответ Создана связь для ... значит, что всё получилось. Для /J права администратора не нужны, в отличие от mklink /D.

Шаг 5. Проверьте и удалите старую копию

Запустите 1С и откройте пару баз. Если они стартуют нормально, а на D:\1C-cache\1cv8 растёт дата изменения файлов, удалите 1cv8.old:

rmdir /S /Q "%LOCALAPPDATA%\1C\1cv8.old"

Каталог %APPDATA%\1C\1cv8 обычно весит мало. Переносить его имеет смысл только на терминальных серверах с перемещаемыми профилями — делается тем же способом.

Чем ссылка лучше смены пути профиля

Иногда советуют перенести через реестр всю папку AppData\Local (параметр Local AppData в разделе User Shell Folders). Это сработает, но вместе с 1С переедут кэши браузеров, мессенджеров и десятков других программ. Часть из них плохо переносит смену пути. Ссылка затрагивает только 1С и откатывается за минуту.

СпособЧто переезжаетНужен админРиски
mklink /J для 1C\1cv8Только кэш 1СНетМинимальные, откат удалением ссылки
Смена TEMP и TMPВременные файлы всех программНет (для своего профиля)Низкие
Перенос Local AppData в реестреДанные всех программДаСбои других приложений

Меняем переменные TEMP и TMP в Windows

Временные файлы 1С пишет не в свой кэш, а в общий каталог %TEMP%. Сюда же уходят распакованные внешние отчёты, выгрузки и файлы обменов. Если после сеанса на диске C: «растут» гигабайты в AppData\Local\Temp, нужна вторая часть переноса.

Через окно настроек:

  1. Нажмите Win+R, введите sysdm.cpl и нажмите Enter.
  2. Перейдите на вкладку «Дополнительно» и нажмите «Переменные среды».
  3. В верхнем блоке (переменные пользователя) выберите TEMP, нажмите «Изменить» и укажите D:\Temp.
  4. То же самое сделайте для TMP.
  5. Выйдите из учётной записи Windows и войдите снова.

Из командной строки:

setx TEMP "D:\Temp"
setx TMP "D:\Temp"

setx меняет значение для новых процессов. Уже открытые окна и программы будут работать со старым путём до перезахода в систему.

Меняйте обе переменные. Одни программы читают TEMP, другие — TMP. Если поменять только одну, временные файлы останутся раздвоены между дисками.

Переменные в нижнем блоке (системные) трогать не нужно. Их используют службы Windows, и для кэша обычного пользователя 1С они не важны. Исключение — сервер 1С, о нём ниже.

Особый случай: клиент-сервер и терминальный сервер

В клиент-серверном варианте кэш живёт в двух местах. На компьютере пользователя остаётся всё то же самое: %LOCALAPPDATA%\1C\1cv8 и %TEMP%. Значит, на клиентах перенос делается так же, как выше.

На сервере 1С есть собственный каталог — srvinfo. В нём лежат реестр кластера, журналы регистрации баз и сеансовые данные. Он может вырасти до десятков гигабайт, особенно из-за журналов.

Перенос каталога srvinfo

Путь к каталогу задаётся ключом -d в командной строке службы агента. По умолчанию в 8.3 это C:\Program Files\1cv8\srvinfo.

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

  1. Остановите службу «Агент сервера 1С:Предприятия 8.3» в services.msc.
  2. Скопируйте каталог целиком:
robocopy "C:\Program Files\1cv8\srvinfo" "D:\srvinfo" /E /COPY:DATSO /R:1 /W:1
  1. Дайте учётной записи, под которой работает служба (обычно USR1CV8), полный доступ к D:\srvinfo.
  2. Откройте редактор реестра, раздел HKLM\SYSTEM\CurrentControlSet\Services, найдите службу агента 1С и в параметре ImagePath замените путь после -d на "D:\srvinfo". Остальные ключи (-port, -regport, -range) не трогайте.
  3. Запустите службу и проверьте в консоли кластера, что базы на месте и пользователи заходят.
  4. Старый каталог переименуйте и удалите через несколько дней работы без сбоев.

Временные файлы рабочих процессов rphost идут в TEMP той учётной записи, под которой запущена служба. Если на сервере забивается диск C:, проверьте и профиль USR1CV8.

Терминальный сервер

На терминальном сервере у каждого пользователя свой %LOCALAPPDATA%. Ссылку придётся делать в каждом профиле, лучше скриптом входа. Учтите: при двадцати пользователях кэш на диске D: займёт столько же места, сколько занимал на C:. Перенос решает проблему системного диска, но не уменьшает объём. Чтобы он не рос, раз в квартал удаляйте папки от баз, которых нет в списках пользователей.

Очистка старого кэша перед переездом и после

Переносить мусор нет смысла. Перед копированием удалите папки от баз, которых уже нет в ibases.v8i, и почистите %TEMP%. Объём переноса часто сокращается в разы.

Сбросить кэш конкретной базы можно без ручного удаления папок. В окне запуска выделите базу, нажмите «Изменить», дойдите до последней страницы мастера и в поле дополнительных параметров запуска впишите:

/ClearCache

При следующем входе платформа удалит кэш этой базы и соберёт его заново. Первый запуск будет медленнее обычного — это нормально. После удачного входа параметр сотрите, иначе база будет каждый раз стартовать «с нуля».

Ручная очистка надёжнее, когда кэш повреждён целиком:

  1. Закройте все сеансы 1С на этом компьютере.
  2. Удалите содержимое %LOCALAPPDATA%\1C\1cv8 и %APPDATA%\1C\1cv8 — сами папки-GUID.
  3. Папку %APPDATA%\1C\1CEStart не трогайте: в ней список баз.
Перед удалением старой копии кэша
Выполнено: 0 / 5

Проверка после переноса и разбор сбоев

Убедиться, что ссылка работает, можно одной командой:

dir "%LOCALAPPDATA%\1C"

Напротив 1cv8 должно стоять <JUNCTION> и путь [D:\1C-cache\1cv8]. Если там <DIR> — ссылки нет, платформа снова пишет на диск C:.

Для переменных среды:

echo %TEMP%

Команда должна вывести D:\Temp. Если выводит старый путь — вы не вышли из учётной записи после setx.

Диагностика: выберите симптом

Если что-то пошло не так, откат простой. Удалите ссылку командой rmdir "%LOCALAPPDATA%\1C\1cv8" — она удаляет только саму ссылку, файлы на D: остаются. Потом переименуйте 1cv8.old обратно в 1cv8.

Частые вопросы

Пострадают ли данные базы, если удалить кэш?
Нет. Кэш — это копия метаданных для ускорения запуска. Документы, справочники и проводки хранятся в самой базе: в файле 1Cv8.1CD или на SQL-сервере.
Можно ли перенести файловую базу вместе с кэшем?
Это разные вещи. Файловую базу переносят копированием её каталога и правкой пути в списке баз. Кэш лежит в профиле Windows и переносится отдельно.
Нужно ли переносить кэш заново после обновления платформы?
Нет. Новая версия платформы пишет в тот же каталог 1C\1cv8, а ссылка остаётся на месте. Ссылка исчезнет только при пересоздании профиля Windows.
Почему после переноса первая база открывается медленно?
Если кэш перенесли на HDD, чтение идёт медленнее, чем с SSD. Если диск быстрый, а медленно открылся только первый запуск, платформа просто проверила актуальность кэша.
Можно ли хранить кэш на RAM-диске?
Технически да, ссылка работает и на него, если это том NTFS. Но после перезагрузки RAM-диск пустеет, и каждая база будет заново собирать кэш при первом входе.