9

Is there anyway to copy files from Windows machine to a remote Linux machine with a DOS command/other command-line tool (by specifying username and password in the command). I normally do this using WinSCP and would like to write a script (BAT) to automate this.

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
softwarematter
  • 28,015
  • 64
  • 169
  • 263

5 Answers5

7

You could use the command line version of PuTTY, pscp.exe.

Uwe Keim
  • 39,551
  • 56
  • 175
  • 291
  • 3
    Technically pscp.exe isn't a command line version of PuTTY, only the secure-copy component. plink.exe is the command line companion to PuTTY, though it is designed for remote commands without launching a shell. – Michael Berkowski May 28 '11 at 15:00
6

WinSCP scripting command-line to upload a file is like:

winscp.com /command "open sftp://username@example.com/" "put d:\www\index.html" "exit"

See the guide to WinSCP scripting.


Easier is to use a Generate transfer code function to have WinSCP GUI generate a script (or even a complete batch file) for a transfer.

Generate transfer code dialog

Martin Prikryl
  • 188,800
  • 56
  • 490
  • 992
5

Download a copy of pscp.exe (the PuTTY scp companion). If you have setup SSH keys on the Linux server, which you can do with PuTTY on Windows, you can setup password-less copy to Linux machines from Windows.

Michael Berkowski
  • 267,341
  • 46
  • 444
  • 390
1

Install cygwin and you can use scp, ssh etc just like you would on linux. Besides, you can use ordinary bash scripts instead of crappy bat-files.

rtn
  • 127,556
  • 20
  • 111
  • 121
0

If anyone is looking to do this in 2022, Windows 10 now comes with scp. You can do

scp path/localfile.txt remote-user@host:/home/path

or the recursive version for directories

scp -r localfolder remote-user@host:/home/path

Of course with scp you'll run into issues if you have a large number of files. It copies everything as opposed to only changed / new files only.

Then you'll need a tool like rsync, which is available through WSL (windows subsystem linux).

rsync -r localfolder remote-user@host:/home/path

(I personally hesitate to install new tools for a job, hence my desire to stick with what's already available)

Dr Phil
  • 430
  • 5
  • 17