Keep Up To Date doesn't work within 1 minute intervals

Advertisement

martynj
Joined:
Posts:
3

Keep Up To Date doesn't work within 1 minute intervals

Hi

I'm trying to set up winSCP (keepuptodate function) with FileZilla server (all latest versions) between two win XP machines, using FTP, and am experiencing a problem with file changes that occur within the same minute.

On saving a tracked file, winSCP detects changes and uploads the file. However on subsequent saves within the same minute, winSCP detects the change (twice) but doesn't upload the changed file. This file then remains un-synchronised until a future file change outside of the one minute boundary.

The problem appears to be that the remote timestamp resolution as seen by winSCP has a precision no greater than one minute.

Running FileZilla client instead of winSCP shows remote timestamps with the full resolution.

I'm working within a continuous-testing environment, and file changes occur quicker than one minute.

Is there a workaround for this problem?

Thanks in advance

Martyn

Reply with quote

Advertisement

martin
Site Admin
martin avatar
Joined:
Posts:
40,476
Location:
Prague, Czechia

Re: Keep Up To Date doesn't work within 1 minute intervals

Can you post a log file both from WinSCP and Filezilla showing directory listing?

Reply with quote

martynj
Joined:
Posts:
3

Hi Martin

Here are the logs...

WinSCP...

> 2009-10-16 10:43:19.826 [Background 2] PWD
< 2009-10-16 10:43:19.826 [Background 2] 257 "/spec" is current directory.
. 2009-10-16 10:43:20.295 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:20.311 Synchronizing local directory 'C:\s\sprockets\spec\' with remote directory '/spec/', params = 187
. 2009-10-16 10:43:20.342 Copying 1 files/directories to remote directory "/spec/"
. 2009-10-16 10:43:20.342 PrTime: Yes; PrRO: No; Rght: rw-r--r--; PrR: No (No); FnCs: N; RIC: 01; Resume: Y (102400); CalcS: Yes; Mask: *.*
. 2009-10-16 10:43:20.342 TM: M; ClAr: No; CPS: 0; ExclM(No):
. 2009-10-16 10:43:20.342 AscM: *.rb *.c *.spec *.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml
. 2009-10-16 10:43:20.342 File: "C:\s\sprockets\spec\state_machines_spec.rb"
. 2009-10-16 10:43:20.342 Copying "C:\s\sprockets\spec\state_machines_spec.rb" to remote directory started.
. 2009-10-16 10:43:20.342 Binary transfer mode selected.
. 2009-10-16 10:43:20.342 Starting upload of C:\s\sprockets\spec\state_machines_spec.rb
> 2009-10-16 10:43:20.342 CWD /spec/
< 2009-10-16 10:43:20.342 250 CWD successful. "/spec" is current directory.
> 2009-10-16 10:43:20.342 PWD
< 2009-10-16 10:43:20.342 257 "/spec" is current directory.
> 2009-10-16 10:43:20.342 TYPE A
< 2009-10-16 10:43:20.342 200 Type set to A
> 2009-10-16 10:43:20.342 PORT 192,168,10,57,6,173
< 2009-10-16 10:43:20.342 200 Port command successful
> 2009-10-16 10:43:20.342 LIST -a
< 2009-10-16 10:43:20.342 150 Opening data channel for directory list.
< 2009-10-16 10:43:20.342 226 Transfer OK
> 2009-10-16 10:43:20.358 TYPE I
< 2009-10-16 10:43:20.358 200 Type set to I
> 2009-10-16 10:43:20.358 PORT 192,168,10,57,6,175
< 2009-10-16 10:43:20.358 200 Port command successful
> 2009-10-16 10:43:20.358 STOR state_machines_spec.rb
< 2009-10-16 10:43:20.358 150 Opening data channel for file transfer.
< 2009-10-16 10:43:20.358 226 Transfer OK
> 2009-10-16 10:43:20.358 MFMT 20091016094319 state_machines_spec.rb
< 2009-10-16 10:43:20.358 213 modify=20091016094319; /spec/state_machines_spec.rb
. 2009-10-16 10:43:20.358 Upload successful
. 2009-10-16 10:43:20.373 Retrieving directory listing...
> 2009-10-16 10:43:20.373 TYPE A
< 2009-10-16 10:43:20.373 200 Type set to A
> 2009-10-16 10:43:20.373 PORT 192,168,10,57,6,177
< 2009-10-16 10:43:20.373 200 Port command successful
> 2009-10-16 10:43:20.373 LIST -a
< 2009-10-16 10:43:20.373 150 Opening data channel for directory list.
< 2009-10-16 10:43:20.373 226 Transfer OK
. 2009-10-16 10:43:20.373 Directory listing successful
. 2009-10-16 10:43:20.920 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:26.748 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:27.279 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:30.904 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:31.436 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:33.186 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:33.701 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:35.936 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:36.467 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:38.311 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:38.826 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:40.889 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:41.404 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
> 2009-10-16 10:43:49.826 [Background 2] TYPE A
< 2009-10-16 10:43:49.826 [Background 2] 200 Type set to A
. 2009-10-16 10:43:49.826 [Background 2] Retrieving directory listing...
> 2009-10-16 10:43:49.826 [Background 2] TYPE A
< 2009-10-16 10:43:49.826 [Background 2] 200 Type set to A
> 2009-10-16 10:43:49.826 [Background 2] PORT 192,168,10,57,6,180
< 2009-10-16 10:43:49.826 [Background 2] 200 Port command successful
> 2009-10-16 10:43:49.826 [Background 2] LIST -a
< 2009-10-16 10:43:49.826 [Background 2] 150 Opening data channel for directory list.
< 2009-10-16 10:43:49.842 [Background 2] 226 Transfer OK
. 2009-10-16 10:43:49.842 [Background 2] Directory listing successful
> 2009-10-16 10:43:50.826 REST 0
< 2009-10-16 10:43:50.826 350 Rest supported. Restarting at 0
. 2009-10-16 10:44:15.717 [Background 2] Disconnected from server
. 2009-10-16 10:44:15.717 Disconnected from server

FileZilla Server...

> 2009-10-16 10:43:19.826 [Background 2] PWD
< 2009-10-16 10:43:19.826 [Background 2] 257 "/spec" is current directory.
. 2009-10-16 10:43:20.295 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:20.311 Synchronizing local directory 'C:\s\sprockets\spec\' with remote directory '/spec/', params = 187
. 2009-10-16 10:43:20.342 Copying 1 files/directories to remote directory "/spec/"
. 2009-10-16 10:43:20.342 PrTime: Yes; PrRO: No; Rght: rw-r--r--; PrR: No (No); FnCs: N; RIC: 01; Resume: Y (102400); CalcS: Yes; Mask: *.*
. 2009-10-16 10:43:20.342 TM: M; ClAr: No; CPS: 0; ExclM(No):
. 2009-10-16 10:43:20.342 AscM: *.rb *.c *.spec *.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml
. 2009-10-16 10:43:20.342 File: "C:\s\sprockets\spec\state_machines_spec.rb"
. 2009-10-16 10:43:20.342 Copying "C:\s\sprockets\spec\state_machines_spec.rb" to remote directory started.
. 2009-10-16 10:43:20.342 Binary transfer mode selected.
. 2009-10-16 10:43:20.342 Starting upload of C:\s\sprockets\spec\state_machines_spec.rb
> 2009-10-16 10:43:20.342 CWD /spec/
< 2009-10-16 10:43:20.342 250 CWD successful. "/spec" is current directory.
> 2009-10-16 10:43:20.342 PWD
< 2009-10-16 10:43:20.342 257 "/spec" is current directory.
> 2009-10-16 10:43:20.342 TYPE A
< 2009-10-16 10:43:20.342 200 Type set to A
> 2009-10-16 10:43:20.342 PORT 192,168,10,57,6,173
< 2009-10-16 10:43:20.342 200 Port command successful
> 2009-10-16 10:43:20.342 LIST -a
< 2009-10-16 10:43:20.342 150 Opening data channel for directory list.
< 2009-10-16 10:43:20.342 226 Transfer OK
> 2009-10-16 10:43:20.358 TYPE I
< 2009-10-16 10:43:20.358 200 Type set to I
> 2009-10-16 10:43:20.358 PORT 192,168,10,57,6,175
< 2009-10-16 10:43:20.358 200 Port command successful
> 2009-10-16 10:43:20.358 STOR state_machines_spec.rb
< 2009-10-16 10:43:20.358 150 Opening data channel for file transfer.
< 2009-10-16 10:43:20.358 226 Transfer OK
> 2009-10-16 10:43:20.358 MFMT 20091016094319 state_machines_spec.rb
< 2009-10-16 10:43:20.358 213 modify=20091016094319; /spec/state_machines_spec.rb
. 2009-10-16 10:43:20.358 Upload successful
. 2009-10-16 10:43:20.373 Retrieving directory listing...
> 2009-10-16 10:43:20.373 TYPE A
< 2009-10-16 10:43:20.373 200 Type set to A
> 2009-10-16 10:43:20.373 PORT 192,168,10,57,6,177
< 2009-10-16 10:43:20.373 200 Port command successful
> 2009-10-16 10:43:20.373 LIST -a
< 2009-10-16 10:43:20.373 150 Opening data channel for directory list.
< 2009-10-16 10:43:20.373 226 Transfer OK
. 2009-10-16 10:43:20.373 Directory listing successful
. 2009-10-16 10:43:20.920 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:26.748 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:27.279 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:30.904 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:31.436 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:33.186 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:33.701 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:35.936 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:36.467 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:38.311 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:38.826 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:40.889 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
. 2009-10-16 10:43:41.404 Collecting synchronization list for local directory 'C:\s\sprockets\spec\' and remote directory '/spec/', mode = 0, params = 187
> 2009-10-16 10:43:49.826 [Background 2] TYPE A
< 2009-10-16 10:43:49.826 [Background 2] 200 Type set to A
. 2009-10-16 10:43:49.826 [Background 2] Retrieving directory listing...
> 2009-10-16 10:43:49.826 [Background 2] TYPE A
< 2009-10-16 10:43:49.826 [Background 2] 200 Type set to A
> 2009-10-16 10:43:49.826 [Background 2] PORT 192,168,10,57,6,180
< 2009-10-16 10:43:49.826 [Background 2] 200 Port command successful
> 2009-10-16 10:43:49.826 [Background 2] LIST -a
< 2009-10-16 10:43:49.826 [Background 2] 150 Opening data channel for directory list.
< 2009-10-16 10:43:49.842 [Background 2] 226 Transfer OK
. 2009-10-16 10:43:49.842 [Background 2] Directory listing successful
> 2009-10-16 10:43:50.826 REST 0
< 2009-10-16 10:43:50.826 350 Rest supported. Restarting at 0
. 2009-10-16 10:44:15.717 [Background 2] Disconnected from server
. 2009-10-16 10:44:15.717 Disconnected from server

Thanks again for your assistance

Martyn

Reply with quote

martynj

I can only assume that this is indeed a bug within winSCP (one that should be documented).
I've found an alternative route using watchr library, and direct ftp calls that works correctly.

Reply with quote

pursual
Guest

Yeah this is broken

martynj wrote:

I can only assume that this is indeed a bug within winSCP (one that should be documented).
I've found an alternative route using watchr library, and direct ftp calls that works correctly.

I have the same problem, it detects a change and does nothing. Is there no way for it to upload based on both file timestamp AND changes in size? Im using Dropbox which does not change the file timestamps, however you would think that if WINSCP notices the changes it would initiate a synchro.

Reply with quote

Advertisement

gml
Guest

Re: Keep Up To Date doesn't work within 1 minute intervals

I have the same problem synchronizing between windows PC and a Unix box.
Nothing fancy going on here... just editing files on PC machine and expecting the changed file to be uploaded to Unix box.
Again, Windows side WinSCP detects the change, but only uploads if the change is outside the 1 minute interval.
I also see that the timestamp using Norton-like interface, on the Unix side has 1 minute precision, and on windows has 1 second precision...

Reply with quote

martin
Site Admin
martin avatar
Joined:
Posts:
40,476
Location:
Prague, Czechia

Re: Keep Up To Date doesn't work within 1 minute intervals

gml wrote:

I have the same problem synchronizing between windows PC and a Unix box.
Nothing fancy going on here... just editing files on PC machine and expecting the changed file to be uploaded to Unix box.
Again, Windows side WinSCP detects the change, but only uploads if the change is outside the 1 minute interval.
I also see that the timestamp using Norton-like interface, on the Unix side has 1 minute precision, and on windows has 1 second precision...
So that is the explanation.

Reply with quote

escherial
Guest

Re: Keep Up To Date doesn't work within 1 minute intervals

Is there any way to decrease or remove the 1 minute interval? I can see how you'd not want to tax your connection with excessively frequent uploads, but having to wait for one minute between small changes makes developing stuff quite slow. :(

Reply with quote

martin
Site Admin
martin avatar
Joined:
Posts:
40,476
Location:
Prague, Czechia

Re: Keep Up To Date doesn't work within 1 minute intervals

escherial wrote:

Is there any way to decrease or remove the 1 minute interval? I can see how you'd not want to tax your connection with excessively frequent uploads, but having to wait for one minute between small changes makes developing stuff quite slow. :(
That's not the reason. The reason is that the remote file timestamp has a minute precision, so unless the minute component of the time changes WinSCP cannot tell that the file is different.

Reply with quote

Advertisement

escherial
Guest

Re: Keep Up To Date doesn't work within 1 minute intervals

You're right, I misunderstood the problem. If it's a matter of deciding which one is newer, then it makes sense that it's impossible to determine that within the resolution of the timestamp.

Is it possible to detect specifically which file was changed on the local side, or just that there was a change in the directory? If you can tell which file, it'd be nice if there was a setting to force WinSCP to upload the file, regardless of the timestamp. The situation as it stands makes it a little difficult to rapidly test small changes.

Hrm, I just noticed that the project is open-source, too. I'll take a look at it if you don't feel that it's important enough to warrant attention. :) Thanks for your response so far.

Reply with quote

martin
Site Admin
martin avatar

Re: Keep Up To Date doesn't work within 1 minute intervals

As it is implemented now, WinSCP can tell that there was a change in a directory only.

Reply with quote

Advertisement

You can post new topics in this forum