ftp remote backup broken with ncftp 3.2.3

Bug #486241 reported by bill
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Duplicity
Invalid
Low
edso

Bug Description

I'm using duplicity 6.0.5, python 2.6.4, with ncftpput 3.2.3 on arch linux (i686), using ftp to back up to a dlink 624 router with a usb-connected drive

duplicity was not creating incremental backups ever - it always started over with a new full backup.

i'm using the duply wrapper, but the same problem exists using duplicity from the command line.

inspecting the server i found that the backup files were being placed on the ftp root directory, and not the sub directory as specified. This might not have been a big problem, except that ncftpls was looking in the correct subdirectory on the server, and finding nothing.

inspecting the calls to ncftpput, i noticed that they had the form
- ncftpput -f configfile -F -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C 'pathtofilefortransfer' 'pathtofileonserver'
runing a similar command directly generated errors, and using -d turned up an inability to change directory on the server.
reading the ncftpput manual suggested that the -C option isn't supported with the -f option

i changed duplicity/backends/ftpbackend.py to call ncftpput using the following form
- ncftpput -f configfile -F -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V 'pathtobackupdirectoryonserver' 'pathtofilefortransfer'
with the result that the backup files landed in the intended directory, and incremental backups are now working.

difference on the files
*** ftpbackend.py.old 2009-08-29 00:47:43.000000000 +1000
--- ftpbackend.py 2009-11-21 22:02:25.000000000 +1100
***************
*** 1,3 ****
--- 1,4 ----
+ # -*- coding: utf-8 -*-
  # -*- Mode:Python; indent-tabs-mode:nil; tab-width:4 -*-
  #
  # Copyright 2002 Ben Escoto <email address hidden>
***************
*** 89,97 ****
          """Transfer source_path to remote_filename"""
          if not remote_filename:
              remote_filename = source_path.get_filename()
! remote_path = os.path.join(urllib.unquote(self.parsed_url.path.lstrip('/')), remote_filename).rstrip()
! commandline = "ncftpput %s -m -V -C '%s' '%s'" % \
! (self.flags, source_path.name, remote_path)
          self.run_command_persist(commandline)

      def get(self, remote_filename, local_path):
--- 90,98 ----
          """Transfer source_path to remote_filename"""
          if not remote_filename:
              remote_filename = source_path.get_filename()
! remote_path = os.path.join(urllib.unquote(self.parsed_url.path.lstrip('/'))).rstrip()
! commandline = "ncftpput %s -m -V '%s' '%s'" % \
! (self.flags, remote_path, source_path.name)
          self.run_command_persist(commandline)

      def get(self, remote_filename, local_path):

output of duplicity --verbosity 9
$ FTP_PASSWORD="" duplicity --verbosity 9 --encrypt-key="F686214C" /home/bill/sys ftp://anonymous@192.168.0.1:21/kincha/backups
Using archive dir: /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1
Using backup name: bc97b9a36bc269d3bf7129f0f58a45d1
Import of duplicity.backends.webdavbackend Succeeded
Import of duplicity.backends.botobackend Succeeded
Import of duplicity.backends.rsyncbackend Succeeded
Import of duplicity.backends.sshbackend Succeeded
Import of duplicity.backends.hsibackend Succeeded
Import of duplicity.backends.tahoebackend Succeeded
Import of duplicity.backends.imapbackend Succeeded
Import of duplicity.backends.ftpbackend Succeeded
Import of duplicity.backends.cloudfilesbackend Succeeded
Import of duplicity.backends.localbackend Succeeded
Import of duplicity.backends.giobackend Succeeded
NcFTP version is 3.2.3
Using temporary directory /tmp/duplicity-03XnIP-tempdir
Registering (mkstemp) temporary file /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1
Main action: inc
================================================================================
duplicity 0.6.05 (August 28, 2009)
Args: /usr/bin/duplicity --verbosity 9 --encrypt-key=F686214C /home/bill/sys ftp://anonymous@192.168.0.1:21/kincha/backups
Linux wakakusa 2.6.31-ARCH #1 SMP PREEMPT Fri Oct 23 11:12:58 CEST 2009 i686 Genuine Intel(R) CPU T2500 @ 2.00GHz
/usr/bin/python 2.6.4 (r264:75706, Oct 27 2009, 06:16:59)
[GCC 4.4.1]
================================================================================
Registering (mkstemp) temporary file /tmp/duplicity-03XnIP-tempdir/mkstemp-h1yGd8-2
Temp has 79474208768 available, backup will use approx 34078720.
Reading results of 'ncftpls -f /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1 -F -t 30 -o useCLNT=0,useHELP_SITE=0 -l 'ftp://192.168.0.1:21/kincha/backups/''
Synchronizing remote metadata to local cache...
Deleting local /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-full.20091121T100708Z.manifest (not authoritative at backend).
Reading results of 'ncftpls -f /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1 -F -t 30 -o useCLNT=0,useHELP_SITE=0 -l 'ftp://192.168.0.1:21/kincha/backups/''
0 files exist on backend
0 files exist in cache
Extracting backup chains from list of files: []
Last full backup date: none
Collection Status
-----------------
Connecting with backend: FTPBackend
Archive dir: /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1

Found 0 backup chains without signatures.
No backup chains with active signatures found
No orphaned or incomplete backup sets found.
No signatures found, switching to full backup.
Using temporary directory /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-tv3EMA-tempdir
Registering (mktemp) temporary file /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-tv3EMA-tempdir/mktemp-oPTgBZ-1
Using temporary directory /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-z8Knb1-tempdir
Registering (mktemp) temporary file /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-z8Knb1-tempdir/mktemp-CjbAAw-1
AsyncScheduler: instantiating at concurrency 0
Registering (mktemp) temporary file /tmp/duplicity-03XnIP-tempdir/mktemp-81BpdP-3
Selecting /home/bill/sys
Comparing () and None
Getting delta of (() /home/bill/sys dir) and None
A .
Selecting /home/bill/sys/.Notes
Comparing ('.Notes',) and None
Getting delta of (('.Notes',) /home/bill/sys/.Notes reg) and None
A .Notes
Selecting /home/bill/sys/.Notes~
Comparing ('.Notes~',) and None
Getting delta of (('.Notes~',) /home/bill/sys/.Notes~ reg) and None
A .Notes~
Selecting /home/bill/sys/.Yaws-notes.txt~
Comparing ('.Yaws-notes.txt~',) and None
Getting delta of (('.Yaws-notes.txt~',) /home/bill/sys/.Yaws-notes.txt~ reg) and None
A .Yaws-notes.txt~
Selecting /home/bill/sys/.arch-linux-notes.txt~
Comparing ('.arch-linux-notes.txt~',) and None
Getting delta of (('.arch-linux-notes.txt~',) /home/bill/sys/.arch-linux-notes.txt~ reg) and None
A .arch-linux-notes.txt~
Selecting /home/bill/sys/.etc-bash.bashrc.local~
Comparing ('.etc-bash.bashrc.local~',) and None
Getting delta of (('.etc-bash.bashrc.local~',) /home/bill/sys/.etc-bash.bashrc.local~ reg) and None
A .etc-bash.bashrc.local~
Selecting /home/bill/sys/.package-download~
Comparing ('.package-download~',) and None
Getting delta of (('.package-download~',) /home/bill/sys/.package-download~ reg) and None
A .package-download~
Selecting /home/bill/sys/.wiki-notes.txt~
Comparing ('.wiki-notes.txt~',) and None
Getting delta of (('.wiki-notes.txt~',) /home/bill/sys/.wiki-notes.txt~ reg) and None
A .wiki-notes.txt~
Selecting /home/bill/sys/.yaws~
Comparing ('.yaws~',) and None
Getting delta of (('.yaws~',) /home/bill/sys/.yaws~ reg) and None
A .yaws~
Selecting /home/bill/sys/65-libmtp.rules
Comparing ('65-libmtp.rules',) and None
Getting delta of (('65-libmtp.rules',) /home/bill/sys/65-libmtp.rules reg) and None
A 65-libmtp.rules
Selecting /home/bill/sys/Notes-old
Comparing ('Notes-old',) and None
Getting delta of (('Notes-old',) /home/bill/sys/Notes-old reg) and None
A Notes-old
Selecting /home/bill/sys/cfg-test
Comparing ('cfg-test',) and None
Getting delta of (('cfg-test',) /home/bill/sys/cfg-test reg) and None
A cfg-test
Selecting /home/bill/sys/etc-bash.bashrc.local
Comparing ('etc-bash.bashrc.local',) and None
Getting delta of (('etc-bash.bashrc.local',) /home/bill/sys/etc-bash.bashrc.local reg) and None
A etc-bash.bashrc.local
Selecting /home/bill/sys/etc_network_interfaces.bk
Comparing ('etc_network_interfaces.bk',) and None
Getting delta of (('etc_network_interfaces.bk',) /home/bill/sys/etc_network_interfaces.bk reg) and None
A etc_network_interfaces.bk
Selecting /home/bill/sys/installed-software-2009-01-11h.txt
Comparing ('installed-software-2009-01-11h.txt',) and None
Getting delta of (('installed-software-2009-01-11h.txt',) /home/bill/sys/installed-software-2009-01-11h.txt reg) and None
A installed-software-2009-01-11h.txt
Selecting /home/bill/sys/mysql_index_coding_optimization.pdf
Comparing ('mysql_index_coding_optimization.pdf',) and None
Getting delta of (('mysql_index_coding_optimization.pdf',) /home/bill/sys/mysql_index_coding_optimization.pdf reg) and None
A mysql_index_coding_optimization.pdf
Selecting /home/bill/sys/package-download
Comparing ('package-download',) and None
Getting delta of (('package-download',) /home/bill/sys/package-download reg) and None
A package-download
Selecting /home/bill/sys/rubbish
Comparing ('rubbish',) and None
Getting delta of (('rubbish',) /home/bill/sys/rubbish reg) and None
A rubbish
Selecting /home/bill/sys/testtest
Comparing ('testtest',) and None
Getting delta of (('testtest',) /home/bill/sys/testtest reg) and None
A testtest
Selecting /home/bill/sys/weekly-update
Comparing ('weekly-update',) and None
Getting delta of (('weekly-update',) /home/bill/sys/weekly-update reg) and None
A weekly-update
Selecting /home/bill/sys/wiki-notes.txt
Comparing ('wiki-notes.txt',) and None
Getting delta of (('wiki-notes.txt',) /home/bill/sys/wiki-notes.txt reg) and None
A wiki-notes.txt
Removing still remembered temporary file /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-tv3EMA-tempdir/mktemp-oPTgBZ-1
Cleanup of temporary file /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-tv3EMA-tempdir/mktemp-oPTgBZ-1 failed
Removing still remembered temporary file /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-z8Knb1-tempdir/mktemp-CjbAAw-1
Cleanup of temporary file /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-z8Knb1-tempdir/mktemp-CjbAAw-1 failed
AsyncScheduler: running task synchronously (asynchronicity disabled)
Running 'ncftpput -f /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1 -F -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C '/tmp/duplicity-03XnIP-tempdir/mktemp-81BpdP-3' 'kincha/backups/duplicity-full.20091121T100905Z.vol1.difftar.gpg'' (attempt #1)
Deleting /tmp/duplicity-03XnIP-tempdir/mktemp-81BpdP-3
Forgetting temporary file /tmp/duplicity-03XnIP-tempdir/mktemp-81BpdP-3
AsyncScheduler: task completed successfully
Processed volume 1
Running 'ncftpput -f /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1 -F -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C '/home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-full-signatures.20091121T100905Z.sigtar.gpg' 'kincha/backups/duplicity-full-signatures.20091121T100905Z.sigtar.gpg'' (attempt #1)
Running 'ncftpput -f /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1 -F -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C '/home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-full.20091121T100905Z.manifest.gpg' 'kincha/backups/duplicity-full.20091121T100905Z.manifest.gpg'' (attempt #1)
Reading results of 'ncftpls -f /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1 -F -t 30 -o useCLNT=0,useHELP_SITE=0 -l 'ftp://192.168.0.1:21/kincha/backups/''
0 files exist on backend
2 files exist in cache
Extracting backup chains from list of files: []
Deleting /home/bill/.cache/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-full-signatures.20091121T100905Z.sigtar.gz
--------------[ Backup Statistics ]--------------
StartTime 1258798163.87 (Sat Nov 21 21:09:23 2009)
EndTime 1258798164.05 (Sat Nov 21 21:09:24 2009)
ElapsedTime 0.18 (0.18 seconds)
SourceFiles 21
SourceFileSize 988577 (965 KB)
NewFiles 21
NewFileSize 988577 (965 KB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 21
RawDeltaSize 984481 (961 KB)
TotalDestinationSizeChange 927198 (905 KB)
Errors 0
-------------------------------------------------

Removing still remembered temporary file /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1
Removing still remembered temporary file /tmp/duplicity-03XnIP-tempdir/mkstemp-h1yGd8-2

Revision history for this message
edso (ed.so) wrote :

I still see duplicity using

>Running 'ncftpput -f /tmp/duplicity-03XnIP-tempdir/mkstemp-TXLVQl-1 -F -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C '/home/bill/.cache
>/duplicity/bc97b9a36bc269d3bf7129f0f58a45d1/duplicity-full.20091121T100905Z.manifest.gpg' 'kincha/backups/duplicity-
>full.20091121T100905Z.manifest.gpg'' (attempt #1)

in your example output

>inspecting the calls to ncftpput, i noticed that they had the form
>- ncftpput -f configfile -F -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C 'pathtofilefortransfer' 'pathtofileonserver'
>runing a similar command directly generated errors, and using -d turned up an inability to change directory on the server.

can you provide the call and the output? Add -d for verbose ftp commands.

>reading the ncftpput manual suggested that the -C option isn't supported with the -f option

can't find any such statement. Could you point me?

As I see the rationale not to use -f together with -C, (it doubles the hostname) I tried to implement your suggested changes to put & get. Unfortunately ncftpput -f syntax is
ncftpput -f login.cfg [options] remote-directory local-files
which means that all files to be uploaded have to have their final name in the temp folder. That is and will not be the case. To circumvent local copying/renaming these files get renamed during the put/get operation using the -C switch.

Having said that. Please provide further information on the error. For now I'll flag this entry as invalid.

ede/duply.net

Changed in duplicity:
status: New → Invalid
importance: Undecided → Low
assignee: nobody → edso (ed.so)
Revision history for this message
bill (bill-emailme) wrote :
Download full text (5.2 KiB)

Thanks for looking at this Edso, sorry it's taken me a while to respond.

Looks like i wasn't very clear in my bug report - the sample output I posted was from duplicity, before i applied the patch.

My comment about the possible incompatibility between -f and -C was prompted by the synopsis of the two
command forms given on the man page

 ncftpput -f login.cfg [options] remote-directory local-files...
 ncftpput -C remote-host local-path-name remote-path-name

The former is expecting remote directory and then local files, whereas the latter
is looking for a local file path followed by the remote path.

I've recently updated my system, and am now running duplicity 6.11, python 3.1.3, ncftpput 3.2.4 on arch linux (2.6.36-ARCH).

I'm still having the same problem (using the unaltered version of duplicity's ftpbackend.py)
- that is, files are landing on the ftp server's root directory, not the directory path as specified.

A typical call to ncftpput from duplicity is reported as
Reading results of 'ncftpput -f /tmp/duplicity-Ml6SpO-tempdir/mkstemp-R1yab2-1 -F -d /tmp/duply-ncftp-debug.txt -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C '/tmp/duplicity-Ml6SpO-tempdir/mktemp-DPO3pV-3' 'kincha/hosts/uki/duplicity-full.20110102T054312Z.vol1.difftar.gz''

This (simplified) version of the call to ncftpput does not work
ncftpput -f credentials.txt -F -d ncftpput-debug-a.txt -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C a.txt kincha/hosts/uki/a.txt
(that is, it puts the file a.txt in the root directory of the ftp server, not the subdirectory kincha/hosts/uki)

This modified version (without using -C) works
ncftpput -f credentials.txt -F -d ncftpput-debug-b.txt -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V kincha/hosts/uki b.txt
(that is, the file b.txt ends up where I expect, in the subdirectory specified)

============== the output from the first (non-working) transfer (file=ncftpput-debug-a.txt) is
2011-01-02 22:16:38 LibNcFTP 3.2.4 (April 3, 2010) compiled for linux-x86_64-glibc2.11
2011-01-02 22:16:38 Uname: Linux|uki|2.6.36-ARCH|#1 SMP PREEMPT Fri Dec 10 20:32:37 CET 2010|x86_64
2011-01-02 22:16:38 Contents of /etc/issue:
2011-01-02 22:16:38 
2011-01-02 22:16:38 Arch Linux \r (\n) (\l)
2011-01-02 22:16:38 Glibc: 2.12.2 (stable)
2011-01-02 22:16:46 220: Welcome to DI-624S-FTPd server.
2011-01-02 22:16:46 Connected to 192.168.0.1.
2011-01-02 22:16:46 Cmd: USER anonymous
2011-01-02 22:16:46 331: Guest login ok, send your e-mail address as password.
2011-01-02 22:16:46 Cmd: PASS NcFTP@
2011-01-02 22:16:46 230: User anonymous logged in.
2011-01-02 22:16:46 Cmd: PWD
2011-01-02 22:16:46 257: "/" is current directory.
2011-01-02 22:16:46 Logged in to 192.168.0.1 as anonymous.
2011-01-02 22:16:46 Cmd: FEAT
2011-01-02 22:16:46 503: Command not understood.
2011-01-02 22:16:46 Cmd: PWD
2011-01-02 22:16:46 257: "/" is current directory.
2011-01-02 22:16:46 Cmd: CWD kincha/hosts/uki
2011-01-02 22:16:46 250: CWD command successful.
2011-01-02 22:16:46 Cmd: CWD /
2011-01-02 22:16:46 250: CWD command successful.
2011-01-02 22:16:46 Cmd: TYPE I
2011-01-02 22:16:46 200: Type set to I.
2011-01-02 22:16:46 Cmd: PASV
2011-01-02 22:16:46 22...

Read more...

Revision history for this message
edso (ed.so) wrote :

I see your problem now.. but running

ncftpput -f ftp.txt -F -d ./ncftp-debug.txt -t 30 -o useCLNT=0,useHELP_SITE=0 -m -V -C 'test/a.txt' 'files/test/a.txt'

against a proftpd results in

==> ncftp-debug.txt <==
LibNcFTP 3.2.3 (September 4, 2008) compiled for linux-x86-glibc2.9
Uname: Linux|h1656384|2.6.27.48-0.3-default|#1 SMP 2010-09-20 11:03:26 -0400|i686
Contents of /etc/SuSE-release:
  openSUSE 11.1 (i586)
  VERSION = 11.1
Contents of /etc/issue:
  Welcome to openSUSE 11.1 - Kernel \r (\l).
Glibc: 2.9 (stable)
220: FTP Server ready.
Connected to host.org.
Cmd: USER user
331: Password required for user.
Cmd: PASS xxxxxxxx
230: User user logged in.
Cmd: PWD
257: "/" is current directory.
Logged in to host.org as user.
Cmd: FEAT
211: Features:
      MDTM
      REST STREAM
      SIZE
     End
Cmd: PWD
257: "/" is current directory.
Cmd: CWD files/test
550: files/test: No such file or directory
Cmd: CWD files
250: CWD command successful
Cmd: MKD test
257: "/files/test" - Directory successfully created
Cmd: CWD /
250: CWD command successful
Cmd: TYPE I
200: Type set to I
Cmd: PASV
227: Entering Passive Mode (85,25,88,20,179,19).
Cmd: STOR files/test/a.txt
150: Opening BINARY mode data connection for files/test/a.txt
226: Transfer complete.
Cmd: MDTM 20110102135113 files/test/a.txt
550: 20110102135113 files/test/a.txt: No such file or directory
Cmd: QUIT
221: Goodbye.

with the file located in files/test/a.txt .. so I guess this is a bug in your routers ftp server. Sorry.

I see three workarounds, considering you won't install openwrt on your router.
A. well upload to a compatible ftp server ;)
B. write a shell script for ncftpput command remapping the -C call to the working alternative. Be sure to rename the files to upload first.
C. if you speak python, try to add the proposed lftp backend https://bugs.launchpad.net/duplicity/+bug/626915 and enable it's ftp support.

.. ede/duply.net

Revision history for this message
bill (bill-emailme) wrote : Re: [Bug 486241] Re: ftp remote backup broken with ncftp 3.2.3

thanks for your help - sorry to have troubled you with a problem caused by my
(now known to be a) dodgy router/server

thanks again

bill.

On Mon, 3 Jan 2011 01:35:23 am you wrote:
> I see your problem now.. but running
>
> ncftpput -f ftp.txt -F -d ./ncftp-debug.txt -t 30 -o
> useCLNT=0,useHELP_SITE=0 -m -V -C 'test/a.txt' 'files/test/a.txt'
>
> against a proftpd results in
>
> ==> ncftp-debug.txt <==
> LibNcFTP 3.2.3 (September 4, 2008) compiled for linux-x86-glibc2.9
> Uname: Linux|h1656384|2.6.27.48-0.3-default|#1 SMP 2010-09-20 11:03:26
> -0400|i686 Contents of /etc/SuSE-release:
> openSUSE 11.1 (i586)
> VERSION = 11.1
> Contents of /etc/issue:
> Welcome to openSUSE 11.1 - Kernel \r (\l).
> Glibc: 2.9 (stable)
> 220: FTP Server ready.
> Connected to host.org.
> Cmd: USER user
> 331: Password required for user.
> Cmd: PASS xxxxxxxx
> 230: User user logged in.
> Cmd: PWD
> 257: "/" is current directory.
> Logged in to host.org as user.
> Cmd: FEAT
> 211: Features:
> MDTM
> REST STREAM
> SIZE
> End
> Cmd: PWD
> 257: "/" is current directory.
> Cmd: CWD files/test
> 550: files/test: No such file or directory
> Cmd: CWD files
> 250: CWD command successful
> Cmd: MKD test
> 257: "/files/test" - Directory successfully created
> Cmd: CWD /
> 250: CWD command successful
> Cmd: TYPE I
> 200: Type set to I
> Cmd: PASV
> 227: Entering Passive Mode (85,25,88,20,179,19).
> Cmd: STOR files/test/a.txt
> 150: Opening BINARY mode data connection for files/test/a.txt
> 226: Transfer complete.
> Cmd: MDTM 20110102135113 files/test/a.txt
> 550: 20110102135113 files/test/a.txt: No such file or directory
> Cmd: QUIT
> 221: Goodbye.
>
> with the file located in files/test/a.txt .. so I guess this is a bug in
> your routers ftp server. Sorry.
>
> I see three workarounds, considering you won't install openwrt on your
> router. A. well upload to a compatible ftp server ;)
> B. write a shell script for ncftpput command remapping the -C call to the
> working alternative. Be sure to rename the files to upload first. C. if
> you speak python, try to add the proposed lftp backend
> https://bugs.launchpad.net/duplicity/+bug/626915 and enable it's ftp
> support.
>
> .. ede/duply.net

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.