ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как обрезать (очистить) файлы в Linux

Как обрезать (очистить) файлы в Linux

В некоторых ситуациях может потребоваться усечь (очистить) существующий файл до нулевой длины. Проще говоря, усечение файла означает удаление содержимого файла без удаления файла.

Усечение файла происходит намного быстрее и проще, чем удаление файла , его воссоздание и установка правильных прав доступа и владельца. Кроме того, если файл открывается процессом, удаление файла может вызвать сбой программы, которая его использует.

В этой статье объясняется, как обрезать файлы до нулевого размера в системах Linux с помощью перенаправления оболочки и команды truncate.

 

Самый простой и наиболее используемый метод для усечения файлов – это использование оператора перенаправления  > оболочки.

Общий формат для усечения файлов с использованием перенаправления:

: > filename

 

Давайте разберем команду:

Если файл существует, он будет обрезан до нуля. В противном случае файл будет создан.

Вместо :можно также использовать другую команду, которая не выдает никаких результатов.

Вот пример использования catкоманды для вывода содержимого устройства /dev/null, которое возвращает только символ конца файла:

cat /dev/null > filename

 

Еще одна команда, которая может быть использована echo. Опция -n говорит echo не для добавления новой строки:

echo -n > filename

 

В большинстве современных оболочек, таких как Bash или Zsh, вы можете опустить команду перед символом перенаправления и использовать:

> filename

 

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

sudo : > /var/log/syslog

 

bash: /var/log/syslog: Permission denied

 

Есть несколько решений, которые позволяют перенаправлять с sudo. Первый вариант может запустить новую оболочку с помощью sudo и выполнить команду внутри этой оболочки, используя флаг -c:

sudo sh -c '> filename'

 

Другой вариант – направить вывод в teeкоманду, повысить teeпривилегии sudoи записать пустой вывод в заданный файл:

: | sudo tee filename

 

truncate это утилита командной строки, которая позволяет уменьшить или расширить размер файла до заданного размера.

Общий синтаксис для усечения файлов до нулевого размера с помощью truncateкоманды, выглядит следующим образом:

truncate -s 0 filename

 

Параметр -s 0 задает размер файла до нуля.

Например, чтобы очистить журнал доступа Nginx, вы должны использовать:

sudo truncate -s 0 /var/log/nginx/access.log

 

Со временем ваш диск может загромождаться большим количеством больших файлов журнала, занимающих много места на диске.

Следующая команда очистит файлы, заканчивающиеся на «.log» в каталоге /var/log:

sudo truncate -s 0 /var/log/**/*.log

 

Лучшим вариантом будет вращение, сжатие и удаление файлов журналов с помощью инструмента logrotate.

 

Чтобы обрезать файл в Linux, используйте оператор перенаправления >, за которым следует имя файла.

Если у вас есть какие-либо вопросы или замечания, пожалуйста, оставьте комментарий ниже.

Exit mobile version