duplicity-talk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Duplicity-talk] duplicity 0.5.14 - No signatures found - really str


From: Kenneth Loafman
Subject: Re: [Duplicity-talk] duplicity 0.5.14 - No signatures found - really strange...
Date: Wed, 08 Apr 2009 06:45:44 -0500
User-agent: Thunderbird 2.0.0.21 (X11/20090318)

Francis,

I've attached a patch for this.  Please try it out and let me know how
it goes.  It appears that a recent fix for one FTP server led to a break
when using a PureFTP server (found in trace log).  This should fix both.

...Thanks,
...Ken

François FOURRIER wrote:
> Hello,
> 
> I did it again so you can have a clean duplicity log and ncftp/trace log.
> You'll find the files attached, at the end of the trace.log you can read : 
> 
> 09:24:11  221: Goodbye. You uploaded 0 and downloaded 0 kbytes.
> 
> Weird  ! And the files are really there : (See duplicity_ncftp_listing.log)
> 
> I do not understand what's happening there, could the multiple 'ncftp put"
> retries be the cause ?
> 
> Thanks for your help...
> 
> François FOURRIER
> -----------------
> Sites Web - E-commerce
> Outils de veille tarifaire pour les professionnels du e-commerce.
> http://www.fourrier.com
> 
> 
> -----Message d'origine-----
> De : address@hidden
> [mailto:address@hidden De la part
> de Kenneth Loafman
> Envoyé : mercredi 8 avril 2009 03:40
> À : Discussion of the backup program duplicity
> Objet : Re: [Duplicity-talk] duplicity 0.5.14 - No signatures found - really
> strange...
> 
> François FOURRIER wrote:
>> Hello,
>>
>> Thanks for you answer, I dit it again using the double // with the 
>> same result...
>>
>> The log is invasive you'll find it here :
>>
>> http://www.fourrier.com/duplicity.log
> 
> These two lines near the end of the log really bug me:
>   0 files exist on backend
>   Extracting backup chains from list of files: [] That says that the ls did
> not find any files at all, even after what appears to be a successful
> backup.
> 
> If you still have the ~/.ncftp/trace file from this run, could you post that
> as well?  I'm not seeing the problem at all.
> 
> Can you verify that the files exist on the remote?
> 
> ...Thanks,
> ...Ken
> 
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Duplicity-talk mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/duplicity-talk

Index: duplicity/backends/ftpbackend.py
===================================================================
RCS file: /sources/duplicity/duplicity/duplicity/backends/ftpbackend.py,v
retrieving revision 1.19
diff -u -r1.19 ftpbackend.py
--- duplicity/backends/ftpbackend.py    2 Apr 2009 14:47:16 -0000       1.19
+++ duplicity/backends/ftpbackend.py    3 Apr 2009 15:15:57 -0000
@@ -22,6 +22,7 @@
 import os
 import os.path
 import urllib
+import re
 
 import duplicity.backend
 from duplicity import globals
@@ -84,6 +85,11 @@
         if parsed_url.port != None and parsed_url.port != 21:
             self.flags += " -P '%s'" % (parsed_url.port)
 
+        if not globals.short_filenames:
+            self.filename_re = re.compile("duplicity-[^\s]+")
+        else:
+            self.filename_re = re.compile("(?:df|di|dfs|dns)\\.[^\s]+")
+
     def put(self, source_path, remote_filename = None):
         """Transfer source_path to remote_filename"""
         remote_path = 
os.path.join(urllib.unquote(self.parsed_url.path.lstrip('/')), 
remote_filename).rstrip()
@@ -101,19 +107,22 @@
 
     def list(self):
         """List files in directory"""
-        # try for a long listing to avoid connection reset
-        commandline = "ncftpls %s -l '%s'" % \
-            (self.flags, self.url_string)
+        # Do a long listing to avoid connection reset
+        commandline = "ncftpls %s -l '%s'" % (self.flags, self.url_string)
         l = self.popen_persist(commandline).split('\n')
         l = filter(lambda x: x, l)
-        if not l:
-            return l
-        # if long list is not empty, get short list of names only
-        commandline = "ncftpls %s '%s'" % \
-            (self.flags, self.url_string)
-        l = self.popen_persist(commandline).split('\n')
-        l = [x.split()[-1] for x in l if x]
-        return l
+        # Look for our files
+        names = []
+        for x in l:
+            parts = x.split()
+            # The name is either the first or the last part
+            # of the line.  Try the last part first since
+            # that's the most common.
+            if self.filename_re.match(parts[-1]):
+                names.append(parts[-1])
+            elif self.filename_re.match(parts[0]):
+                names.append(parts[0])
+        return names
 
     def delete(self, filename_list):
         """Delete files in filename_list"""

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]