어설션 파일 개수 == len(self.files_changed) AssertionError가 포함된 모든 명령에서 duply가 실패합니다.

어설션 파일 개수 == len(self.files_changed) AssertionError가 포함된 모든 명령에서 duply가 실패합니다.

이 중복 프로필에 대해 어떤 명령을 시도하더라도 항상 오류가 발생합니다.

duply database status
duply database bkp
duply database purge

모두 다음과 유사한 추적을 반환합니다.

Start duply v1.11.3, time is 2017-11-30 12:20:12.
Using profile '/etc/duply/database'.
Using installed duplicity version 0.7.12, python 2.7.5, gpg 2.0.22 (Home: ~/.gnupg), awk 'GNU Awk 4.0.2', grep 'grep (GNU grep) 2.20', bash '4.2.46(1)-release (x86_64-redhat-linux-gnu)'.
Checking TEMP_DIR '/srv/mysql/logs/duply_backup/duply_tmp' is a folder and writable (OK)
Test - En/Decryption skipped. (GPG disabled)

--- Start running command PURGE at 12:20:12.397 ---
Using archive dir: /srv/mysql/logs/duply_backup/duply_cache/duply_database
Using backup name: duply_database
Import of duplicity.backends.acdclibackend Succeeded
Import of duplicity.backends.azurebackend Succeeded
Import of duplicity.backends.b2backend Succeeded
Import of duplicity.backends.botobackend Succeeded
Import of duplicity.backends.cfbackend Succeeded
Import of duplicity.backends.copycombackend Succeeded
Import of duplicity.backends.dpbxbackend Failed: No module named dropbox
Import of duplicity.backends.gdocsbackend Succeeded
Import of duplicity.backends.giobackend Succeeded
Import of duplicity.backends.hsibackend Succeeded
Import of duplicity.backends.hubicbackend Succeeded
Import of duplicity.backends.imapbackend Succeeded
Import of duplicity.backends.lftpbackend Succeeded
Import of duplicity.backends.localbackend Succeeded
Import of duplicity.backends.mediafirebackend Succeeded
Import of duplicity.backends.megabackend Succeeded
Import of duplicity.backends.multibackend Succeeded
Import of duplicity.backends.ncftpbackend Succeeded
Import of duplicity.backends.onedrivebackend Succeeded
Import of duplicity.backends.par2backend Succeeded
Import of duplicity.backends.pydrivebackend Succeeded
Import of duplicity.backends.rsyncbackend Succeeded
Import of duplicity.backends.ssh_paramiko_backend Succeeded
Import of duplicity.backends.ssh_pexpect_backend Succeeded
Import of duplicity.backends.swiftbackend Succeeded
Import of duplicity.backends.sxbackend Succeeded
Import of duplicity.backends.tahoebackend Succeeded
Import of duplicity.backends.webdavbackend Succeeded
Main action: remove-old
================================================================================
duplicity 0.7.12 (March 21, 2017)
Args: /bin/duplicity remove-older-than 8W --archive-dir /srv/mysql/logs/duply_backup/duply_cache --name duply_database --no-encryption --verbosity 5 --full-if-older-than 4W --volsize 50 --include-filelist /etc/duply/database/include --exclude-filelist /etc/duply/database/exclude --rsync-options --rsh="ssh -oBatchMode=yes -i /root/.ssh/duplicity_scp.dsa" --copy-links rsync://[email protected]:22//backup-lun/duplicity//eventlogdb-core-01/database
Linux eventlogdb-core-01.ecnza.net 3.10.0-514.6.1.el7.x86_64 #1 SMP Wed Jan 18 13:06:36 UTC 2017 x86_64 x86_64
/bin/python2 2.7.5 (default, Nov  6 2016, 00:28:07) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
================================================================================
Reading results of 'rsync -e 'ssh -p 22 -oBatchMode=yes ' --rsh="ssh -oBatchMode=yes -i /root/.ssh/duplicity_scp.dsa" [email protected]:/backup-lun/duplicity//eventlogdb-core-01/database/'
Local and Remote metadata are synchronized, no sync needed.
Reading results of 'rsync -e 'ssh -p 22 -oBatchMode=yes ' --rsh="ssh -oBatchMode=yes -i /root/.ssh/duplicity_scp.dsa" [email protected]:/backup-lun/duplicity//eventlogdb-core-01/database/'
Processing local manifest /srv/mysql/logs/duply_backup/duply_cache/duply_database/duplicity-full.20171010T231503Z.manifest.part (634880)
Using temporary directory /srv/mysql/logs/duply_backup/duply_tmp/duplicity-k1XfbU-tempdir
Traceback (most recent call last):
  File "/bin/duplicity", line 1546, in <module>
    with_tempdir(main)
  File "/bin/duplicity", line 1540, in with_tempdir
    fn()
  File "/bin/duplicity", line 1391, in main
    do_backup(action)
  File "/bin/duplicity", line 1416, in do_backup
    globals.archive_dir).set_values()
  File "/usr/lib64/python2.7/site-packages/duplicity/collections.py", line 710, in set_values
    self.get_backup_chains(partials + backend_filename_list)
  File "/usr/lib64/python2.7/site-packages/duplicity/collections.py", line 836, in get_backup_chains
    add_to_sets(f)
  File "/usr/lib64/python2.7/site-packages/duplicity/collections.py", line 830, in add_to_sets
    if new_set.add_filename(filename):
  File "/usr/lib64/python2.7/site-packages/duplicity/collections.py", line 101, in add_filename
    self.set_manifest(filename)
  File "/usr/lib64/python2.7/site-packages/duplicity/collections.py", line 148, in set_manifest
    self.set_files_changed()
  File "/usr/lib64/python2.7/site-packages/duplicity/collections.py", line 128, in set_files_changed
    mf = self.get_manifest()
  File "/usr/lib64/python2.7/site-packages/duplicity/collections.py", line 250, in get_manifest
    return self.get_local_manifest()
  File "/usr/lib64/python2.7/site-packages/duplicity/collections.py", line 224, in get_local_manifest
    return manifest.Manifest().from_string(manifest_buffer)
  File "/usr/lib64/python2.7/site-packages/duplicity/manifest.py", line 208, in from_string
    assert filecount == len(self.files_changed)
AssertionError

12:20:14.362 Task 'PURGE' failed with exit code '30'.
--- Finished state FAILED 'code 30' at 12:20:14.362 - Runtime 00:00:01.964 ---

답변1

이것댓글이 도움이 되네요이 문제를 해결하다

"마지막으로 손상된 백업 삭제"

모든 .part 파일은 불완전한 백업입니다.

ll /srv/mysql/logs/duply_backup/duply_cache/duply_database/*.part

불완전한 백업을 삭제합니다. 좀 더 보수적으로 하려는 경우 출력을 통해 어떤 파일이 문제를 일으키는지 알려줄 것입니다.

Processing local manifest /srv/mysql/logs/duply_backup/duply_cache/duply_database/duplicity-full.20171010T231503Z.manifest.part

그렇지 않으면 모두 청소할 수 있습니다*.parts

rm /srv/mysql/logs/duply_backup/duply_cache/duply_database/*.part

이 파일들을 삭제한 후에는 잘 작동했습니다. 이는 불완전한 백업이므로 어떤 방식으로든 정리해야 합니다.

관련 정보