[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: