Re: Удаление старых инкрементов rdiff-backup на большом архиве
22:03 Thu 21 Mar , Andrey Rahmatullin wrote:
> On Wed, Mar 20, 2013 at 03:30:20PM +0300, Andrey Tataranovich wrote:
> > Пробовал смотреть исходники rdiff-backup в районе remove-older-than
> >
> > # /usr/share/pyshared/rdiff_backup/manage.py
> >
> > def delete_earlier_than_local(baserp, time):
> > """Like delete_earlier_than, but run on local connection for speed"""
> > assert baserp.conn is Globals.local_connection
> > def yield_files(rp):
> > if rp.isdir():
> > for filename in rp.listdir():
> > for sub_rp in yield_files(rp.append(filename)):
> > yield sub_rp
> > yield rp
> >
> > for rp in yield_files(baserp):
> > if ((rp.isincfile() and rp.getinctime() < time) or
> > (rp.isdir() and not rp.listdir())):
> > Log("Deleting increment file %s" % rp.path, 5)
> > rp.delete()
> >
> > Насколько я знаю python, оно проходит по инкрементам и строит список
> > всех элементов в архиве, затем сравнивает метку времени и удаляет устаревшее.
> Никто тут списков не строит, yield_files это итератор.
Да, вы правы. Я уже набросал аналогичный кусок кода и в нем все в порядке. Получается
проблему нужно искать где-то в недрах rp.delete.
--
WBR, Andrey Tataranovich
Reply to: