Ответ
Команда truncate изменяет размер файла до указанной длины. Это мощный инструмент для управления файлами в DevOps-скриптах.
Основное поведение:
- Если файл больше указанного размера, лишние данные от конца файла будут отброшены (файл усечется).
- Если файл меньше указанного размера, он будет расширен до нужного размера, а новое пространство заполнится нулевыми байтами (null bytes
x00). - По умолчанию, если файл не существует, он будет создан.
Ключевые опции:
-s, --size=SIZE– задает целевой размер. Можно использовать суффиксы: K, M, G (например,-s 10M).--no-create– не создавать файл, если он не существует.-o, --io-blocks– обрабатывать размер в блоках ввода-вывода (обычно 512 байт).
Практическое применение в DevOps:
-
Быстрая очистка лог-файлов: Вместо удаления и пересоздания файла (что может сломать file descriptor запущенного процесса) можно усечь его.
# Очистить лог-файл, оставив его размер 0 байт truncate -s 0 /var/log/app.log # Или альтернатива: :> /var/log/app.log -
Создание файлов-заглушек определенного размера (например, для тестирования мониторинга диска или резервного копирования).
# Создать файл размером 1 Гигабайт truncate -s 1G /tmp/testfile.bin -
Освобождение места на диске для конкретного файла: После усечения файла необходимо выполнить
syncили перезапустить приложение, чтобы ядро освободило блоки данных.
Важно: truncate работает на уровне файловой системы, манипулируя метаданными размера. Он не перезаписывает старые данные на диске физически, поэтому для безопасного удаления чувствительных данных следует использовать shred.