I also have a problem running duplicity via backupninja: on its own, duplicity works: $ export PASSPHRASE=my_passphrase $ duplicity --full --no-print-statistics --encrypt-key XXXXXXX --sign-key XXXXXXXX --remove-older-than 60D --exclude '/home/*/.gnupg' --exclude '/home/*/.gnupg' --exclude '/home/*/.local/share/Trash' --exclude '/home/*/.Trash' --exclude '/home/*/.thumbnails' --exclude '/home/*/.beagle' --exclude '/home/*/.aMule' --exclude '/home/*/gtk-gnutella-downloads' --exclude '/home/cyril/backups' --include '/var/spool/cron/crontabs' --include '/var/backups' --include '/etc' --include '/root' --include '/home' --include '/usr/local/*bin' --include '/var/lib/dpkg/status*' --exclude '**' / scp://login@host//directory (the duplicity command is a copy of the one generated by the backupninja script) however, running backupninja fails (line breaks added for readability): backupninja --debug --run /etc/backup.d/90.dup Debug: check_perms /etc/backup.d Debug: perms: drwxrwx--- Debug: gperm: rwx Debug: wperm: --- Debug: check_perms /etc/backup.d/90.dup Debug: perms: -rw------- Debug: gperm: --- Debug: wperm: --- Info: >>>> starting action /etc/backup.d/90.dup (because of --now) Debug: yes Debug: ssh -o PasswordAuthentication=no host -l login 'echo -n 1' Debug: Connected to host as login successfully Debug: Data will be encrypted with the GnuPG key XXXXXXXX. Debug: Data will be signed will the GnuPG key XXXXXXXX. duplicity --full --no-print-statistics --encrypt-key XXXXXXX --sign-key XXXXXXXX --remove-older-than 60D --exclude '/home/*/.gnupg' --exclude '/home/*/.gnupg' --exclude '/home/*/.local/share/Trash' --exclude '/home/*/.Trash' --exclude '/home/*/.thumbnails' --exclude '/home/*/.beagle' --exclude '/home/*/.aMule' --exclude '/home/*/gtk-gnutella-downloads' --exclude '/home/cyril/backups' --include '/var/spool/cron/crontabs' --include '/var/backups' --include '/etc' --include '/root' --include '/home' --include '/usr/local/*bin' --include '/var/lib/dpkg/status*' --exclude '**' / scp://login@host//directory Debug: Warning, found incomplete backup sets, probably left from aborted session No signatures found, switching to full backup. Traceback (most recent call last): File "/usr/bin/duplicity", line 394, in if __name__ == "__main__": main() File "/usr/bin/duplicity", line 387, in main if not sig_chain: full_backup(col_stats) File "/usr/bin/duplicity", line 146, in full_backup bytes_written = write_multivol("full", tarblock_iter, globals.backend) File "/usr/bin/duplicity", line 82, in write_multivol globals.gpg_profile,globals.volsize) File "/usr/lib/python2.5/site-packages/duplicity/gpg.py", line 198, in GPGWriteFile try: data = block_iter.next(bytes_to_go).data File "/usr/lib/python2.5/site-packages/duplicity/diffdir.py", line 407, in next result = self.process(self.input_iter.next(), size) File "/usr/lib/python2.5/site-packages/duplicity/diffdir.py", line 277, in get_delta_iter_w_sig (new_path, sig_path, sigTarFile)) File "/usr/lib/python2.5/site-packages/duplicity/robust.py", line 31, in check_common_error try: return function(*args) File "/usr/lib/python2.5/site-packages/duplicity/diffdir.py", line 309, in get_delta_path_w_sig if not new_path.isreg(): sigTarFile.addfile(ti) File "/usr/lib/python2.5/site-packages/duplicity/tarfile.py", line 762, in addfile self.fileobj.write(full_headers) File "/usr/lib/python2.5/site-packages/duplicity/dup_temp.py", line 120, in write return self.fileobj.write(buf) File "/usr/lib/python2.5/site-packages/duplicity/gpg.py", line 117, in write def write(self, buf): return self.gpg_input.write(buf) IOError: [Errno 32] Broken pipe close failed: [Errno 32] Broken pipe close failed: [Errno 32] Broken pipe Fatal: Duplicity failed. Fatal: <<<< finished action /etc/backup.d/90.dup: FAILED Debug: send report to cyril@localhost df: `': Aucun fichier ou répertoire de ce type Info: FINISHED: 1 actions run. 1 fatal. 0 error. 0 warning. also note that to get this far, I had to modify the duplicity script located in /usr/share/backupninja, to remove --ssh-command 'ssh $sshoptions' from lines 86 and 88, as this generated an error message because this option is not recognized (nor is it mentioned in the duplicity documentation)