我目前正在尝试将一个大的(9GB文件)拆分成更小的块,一次读入一个数据库。不幸的是,我机器中只有一个20GB的SSD(这是一个便宜的VPS),因此我只有8GB的空闲,因此拆分文件以便我可以阅读和删除。虽然我确实想过在很短的时间内将VPS缩小,但显然我现在不能这样做,所以我一直在寻找其他选择。
因此,我想知道是否可以使用split命令将文件分成9个部分,同时逐步删除旧文件以使其适合,而不是复制它(通常是拆分)。 / p>
我查看过联机帮助页,但没有参考此过程。
谢谢!
答案 0 :(得分:1)
您可以使用tail -c 1G bigfile >lastchunk
将bigfile中的最后一个GB保存到lastchunk,然后使用truncate -s -1G bigfile
从bigfile中删除最后一个GB(并释放磁盘空间)。重复,直到你只有方便大小的块。
当然,问题在于出错是多么容易。如果truncate删除与tail读出的字节数相比不同的字节数,则会丢失字节或重复,从而导致数据损坏。使用像G这样的乘数应该减少伤害的可能性。不过,请备份并在之前进行测试。