Что такое формат файла SWP?
.swp - это файл подкачки (swap file) Vim, временный бинарный файл, который Vim создает автоматически при открытии файла для редактирования. Его цель - восстановление после сбоя: если Vim неожиданно завершает работу из-за сбоя питания, закрытия терминала или краха системы, файл подкачки сохраняет несохраненные изменения, которые можно восстановить при следующем запуске.
Vim создает файл подкачки в том же каталоге, что и редактируемый файл, называя его с ведущей точкой и суффиксом .swp - например, при редактировании config.py создается .config.py.swp. В Unix-подобных системах ведущая точка делает его скрытым по умолчанию. Если один и тот же файл редактируют несколько сессий Vim, последующие файлы подкачки используют расширения .swo, .swn и так далее.
Файл подкачки имеет бинарную блочную структуру. Первый блок размером 4 КБ (блок 0) содержит магический заголовок b0VIM , строку версии Vim, путь к исходному файлу, имя хоста, имя пользователя и идентификатор процесса (PID). Последующие блоки хранят содержимое буфера, организованное в виде B-дерева со страницами по 1 КБ. Содержимое файла хранится в открытом виде - файл подкачки не зашифрован.
Когда Vim открывает файл и обнаруживает существующий .swp, он предлагает вам восстановить («Recover», r) несохраненные изменения или удалить («Delete», d) устаревший файл. Оставшийся файл .swp без запущенного процесса Vim можно безопасно удалить; выполните vim -r filename, чтобы явно попытаться восстановить данные. Neovim использует тот же формат подкачки.
Соображение безопасности: файлы .swp, оставленные в каталогах веб-сервера, могут раскрыть незашифрованный исходный код, если сервер настроен на выдачу скрытых файлов.
Безопасность и защита
РИСК: MEDIUMСам файл .swp не является вредоносным ПО, но он несет риск раскрытия информации: (1) Оставленный в общедоступном веб-каталоге, он раскрывает полный текст редактируемого файла, а также имя хоста сервера и имя пользователя - классическая находка при пентесте. (2) Случайный коммит в git: используйте «git rm --cached .*.swp» и добавьте «*.swp» в .gitignore. Добавьте «*.swp» в глобальный .gitignore (~/.config/git/ignore), чтобы предотвратить случайные коммиты.
Детали формата
в двух словах- Файл подкачки виртуальной памяти Windows - Windows использует pagefile.sys/swapfile.sys, а не расширение .swp; путаница с файлом подкачки ОС необоснованна, но встречается часто.
- Oracle Forms .swp - Старые версии Oracle Forms использовали .swp для другого буфера подкачки; встречается крайне редко.
Программы, открывающие файлы SWP
Технические подробности
глубокая спецификация| Назначение файла | Буфер восстановления после сбоев для активных сессий редактирования Vim; автоматически удаляется при чистом выходе |
| Магические байты | `62 30 56 49 4D 20` («b0VIM ») со смещением 0 |
| Структура блоков | Блок 0: заголовок 4 КБ; последующие блоки: страницы по 1 КБ в B-дереве; общий размер растет вместе с содержимым буфера |
| Содержимое заголовка | Строка версии Vim, путь к исходному файлу, имя хоста, имя пользователя и PID, хранящиеся в блоке 0 |
| Кодирование контента | Открытый текст (без шифрования); содержимое исходного файла можно прочитать напрямую из файла подкачки |
| Порядок байтов | Зависит от платформы (соответствует сборке хоста Vim; обычно little-endian на x86 и ARM) |
| Соглашение об именовании | `.filename.swp` (ведущая точка + суффикс `.swp`); по умолчанию скрыт в системах Unix |
| Именование при переполнении | Когда несколько сессий редактируют один и тот же файл: `.swo`, `.swn`, `.swm`, … назначаются в алфавитном порядке |
| Обнаружение устаревания | Vim перепроверяет PID и имя хоста в заголовке блока 0; предупреждает, если записанный процесс больше не запущен |
| Команда восстановления | `vim -r filename` или нажатие `r` в окне восстановления при повторном открытии файла в Vim |
| Совместимость с Neovim | Neovim читает и записывает совместимые с Vim файлы подкачки, используя тот же формат заголовка `b0VIM` |
| Примечание по безопасности | Файлы подкачки в общедоступных веб-каталогах раскрывают исходный код в виде открытого текста, если сервер отдает файлы, начинающиеся с точки |
| Выпущен | 1991 (Vim 1.0); vi swap concept from 1970s ex/vi |
| Последняя версия | Vim 9.1 (2024) swap format; compatible block-based format since Vim 6 |
| Спецификация | github.com |
Конвертации SWP
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах SWP.