我写了一个bash脚本删除所有备份,但是自从其他地方发布以来的最新备份对我不起作用。我知道您不想专门这样做,但是可以对其进行修改以保留更多备份(请参见下文)。请注意,这不适用于从备份中删除特定的文件夹或文件。该脚本假定您将其放在本地硬盘(最有可能是外部磁盘)上。我必须编写自己的文件,因为备份与该计算机没有关联,因此tmutil listbackups
无法正常工作,而这正是其他脚本所依赖的。
在下面的脚本中,用DISKNAME
Time Machine备份替换为硬盘名称,并替换COMPUTERNAME
为备份所属的计算机的名称。
首先,运行此脚本以查看该脚本将删除的备份列表:
while read line; do
echo "/Volumes/DISKNAME/Backups.backupdb/COMPUTERNAME/${line}"
done < <(ls /Volumes/DISKNAME/Backups.backupdb/COMPUTERNAME | tail -r | tail -n +3)
在+3
将留下的最后一个备份。如果要保留最后两个备份,请进行备份+4
。要保留最后三个备份,+5
等等。
要删除除最新备份以外的所有备份,请运行以下脚本:
while read line; do
sudo tmutil delete "/Volumes/DISKNAME/Backups.backupdb/COMPUTERNAME/${line}"
done < <(ls /Volumes/DISKNAME/Backups.backupdb/COMPUTERNAME | tail -r | tail -n +3)
我知道可以通过定义变量和内容使它变得更奇特,但是老实说,我对Shell脚本并不了解。我只知道其他超级复杂的代码没有用,但这对我有用,所以这里是给后代使用。