Search code examples
powershellamazon-ec2cygwinscp

Copying from Windows to Linux without copying the entire path


I am using Cygwin to copy all the files in a local windows folder to an EC2 linux instance inside of powershell. When I attempt to copy all the files in a folder, it copies the pathname as a folder:

\cygwin64\bin\scp.exe -i "C:\cygwin64\home\Ken\ken-key-pair.pem" -vr \git\configs\configs_test\ ec2-user@ec2-22-75-189-18.compute-1.amazonaws.com:/var/www/html/temp4configs/

will copy the correct files, but incorrectly include the path in a Windows format a path like:

/var/www/html/temp4configs/\git\configs\configs_test/file.php

I have tried an asterisk after the folder without the -r, such as:

\cygwin64\bin\scp.exe -i "C:\cygwin64\home\Ken\ken-key-pair.pem" -v \git\configs\configs_test\* ec2-user@ec2-22-75-189-18.compute-1.amazonaws.com:/var/www/html/temp4configs/

but that will return an error such as

"gitconfigsconfigs_test*: No such file or directory"

What can I do to copy the files without copying the path?

Thanks


Solution

  • When using cygwin programs is safer to use POSIX Path, and most of the time is the only way. To covert from windows to posix PATH use cygpath

    $ cygpath -u "C:\cygwin64\home\Ken\ken-key-pair.pem"
    /home/Ken/ken-key-pair.pem
    
    $ cygpath -u "C:\git\configs\configs_test\ "
    /cygdrive/c/git/configs/configs_test/
    

    Using the windows one, will cause the server to misunderstand the client request