Как обрезать файлы до нулевого размера в Linux

How to Truncate (Empty) Files in Linux

21 Декабря 2019 | Терминал

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

Как обрезать файлы до нулевого размера в Linux

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

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



Shell Redirection

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

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

: > filename

Давайте разберем команду:
  • В :средстве толстой кишки true и не производит никакого вывода.
  • Оператор перенаправления перенаправляет вывод предыдущей команды в указанный файл.
  • 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 команды, выглядит следующим образом:

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, используйте оператор перенаправления, за которым следует имя файла.


    Комментарии

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

Загрузка комментариев...