Post a reply

Options
Add an Attachment

If you do not want to add an Attachment to your Post, please leave the Fields blank.

(maximum 10 MB; please compress large files; only common media, archive, text and programming file formats are allowed)

Options

Topic review

AllAboutSim

Hello,

First of all, I do not understand, why you synchronize parent/root folder, if you want to synchronize only one of its subfolders.

Because the directories I need to watch are in the root directory of my webspace. The root directory also contains directories like bin, conf, lib, logs and so on.

I could also write
set var=%cd%
set "Folders=1 2 3"
 
for %%a in (%Folders%) do (
  START "" /min "P:\WinSCP Portable\WinSCP.com" /command "option batch continue" "option confirm off" "open <some url>" "keepuptodate "%var%"\%%a\ "/TEST/%%a/" -delete"
)

But this opens 3 command line windows. I will stick with that.

Because ./1/ | .\* watches the directory named 1 like it should and changes are recognized but no upload is being done.
Change in 'D:\TEST\1' detected. // create file

Change in 'D:\TEST\1' detected. // rename file
Change in 'D:\TEST\1' detected. // delete file

So I just let it open 3 command line windows.
martin

@AllAboutSim: First of all, I do not understand, why you synchronize parent/root folder, if you want to synchronize only one of its subfolders.
This should do:
keepuptodate C:\local\path\1 /TEST/1 -delete


Anyway, indeed your file mask allows files in the root folder. File and directory masks are separate.
You have to exclude root files like:
./1/ | .\*

See https://winscp.net/eng/docs/file_mask
AllAboutSim

Hello,

currently I have also an issue like this when using keepuptodate.

Either in GUI or in a batch file. I want to "keepuptodate"
Local: D:\TEST
Test has 3 subdirectories 1\, 2\ and 3\
Remote: /TEST

Options set: all default

File mask: ; 1/ | */

What I am trying to do:
watch D:\TEST directory but only upload changes in subdirectory 1\

Whatever I do, when I add a file in D:\TEST it will also be uploaded to the server. The file mask does not work (not working in batch file, neither when using the UI)

/TEST ist just for ... testing.

The real remote directory will be the root directory on the server. Because of this I want to only include some directories and exclude all others.

The bat file:
@echo off
set
var=%cd%
"P:\WinSCP Portable\WinSCP.com"
/command "option batch continue" "option confirm off" "open <some site>" "keepuptodate -filemask=""1/ | */"" "%var%" "/TEST" -delete"

Time passed with bat file testing, reading all faq I could find... multiple hours, file mask not working!
Nardog

Re: keepuptodate / Synchronize keeps uploading everything from a directory when a new file is added

Martin, thank you for that resource. It does appear to a timestamp issue between filesystems. Unfortunately, I am not in control of the unix system the files are being uploaded to. Is there a way to compare files by filename and upload any files that the compare does not find instead of using timestamps? This would fix my issue. Otherwise, can you think of anyway around the problem? Really appreciate the help.
Nardog

keepuptodate / Synchronize keeps uploading everything from a directory when a new file is added

I am using keepuptodate to watch 5 directories. When a new file is introduced to one of the directories, it recognizes the change and then starts to upload everything in the directory from Local to Remote despite it already being present in the remote directory.

Script:
@echo off
 
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
  /log="C:\Program Files (x86)\FTP\WinSCPbatch3.log" /ini=nul ^
  /command ^
    "open ftp://user:pass@ftp.com/" ^
    "cd FTP" ^
    "cd FromCompany" ^
    "lcd C:\FTP\Company\Outbound" ^
    "keepuptodate C:\FTP\Company\Outbound /FTP/FromCompany" ^
    "exit"
 
set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
  echo Success
) else (
  echo Error
)
 
exit /b %WINSCP_RESULT%

Within Local Directory C:\FTP\Company\Outbound, there are 5 subdirectories.
I tried using synchronize both but when i ran it, it compared all 5 directories and then tried to reupload every file again. Is there something I am missing?

Thanks for the help!