Tudo bem ... hora de programá-lo então.
Aqui está algo que funciona para o meu caso de uso. Estou plenamente ciente de que este é um código de baixa qualidade ... mas postando no caso de poder ajudar alguém. O desempenho é melhor do que eu esperava.
#!/usr/bin/python3
import sys
import os
if len(sys.argv) < 3:
print("Usage: %s <basepath> <minsize>" % (sys.argv[0],))
size = int(sys.argv[2])
# step 1: find inodes of all large files in most recent backup
inodes = []
for root, dirs, files in os.walk(sys.argv[1]+"latest"):
for name in files:
file = os.path.join(root, name)
statinfo = os.stat(file)
if(statinfo.st_size >= size):
inodes.append(statinfo.st_ino)
# step 2: find inodes of all large files in all backups, and display if only not in list built in step 1
for root, dirs, files in os.walk(sys.argv[1]):
for name in files:
file = os.path.join(root, name)
statinfo = os.stat(file)
if(statinfo.st_size >= size):
try:
position=inodes.index(statinfo.st_ino)
except ValueError:
print("Match: %s (%dMB)" % (file,(statinfo.st_size/(1024*1024)),))