Errors while syncing to Webdav under Linux

Get help for specific problems
Posts: 16
Joined: 11 Mar 2010

arneko

Hi,
I'm having trouble syncing to a webdav server mounted via gvfs on my Ubuntu
machine. The comparison runs without trouble and it's nice and fast and finds
all missing files etc, however, it won't copy a single file to the server.

I get a generic Error message about FFS not being able to open the file on the
server (sounds funny, since it is not actually there yet, so there is in fact
nothing to open)

So unfortunately I can't use FFS under Linux at all (at least not for my
purposes...)

Anyways, it is a neat program under windows ;-)

Arne
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

Hi Arne,

could you please open a bug tracker item on this and provide me with some
additional info? In v3.5 RC I've rewritten the Linux file copy routine. It is
possible that the problems you face are already solved.... but there is only
one way to find out... :)

Regards, Zenju
Posts: 16
Joined: 11 Mar 2010

arneko

I'd love to give you more information on this, However, I don't get any debug
information from ffs.
Both Windows and Linux don't report the free disk space incorrectly, Linux
even claims there is zero disk space left on the server which could also cause
the copy routine to fail.
Any Idea how I could generate some debug information?

Arne
Posts: 16
Joined: 11 Mar 2010

arneko

Not sure if this has anything to do with it, but as soon as FFS starts copying
I get some output on the console:

(FreeFileSync:14953): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2387: instance `0x8e51880' has
no handler with id `14268'

(FreeFileSync:14953): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2387: instance `0x8e51880' has
no handler with id `15649'

(FreeFileSync:14953): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2387: instance `0x8e32008' has
no handler with id `15723'

(FreeFileSync:14953): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2387: instance `0x8ca2120' has
no handler with id `15797'

(FreeFileSync:14953): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2387: instance `0x90ab6c0' has
no handler with id `15883'

(FreeFileSync:14953): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2387: instance `0x8e31538' has
no handler with id `15980'

(FreeFileSync:14953): GLib-GObject-WARNING **:
/build/buildd/glib2.0-2.22.3/gobject/gsignal.c:2387: instance `0x8e31238' has
no handler with id `16065'

I really have no idea on how to generate more helpful output....

Arne
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

Hi Arne,

the warning messages don't have to do with file copying directly. They are
related to wxWidgets GUI logic. If you don't have issues with GUI you can
probably ignore them.

But back to file copying:

Here is the link to the current sources: They include the new Linux copy
routine which gives better error messages. Could you try and see what you get?

[404, Invalid URL: http://www.file-upload.net/download-2337407/FFS_v3.5_RC.rar.html]
Posts: 16
Joined: 11 Mar 2010

arneko

The problem is still there:

Linux Error Code 2: No such file or directory
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

Could you post the full error message as well as source and target directory
names please?
Posts: 16
Joined: 11 Mar 2010

arneko

It says

"Fehler beim Schreiben der Datei:
"/home/arne/.gvfs/WebDAV auf sd2dav.1und1.de/Music/F/Francisco
Canaro/Francisco Canaro y su Orquesta Tipica/Francisco Canaro y su Orquesta
Tipica - 01 - Esta noche me emborracho.mp3.ffs_tmp"

Linux Error Code 2: No such file or directory


Fehler ignorieren, wiederholen oder Synchronisation abbrechen?"

the source is a locally mounted fs on /medía/Data/Multimedia/Music
the target, as mentioned in the popup /home/arne/.gvfs/WebDAV auf
sd2dav.1und1.de/Music/
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

> Linux Error Code 2: No such file or directory

This is shown after a failed attempt to create a writable file output stream.

Could you test whether it makes a difference if you try to sync from a
"shorter" filename (generally I'd expect Linux not to have a problem with a
~180 char filename, but who knows.)

Are you able to write to the webdav folder with some other tools, like a file
browser (nautilus, konqueror, or whatever you are using) or commandline "cp"?

In general I'd say if it is possible to write to this drive via commandline
(or file browser) FFS also should be able to do this. (Internally FFS pretty
much uses the same APIs, so this should work as expected.)
Posts: 16
Joined: 11 Mar 2010

arneko

Nautilus lets me do whatever I want, the commandline lets me create folders
(mkdir) but I couldn't create a file using dd if=/dev/zero of=/path to
webdav/foo
,giving me a similar error message "No such file or directory"

Seems to be a bug or limitation in .gvfs/fusedav

If you have any ideas on how to circumvent this problem, let me know, I will
try using webdavfs and see if the problem persists.

Thank you for your time and support anyways!

Arne
Posts: 16
Joined: 11 Mar 2010

arneko

..so I played around a bit: It appears nautilus uses its own utility to write
stuff to gv-file-systems. e.g. if I try gvfs-move, it works, if i use mv or dd
it does not.
btw the files I tried to create are in fact there, they just have 0-byte
length
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

Hi Arne,

this here is probably the reason why it is not working with FFS:

http://de.wikipedia.org/wiki/GVFS
"GVFS ist allein über GIO, dessen Programmierschnittstelle dokumentiert ist,
nutzbar."

On the other hand: I'm already using GIO to facilitate Linux recycle bin
usage. If it's only the file copying that causes trouble (file traversing you
said works without problems) then it shouldn't be too difficult to support
this (provided it is somehow possible to detect GVFS)
Posts: 16
Joined: 11 Mar 2010

arneko

Well, it would be really awesome if you could implement this, as FFS is by far
the best Sync tool I have used in a while (at least under windows, that
is...;-D )

I am really not much of a programmer but maybe this
function can provide a way to determine if it's gvfs mounted or not.

If it's not too hard to implement I would be really grateful for your support.

Arne
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

I had some closer look at this issue. Therefore I've setup a WebDav drive
using "fusedav" on Ubuntu 9.10.

Results:
- I was able to copy files from WebDav to a folder on harddisk witout any problems
- I was not able to copy files to WebDav. BUT I got a different error message "Error changing modification time"

I twiddled a bit with the FFS sourcecode and found out that FFS has no
problems copying files to WebDav in general. But it is not able to change the
file's timestamp and access rights. This is either not supported by "fusedav"
or by the WebDav protocoll (where I'd assume latter to be more likely)

Then I tested copying files to WebDav using the volume mounted by "fusedav"
within Nautilus as well as a native WebDav mount using Nautilus (Menu -> File
-> Connect to Server...): Either way the file was copied to WebDav, but the
modification date was NOT copied but set to the current WebDav server time.

So the situation is that copying to WebDav is working in general, but setting
a modification date is not possible (at least not with "fusedav" but likely
not at all). This is a big problem, because file synchronization uses
modification dates to detect changes...
Posts: 16
Joined: 11 Mar 2010

arneko

Interesting.
Why would you get a different Error Message? Or rather, why can you copy files
to gvfsystems...
I used the same webdav server on windows, and it worked fine, so isn't that an
indicator that it must be a fusedav issue?
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

> Why different Error Message?
Hard to say. I've been trying with very short filenames in the root of the
WebDav folder. Maybe this is some other issue related the name of the file...

> isn't that an indicator that it must be a fusedav issue?
A moment ago i've made a quick test trying to copy to WebDav via GIO (the same
API Nautilus uses internally). Not surprisingly copying worked, but file
modification date is not set. So right now I see no way how to copy files to
WebDav AND preserve file times (in Linux) if even Nautilus cannot do this.

For Windows on the other hand it works right from the spot: Copying via
Explorer preserves file timestamps.
For Linux both methods using "C- fopen() + utime()" or "GIO- g_file_copy()"
fail to do this.
Posts: 16
Joined: 11 Mar 2010

arneko

A pity. I played around with GIO as well but didn't find anything useful.
Seems to me like a major flaw in the api

Anyways, I tried FFS using davfs. FFS compared, found modified files and
copied them really fast- into the cache. Where they remain.. forever.

Possibly there is something wrong with my setup as It seems like I can't
perform certain actions (like: deleting files: the Folder .Trash appears with
the deleted files inside, but the files are still there...)

But odds are that even with davfs it is not possible to change/copy filestats

I will try this again later today.. after I fixed my computer. davfs at first
just made it slow, after writing it into the fstab I can't get it to run
anymore ;-)

Cheers

Arne
Posts: 16
Joined: 11 Mar 2010

arneko

Hi,

so, I tried different setups using FFS in Linux, using several different
remote connection types (ftp, smb, dav). I also played around with gio (in
Python though, my c++ knowledge is severely limited).

I came to the conclusion, that using gio in FFS would be awesome. It would
enable ffs to use remote servers, which is not possible in Linux right now.

Using alternatives to fuse did not lead to satisfying results in my tests, and
it is really hard to get support from their developers.

I would LOVE to see gio supported in future versions of FFS.

Well, there are a few other things I would love to see, but this is definitely
one of the most anticipated features for me!

Arne
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

What do you mean by "using gio in FFS"? Using GIO's g_file_copy() in
combination with "fusedav" failed to preserve modification times. Is there
some other possible use of GIO functionality that could be interesting?
Posts: 16
Joined: 11 Mar 2010

arneko

I tested the GIO Library in Python (using Linux), and I was able to modify
Filedates on a Samba share. I think on of FFS's (many) key features is its
ability to synchronize over slow connections- unfortunately that is almost
impossible for a Linux user, because of the necessity to use GIO (and the poor
support for attribute modification, at least for fusedav :-| ).

BTW, I was able to change file attributes using the commandline tool cadaver,
so it is indeed a supported feature in Linux...

Anyways, it would be great if you could implement GIO, so that it's possible
to sync over a network connection...
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

I think that it is more a fusedav restriction and not related to GIO or the
Linux C-Api that is used in FFS (fopen, fclose, fread). In my tests, using GIO
in combination with fusedav to copy files did not preserve timestamps.
Posts: 16
Joined: 11 Mar 2010

arneko

Well, this is not so much about fusedav anymore (Sorry I didn't make this
clearer in previous posts). I also came to the conclusion, that the most
reliable way to make FFS work with webdav is to write a version of fusedav
myself - which probably is not going to happen. I also found, however, that
samba is also not supported by FFS, which is a real pity.

Using GIO would at least make samba synchronization possible... possibly
others I havent checked, too (ftp, ssh, s2 etc.)
User avatar
Site Admin
Posts: 7050
Joined: 9 Dec 2007

Zenju

What is the problem with Samba? I haven't explicitly tested with SAMBA, but
just did a sync against a Windows share using Virtual Box specific means which
worked fine. So I wouldn't expect issues in general.