Linux очистить файл без удаления

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

How to Truncate (Empty) Files in Linux

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

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

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

Shell Redirection

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

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

  • В : средстве толстой кишки true и не производит никакого вывода.
  • Оператор > перенаправления перенаправляет вывод предыдущей команды в указанный файл.
  • filename , файл, который вы хотите усечь.

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

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

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

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

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

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

Читайте также:  Enable windows admin share

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

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

truncate команда

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

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

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

Очистить все файлы журнала

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

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

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

Вывод

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

Источник

Как очистить файл журнала в Linux

Вы окажетесь в ситуациях, когда вам нужно очистить файл. Это часто случается, когда у вас огромные файлы журналов, и как бы вы это сделали?

Один не очень чистый способ – удалить файл, а затем создать новый файл. Но это не очень хорошая идея. Это не будет тот же файл, временная метка (atime, mtime и т. д.). Будет отличаться вместе с другими правами доступа к файлам.

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

4 способа очистить файл в Linux

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

Способ 1: усечь файл с помощью команды truncate

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

В приведенной выше команде -s используется для установки/настройки размера (в байтах) файла. Когда вы используете -s 0, это означает, что вы изменили размер файла до 0 байт.

Способ 2: Пустой файл, используя :> или >

Самый простой способ очистить файл – использовать команду ниже. Если файл не используется, он будет работать в Bash:

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

Вы также можете использовать эту команду для очистки файла:

Читайте также:  Системный администратор windows что это

Способ 3: использование команды echo для очистки файла в Linux

Другой способ очистить файл – использовать команду echo в Linux:

Вы также можете использовать команду echo следующим образом:

Способ 4: используйте /dev/null, чтобы очистить файл

Вы также можете использовать знаменитую /dev/null и объединить ее с командой cat для очистки файла журнала:

И если у вас недостаточно прав для какой-либо из вышеперечисленных команд, это верный выстрел, но немного грязный способ добиться этого:

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

compizomania

Азбука в Linux для начинающих и не только. Я знаю только то, что ничего не знаю, но другие не знают и этого. Сократ

Страницы

08 июля 2021

Очистка содержимого файла (ов) с любым расширением до нуля байт в Терминале в Linux

Есть конечно графические утилиты, такие например, как BleachBit и др., но, всё же, все эти утилиты радикально удаляют файлы с носителя, а это в свою очередь огромная нагрузка на ФС, особенно носителей SSD.
Поэтому мы с вами и рассмотрим один из способов такой, щадящей чистки, без радикального удаления файла (ов) из системы до нуля байт.

Например, у нас в папке Видео есть не нужный нам более видео-файл test.mkv размером 8.6 Гб и мы с вами попробуем его не удалить, а очистить до нуля байт.
Для выполнения такой очистки нам с вами понадобится Терминал, вызвать который можно на клавиатуре сочетанием клавиш клавиатуры Ctrl+Alt+T, что мы с вами и делаем и после его открытия, для начала, убедимся, что файл такой есть и он действительно размером 8.6 Гб.

Проверяем наличие данного файла и его размер, введя следующую команду/код и жмём на Enter:
ls -lh Видео/t*t.mkv
(почему в команде/коде файл прописан в виде t*t.mkv? Просто я хочу показать вам, как можно отсеять совпадения, если в папке есть ещё файлы с таким именем. Можно писать и полностью test.mkv, и частично указав совпадение *t.mkv/t*.mkv/*.mkv и т.д. и т.п.)

и получаем вывод, подтверждающий наличие такого файла и его размер:

Теперь можно проводить его очистку, введя следующую команду/код:
bash -c ‘> Видео/t*t.mkv’

Читайте также:  Сканирование поврежденных файлов windows

После её выполнения вновь проверяем наличие файла и его размер командой/кодом:
ls -lh Видео/t*t.mkv

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

Т.е., мы с вами достигли нужного результата, а именно очистили огромный файл, быстро и легко через Терминал без его радикального удаления.

Таким способом можно чистить любые файлы, как по отдельности, так и несколько файлов одновременно, последовательно перечисляя в команде/коде имёна файлов с их расширениями и пути к ним, и, если один из файлов будет расположен в системной папке, то в начале команды/кода уже надо обязательно писать sudo .

Давайте посмотрим с вами один пример очистки сразу нескольких файлов, с разными расширениями, один из которых будет находится в домашнем каталоге Пользователя, а два других в системной папке.
Допустим у нас с вами есть тот же видео-файл test.mkv размером 8.6 Гб в папке Видео, лог-файл test.log размером 5.7 Мб в системной папке /var/log и ISO-образ test.iso размером 2.7 Гб, также в системной папке /opt/test.

Давайте мы с вами проверим, что эти файлы действительно есть и проверим их размер, командой/кодом:
ls -lh Видео/t*t.mkv /var/log/test.log /opt/test/test.iso

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

Теперь мы с вами очистим файлы до нуля байт каждый, введя следующую команду/код:
sudo bash -c ‘> Видео/t*t.mkv > /var/log/test.log > /opt/test/test.iso’

После выполнения команды/кода снова проверяем наличие файлов и их размер командой/кодом:
ls -lh Видео/t*t.mkv /var/log/test.log /opt/test/test.iso

и получаем вывод Терминала, показывающий нам, что файлы есть, но размер каждого 0 Байт:

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

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

А Вы какие способы очистки (не удаления!) файлов до нуля байт знаете?

Делитесь своими способами с нашими читателями в комментариях под статьёй или на нашем форуме, в соответсвтующей теме (ссылка ниже).

Источник

Оцените статью