Duplicity
所有命令都重複失敗,斷言 filecount == len(self.files_changed) AssertionError
無論我在這個重複配置文件上嘗試哪個命令,它總是會出錯。
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://root@10.21.230.69: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" root@10.21.230.69:/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" root@10.21.230.69:/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 ---
這條評論幫助我解決了這個問題
“刪除最後一個損壞的備份”
所有 .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
刪除這些文件後它可以正常工作。這些都是不完整的備份,應該以任何方式清理。