アサーションファイルの数== 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

これらのファイルを削除した後はうまくいきました。これは不完全なバックアップなので、何らかの方法でクリーンアップする必要があります。

おすすめ記事