- Как обрезать файлы до нулевого размера в Linux
- How to Truncate (Empty) Files in Linux
- В этом руководстве объясняется, как обрезать файлы до нулевого размера в системах Linux с помощью перенаправления оболочки и truncate команды.
- Shell Redirection
- truncate команда
- Очистить все файлы журнала
- Вывод
- Как очистить файл журнала в Linux
- 4 способа очистить файл в Linux
- Способ 1: усечь файл с помощью команды truncate
- Способ 2: Пустой файл, используя :> или >
- Способ 3: использование команды echo для очистки файла в Linux
- Способ 4: используйте /dev/null, чтобы очистить файл
- compizomania
- Страницы
- 08 июля 2021
- Очистка содержимого файла (ов) с любым расширением до нуля байт в Терминале в Linux
Как обрезать файлы до нулевого размера в Linux
How to Truncate (Empty) Files in Linux
В этом руководстве объясняется, как обрезать файлы до нулевого размера в системах Linux с помощью перенаправления оболочки и truncate команды.
В некоторых ситуациях может потребоваться усечь (очистить) существующий файл до нулевой длины. Проще говоря, усечение файла означает удаление содержимого файла без удаления файла.
Усечение файла происходит намного быстрее и проще, чем удаление файла , его воссоздание и установка правильных прав доступа и владельца . Кроме того, если файл открывается процессом, удаление файла может привести к сбою в работе программы, которая его использует.
Shell Redirection
Самый простой и наиболее используемый метод для усечения файлов — это использование > — оператора перенаправления оболочки.
Общий формат для усечения файлов с использованием перенаправления:
- В : средстве толстой кишки true и не производит никакого вывода.
- Оператор > перенаправления перенаправляет вывод предыдущей команды в указанный файл.
- filename , файл, который вы хотите усечь.
Если файл существует , он будет обрезан до нуля. В противном случае файл будет создан.
Вместо : можно также использовать другую команду, которая не выдает никаких результатов.
Вот пример использования cat команды для вывода содержимого /dev/null устройства, которое возвращает только символ конца файла:
Еще одна команда, которая может быть использована echo . -n Опция говорит echo не для добавления новой строки:
В большинстве современных оболочек, таких как Bash или Zsh, вы можете опустить команду перед символом перенаправления и использовать:
Чтобы иметь возможность обрезать файл, вам необходимо иметь права на запись в файл. Обычно вы бы использовали sudo для этого, но привилегии суперпользователя не применяются к перенаправлению. Вот пример:
Есть несколько решений, которые позволяют перенаправлять с 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, вы можете использовать аналогичную команду для других оболочек:
Вы также можете использовать эту команду для очистки файла:
Способ 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’
После её выполнения вновь проверяем наличие файла и его размер командой/кодом:
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 (о них мы с вами в ближайшее время и поговорим подробнее в отдельной статье), для систематической чистки файлов по расписанию, установленному вами по вашему усмотрению.
А Вы какие способы очистки (не удаления!) файлов до нуля байт знаете?
Делитесь своими способами с нашими читателями в комментариях под статьёй или на нашем форуме, в соответсвтующей теме (ссылка ниже).
Источник