自动调整分区大小至存储文件所需的最小大小

自动调整分区大小至存储文件所需的最小大小

我目前正在 Ubuntu 20.04 LTS 中编写一个 bash 脚本,该脚本会自动备份运行 ubuntu-server 18.04 LTS 的设备。我认为这与版本无关,所以我没有这样标记它。为了不必花费数小时通过命令行进行手动备份,我希望有一个可以自动备份设备的脚本。我唯一剩下的事情(我认为)就是调整图像文件的大小,以便没有“空白”空间被占用。

通常,您可以设置映像文件的循环,以便访问分区,使用 调整分区大小gparted,然后truncate访问映像文件。但是,当您备份大量设备时,这会花费时间,我更希望自动执行此操作。

我用于缩小文件的代码部分.img旨在从远程计算机上运行.img的文件设置一个循环,然后访问主 ext4 分区,将其大小调整为存储其上已有文件所需的最小值,并将分区调整为与分区大小相同。整个过程完成后,我将删除循环并对所有其他文件重复该过程。目前,我理论上需要完成的唯一事情(尚未测试这部分)是缩小分区的命令。我想我已经弄清楚了如何做其他所有事情,包括截断。ddtruncate.img

在过去的几天里,我对此进行了广泛的研究,我发现的都是通过命令行的方法,需要您直观地查看已使用的空间量,将分区调整为该大小,然后truncate。这种直观地查看已使用空间等的方法不适用于我研究过的所有文章中配置的 bash 脚本。本文很好地展示了我试图实现的目标,只需通过 gparted 即可,而不是在 bash 脚本中自动实现。正如开头提到的,我需要它与 Ubuntu 18.04-20.04 LTS 兼容最低限度。如果我遗漏了一些明显的内容,请告诉我。

答案1

您可能正在寻找resize2fs,尽管它的名称是 ,但它也适用于 ext4 文件系统。该选项-M将文件系统缩小到其最小大小。然后您可以使用parted及其命令resizepart调整分区大小以适应。

tune2fs -l文件系统将打印出其当前的块大小以及块的大小,以计算新的分区大小parted

Block count:              5242800
Block size:               4096

相关内容