我正在使用 PSCP 将一些文件从 Windows 上传到 Linux。我可以一次上传一个文件,但效果并不好。但我有一些非常大的目录,我想一次上传整个目录。
我努力了:
pscp -i C:\sitedeploy\abt-keypair.ppk includes\* [email protected]:/usr/local/tomcat/webapps/ROOT/includes/*
引发错误:“pscp:远程文件规范 /usr/local/tomcat/webapps/ROOT/includes/*:不是目录”
和
pscp -i C:\sitedeploy\abt-keypair.ppk includes\ [email protected]:/usr/local/tomcat/webapps/ROOT/includes/
引发错误:“scp:包括:不是常规文件”
和
pscp -i C:\sitedeploy\abt-keypair.ppk includes [email protected]:/usr/local/tomcat/webapps/ROOT/includes
引发错误:“scp:包括:不是常规文件”
答案1
有两个问题:首先,* 不在目标端。其次,-r
用于复制整个目录和子目录。
pscp -i C:\sitedeploy\abt-keypair.ppk includes\* [email protected]:/usr/local/tomcat/webapps/ROOT/includes/
将会把本地目录中的所有文件复制includes\
到.../includes/
服务器上的目录中。
pscp -r -i C:\sitedeploy\abt-keypair.ppk includes\ [email protected]:/usr/local/tomcat/webapps/ROOT/
将把includes\
目录本身(包括所有文件和子目录)复制到.../ROOT/
服务器上的目录(其中本地目录的内容将与任何现有.../ROOT/includes/
目录合并。
答案2
答案3
如果要复制目录及其内容,则无需提供目标文件规范。例如,只需使用目录名称即可。
pscp -i C:\sitedeploy\abt-keypair.ppk includes\* [email protected]:/usr/local/tomcat/webapps/ROOT/includes/
如果您想要复制目录及其下的所有内容,那么您可以使用-r
:
pscp -r -i C:\sitedeploy\abt-keypair.ppk includes\ [email protected]:/usr/local/tomcat/webapps/ROOT/includes/
答案4
如果您要复制文件夹本身及其下的所有内容,则必须使用以下命令:
pscp -r -i C:\PrivateKeys\MyPrivateKey.ppk C:\FOLDER1 <username>@<server_id>:/home/<username>/
但请注意,文件夹路径“C:\FOLDER”末尾没有斜杠;如果将其与结尾斜杠一起使用,如“C:\FOLDER1\”,它不会复制文件夹本身,而只会复制文件夹下的所有内容。