Кэш и временные файлы 1С забили диск C: переносим их на D через ссылку и TEMP
Содержание
Перенести кэш 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, нужна вторая часть переноса.
Через окно настроек:
- Нажмите
Win+R, введитеsysdm.cplи нажмите Enter. - Перейдите на вкладку «Дополнительно» и нажмите «Переменные среды».
- В верхнем блоке (переменные пользователя) выберите
TEMP, нажмите «Изменить» и укажитеD:\Temp. - То же самое сделайте для
TMP. - Выйдите из учётной записи 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С:Предприятия 8.3» в
services.msc. - Скопируйте каталог целиком:
robocopy "C:\Program Files\1cv8\srvinfo" "D:\srvinfo" /E /COPY:DATSO /R:1 /W:1
- Дайте учётной записи, под которой работает служба (обычно
USR1CV8), полный доступ кD:\srvinfo. - Откройте редактор реестра, раздел
HKLM\SYSTEM\CurrentControlSet\Services, найдите службу агента 1С и в параметреImagePathзамените путь после-dна"D:\srvinfo". Остальные ключи (-port,-regport,-range) не трогайте. - Запустите службу и проверьте в консоли кластера, что базы на месте и пользователи заходят.
- Старый каталог переименуйте и удалите через несколько дней работы без сбоев.
Временные файлы рабочих процессов rphost идут в TEMP той учётной записи, под которой запущена служба. Если на сервере забивается диск C:, проверьте и профиль USR1CV8.
Терминальный сервер
На терминальном сервере у каждого пользователя свой %LOCALAPPDATA%. Ссылку придётся делать в каждом профиле, лучше скриптом входа. Учтите: при двадцати пользователях кэш на диске D: займёт столько же места, сколько занимал на C:. Перенос решает проблему системного диска, но не уменьшает объём. Чтобы он не рос, раз в квартал удаляйте папки от баз, которых нет в списках пользователей.
Очистка старого кэша перед переездом и после
Переносить мусор нет смысла. Перед копированием удалите папки от баз, которых уже нет в ibases.v8i, и почистите %TEMP%. Объём переноса часто сокращается в разы.
Сбросить кэш конкретной базы можно без ручного удаления папок. В окне запуска выделите базу, нажмите «Изменить», дойдите до последней страницы мастера и в поле дополнительных параметров запуска впишите:
/ClearCache
При следующем входе платформа удалит кэш этой базы и соберёт его заново. Первый запуск будет медленнее обычного — это нормально. После удачного входа параметр сотрите, иначе база будет каждый раз стартовать «с нуля».
Ручная очистка надёжнее, когда кэш повреждён целиком:
- Закройте все сеансы 1С на этом компьютере.
- Удалите содержимое
%LOCALAPPDATA%\1C\1cv8и%APPDATA%\1C\1cv8— сами папки-GUID. - Папку
%APPDATA%\1C\1CEStartне трогайте: в ней список баз.
Проверка после переноса и разбор сбоев
Убедиться, что ссылка работает, можно одной командой:
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-сервере.Можно ли перенести файловую базу вместе с кэшем?
Нужно ли переносить кэш заново после обновления платформы?
1C\1cv8, а ссылка остаётся на месте. Ссылка исчезнет только при пересоздании профиля Windows.