1

Мы позволили журналу трассировки работать в нашей продуктивной системе, и его размер вырос почти до 50 ГБ, что привело к тому, что диск работал почти полностью. Я остановил трассировку, чтобы файл больше не рос. Мне не нужен весь файл, но я также не хочу удалять все это и сохранять последние несколько ГБ или около того.

То, что я думал и отклонил:

  • Усечение файла приведет к потере последних нескольких гигабайт данных, которые я хочу сохранить.
  • PowerShell gc | select -last 1000 сканирует вперед и берет навсегда даже для файла 5 ГБ (Интересно, что команда использовала более 8 ГБ ОЗУ для файла 5 ГБ, прежде чем я его уничтожил)
  • Перенос файла для сохранения невозможен (это сайт клиента)

Есть ли какая-нибудь другая одноразовая магическая команда оболочки, которая может разрезать файл пополам и получить желаемый размер повторяющимися половинками?

Или, может быть, способ разбить файл на куски? (Это должно быть сделано на месте, нет места для полной копии файла)

1 ответ1

1

Есть много возможностей для разделения и объединения большого файла.

Если вы примете стороннюю бесплатную утилиту, вы можете использовать HJ Split или GSplit, но существует множество других.

Если вы хотите сохранить файл как единое целое и одновременно сжать его на куски, вы можете использовать 7Zip, где на экране «Добавить в архив» у вас есть поле « Разделить на тома», указывающее количество байтов для каждого чанка и некоторые больше вариантов.

Если вы предпочитаете сценарий PowerShell, вы можете использовать Split-File.ps1, который содержит функции разделения по размеру байта и объединения:

Split-File "BigFile.dat" 10000000
dir BigFile??.dat | Join-File Rebuild.dat

Если вы используете подсистему Windows для Linux (WSL), вы можете использовать команды Linux для split и cat.

Если все, что вам нужно, это скопировать часть файла, вы можете использовать эту однострочную оболочку PowerShell, которая использует команды Get-Content и Set-Content :

$file = (Get-Content log.txt)[<from-line..<to-line>] | Set-Content logpart.txt

Get-Content также имеет параметр -Tail о котором вы спрашивали, надеюсь, более эффективным способом.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .