LINUX.ORG.RU
ФорумAdmin

rdiff-backup long file names

 


0

1

всем привет

при создании очередного бекапа столкнулся с такой ошибкой:


Previous backup seems to have failed, regressing destination now.
Exception 'Path: /backup3/storage/office/srvmail1/home/rdiff-backup-data/long_filename_data/2.2019-12-24T02:45:00+04:00.dir
Index: ('long_filename_data', '2.2019-12-24T02:45:00+04:00.dir')
Data: {'acl': <rdiff_backup.eas_acls.AccessControlLists instance at 0x1b79dd0>, 'uid': 5268, 'perms': 448, 'type': 'reg', 'gname': None, 'ea': <rdiff_backup.eas_acls.ExtendedAttributes instance at 0x1b79f38>, 'ctime': 1577229357, 'devloc': 2048L, 'uname': None, 'nlink': 1, 'gid': 1003, 'mtime': 1577134505, 'atime': 1577229357, 'inode': 79345391, 'size': 0}' raised of class '<type 'exceptions.AssertionError'>':
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 324, in Main
    take_action(rps)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 280, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 343, in Backup
    backup.Mirror_and_increment(rpin, rpout, incdir)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/backup.py", line 51, in Mirror_and_increment
    DestS.patch_and_increment(dest_rpath, source_diffiter, inc_rpath)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/backup.py", line 243, in patch_and_increment
    ITR(diff.index, diff)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/rorpiter.py", line 284, in __call__
    branch.start_process(*args)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/backup.py", line 721, in start_process
    inc = increment.Increment(diff_rorp, self.base_rp, inc_prefix)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/increment.py", line 41, in Increment
    elif mirror.isdir(): incrp = makedir(mirror, incpref)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/increment.py", line 103, in makedir
    dirsign = get_inc(incpref, "dir")
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/increment.py", line 123, in get_inc
    assert not incrp.lstat(), incrp

Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 30, in <module>
    rdiff_backup.Main.error_check_Main(sys.argv[1:])
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 304, in error_check_Main
    try: Main(arglist)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 324, in Main
    take_action(rps)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 280, in take_action
    elif action == "backup": Backup(rps[0], rps[1])
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/Main.py", line 343, in Backup
    backup.Mirror_and_increment(rpin, rpout, incdir)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/backup.py", line 51, in Mirror_and_increment
    DestS.patch_and_increment(dest_rpath, source_diffiter, inc_rpath)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/backup.py", line 243, in patch_and_increment
    ITR(diff.index, diff)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/rorpiter.py", line 284, in __call__
    branch.start_process(*args)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/backup.py", line 721, in start_process
    inc = increment.Increment(diff_rorp, self.base_rp, inc_prefix)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/increment.py", line 41, in Increment
    elif mirror.isdir(): incrp = makedir(mirror, incpref)
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/increment.py", line 103, in makedir
    dirsign = get_inc(incpref, "dir")
  File "/usr/lib64/python2.6/site-packages/rdiff_backup/increment.py", line 123, in get_inc
    assert not incrp.lstat(), incrp
AssertionError: Path: /backup3/storage/office/srvmail1/home/rdiff-backup-data/long_filename_data/2.2019-12-24T02:45:00+04:00.dir
Index: ('long_filename_data', '2.2019-12-24T02:45:00+04:00.dir')
Data: {'acl': <rdiff_backup.eas_acls.AccessControlLists instance at 0x1b79dd0>, 'uid': 5268, 'perms': 448, 'type': 'reg', 'gname': None, 'ea': <rdiff_backup.eas_acls.ExtendedAttributes instance at 0x1b79f38>, 'ctime': 1577229357, 'devloc': 2048L, 'uname': None, 'nlink': 1, 'gid': 1003, 'mtime': 1577134505, 'atime': 1577229357, 'inode': 79345391, 'size': 0}

После выполнения rdiff-backup --check-destination-dir получается вывести список резервных копий с помощью rdiff-backup -l но последующие бекапы также вываливаются с вышеуказаной ошибкой

нашёл патч , который исправляет данную ошибку: https://build.opensuse.org/package/view_file/openSUSE:Factory/rdiff-backup/rd...

отредактировал файл /usr/lib64/python2.7/site-packages/rdiff_backup/rpath.py, т.е. привёл его в соотсвествию с кусокм текста из патча, но это не помогло, возможно что-то не правильно делаю

подскажите, как решить проблему


Предлагаю перейти на borg или restic. У одного из них вроде даже в комплекте скрипт для импорта из rdiff-backup.

anonymous
()
Ответ на: комментарий от anonymous

да, перейти то можно, но существующие бекапы уже делаются несколько лет и надо решить проблему, которая возникла сейчас

ha-ha
() автор топика
Ответ на: комментарий от ha-ha

В чём проблема импортировать существующие бэкапы в нормальную систему и забыть о наборе костылей на хардлинках? rdiff-backup уже десять лет как заброшен.

anonymous
()
Ответ на: комментарий от anonymous

смысле импортировать, скриптом, есть пример? в гугле ничего похожего нет

ha-ha
() автор топика
Ответ на: комментарий от ha-ha

их много

Какая разница? Они нужны? Или это уже «древнее говно», о котором все забыли?

anonymous
()
Ответ на: комментарий от ha-ha

https://github.com/borgbackup/borg-import

Не уверен, что подходит для rdiff-backup, но попробовать стоит. Если не работает, а хочется, то покажи пример (часть вывода tree) репозитория. Возможно, помогу с этим позже.

anonymous
()
Ответ на: комментарий от turtle_bazon

нет, после регресс неудачного бекапа я могу просматривать и восстанавливать инкременты, но вот пследующие бекапы не случаются

ha-ha
() автор топика
Ответ на: комментарий от anonymous

сделал borg’ом бекап 5 тб.за почти 3-е суток, первый инкремент длился 2 часа, второй инкремент работает уже почти сутки. не понятно в чём проблема может быть, если чистить кэши borg’а может это как–то повлиять?

ha-ha
() автор топика
Ответ на: комментарий от ha-ha

если чистить кэши borg’а может это как–то повлиять?

Кэш чистить не надо, это плохо влияет на скорость (все данные будут хэшироваться заново).

anonymous
()
Ответ на: комментарий от greenman

Непохоже.

Ещё недавно так и было.

anonymous
()
Ответ на: комментарий от ha-ha

Кэш удалил? Не стоило :) Но в любом случае это не добавит в репозиторий лишних данных. А в норме основные причины для перечитывания файлов это изменения даты модификации, размера и расположения.

anonymous
()
Ответ на: комментарий от anonymous

смотрите, сейчас делаю бекап из под root’а и кеш формируется в каталоге /root, потом передам создание бекапа cron’у через crontab, у cron’а свой home, т.е. он опять будет заново формировать кэш. как поступить ?

ha-ha
() автор топика
Ответ на: комментарий от ha-ha

Возможно, этот вопрос решается заданием переменной $HOME в кронтабе. Как вариант можно задать $BORG_CACHE_DIR. В документации все переменные описаны.

anonymous
()
Ответ на: комментарий от anonymous

А, ты там уже был и тебе дали линк на баг, где разбирался этот случай. Удалить (переименовать) проблемный файл как описано ты не попробовал?

anonymous
()
Ответ на: комментарий от anonymous

неа, не помогает, после удаления инкремента другая ошибка, в которой разбираться не стал

ha-ha
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.