截断大文件的一半

截断大文件的一半

我们让跟踪日志在我们的生产系统中肆意运行,它的大小已增长到近 50GB,导致磁盘几乎已满。我已停止跟踪,这样文件就不会再增长了。我不需要整个文件,但我也不想删除整个文件并保留最后几 GB 左右的内容。

我曾经考虑过但又否定过的观点:

  • 截断文件将丢失我想要保留的最后几 GB 的数据
  • PowerShellgc | select -last 1000向前扫描,即使对 5 GB 的文件也需要很长时间(有趣的是,在我关闭它之前,该命令对 5GB 的文件使用了超过 8GB 的​​ RAM)
  • 将文件移走保存是不可行的(这是客户站点)

是否有其他一次性的 shell 魔法命令可以将文件切成两半,并通过重复切半来达到所需的大小?

或者也许有办法将文件分成几块?(这需要在现场完成,因为没有空间存放完整的文件副本)

答案1

分割和合并大文件有很多种可能性。

如果你接受第三方免费实用程序,那么你可以使用 HJ 拆分, 或者 分割,但还存在许多其他的。

如果你想保留整个文件,同时将其压缩成块,则可以使用 7Zip,在“添加到存档”屏幕上,你会看到字段 拆分成卷,指定每个块的字节数和一些其他选项。

如果你更喜欢 PowerShell 脚本,你可以使用 拆分文件.ps1 其中包含按字节大小拆分和连接的函数:

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

如果你使用的是 Windows 的 Linux 子系统 (WSL),则可以使用 Linux 命令 分裂

如果你只想复制文件的一部分,你可以使用这个使用命令的 PowerShell 单行程序 获取内容设置内容

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

Get-Content还有-Tail您询问的参数,希望以更有效的方式。

相关内容