Answers:
与ssh不同,scp使用大写的P开关设置端口,而不是小写的p:
scp -P 80 ... # Use port 80 to bypass the firewall, instead of the scp default
小写的p开关与scp一起使用以保留时间和模式。
这是scp手册页的摘录,其中包含有关两个开关的所有详细信息,并解释了为什么为scp选择大写P:
-P端口指定要在远程主机上连接的端口。请注意,此选项用大写字母“ P”编写,因为-p已保留用于保留rcp(1)中文件的时间和模式。
-p保留原始文件的修改时间,访问时间和模式。
更新并搁置以解决(严重反对)评论之一:
关于阿卜杜勒对scp
期权定单的评论,他的建议是:
scp -P80 -r some_directory -P 80 ...
...,点缀选项和参数。getopt(1)
明确定义参数必须在选项之后,并且不能与选项一起使用:
调用参数getopt可以分为两部分:修改getopt进行解析方式的选项(SYNOPSIS中的选项和optstring)以及要解析的参数(SYNOPSIS中的参数)。第二部分将从不是选项参数的第一个非选项参数开始,或者在第一次出现“-”之后。如果在第一部分中没有找到“ -o”或“ --options”选项,则将第二部分的第一个参数用作简短选项字符串。
由于-r
命令行选项不包含其他参数,因此some_directory
为“不是选项参数的第一个非选项参数”。因此,如getopt(1)
手册页中明确指出的那样,所有紧随其后的命令行参数(即-P 80 ...
)都假定为非选项(和非选项参数)。
因此,实际上,这是如何getopt(1)
看到示例的结果,其中选项的末尾和参数的开头由灰色的后续文本bing划定:
scp -P80 -r some_directory -P 80 ...
这与scp
行为无关,与与POSIX标准应用程序如何使用getopt(3)
C函数集解析命令行选项无关。
有关命令行订购和处理的更多详细信息,请getopt(1)
使用以下内容阅读手册:
man 1 getopt
scp
要求正确的选项顺序:scp -r some_directory -P 80 ...
不起作用-----但scp -P 80 -r some_directory ...
可以。
-P
参数排序。基本上,端口必须在主机之前。-P
如果两个主机都是远程的,这既可以防止歧义,又可以提供两个参数。
你知道比什么更酷-P
吗?没有
如果您多次使用此服务器,请使用以下~/.ssh/config
条目设置/创建文件:
Host www.myserver.com
Port 80
要么
Host myserver myserver80 short any.name.u.want yes_anything well-within-reason
HostName www.myserver.com
Port 80
User username
然后,您可以使用:
scp username@www.myserver.com:/root/file.txt .
要么
scp short:/root/file.txt .
您可以通过ssh,scp,rsync,git等在“主机”行上使用任何东西
您可以在配置文件中使用许多配置选项,请参见:
man ssh_config
scp -3
在不同端口上通过ssh侦听器使用往返服务器的解决方案。scp -3 -P 123 server1:/file -P 456 server2:/file
或类似的替代方案不起作用,scp假设两台服务器之间使用相同的端口
我使用的端口不同于标准端口,并且在文件之间复制文件,如下所示:
scp -P 1234 user@[ip address or host name]:/var/www/mywebsite/dumps/* /var/www/myNewPathOnCurrentLocalMachine
这仅用于偶尔使用,如果它根据计划重复进行,则应使用rsync和cron作业来执行此操作。
为了在scp命令上使用另一个端口,请使用大写字母P
scp -P port-number source-file/directory user@domain:/destination
亚里
复制文件到主机:
scp SourceFile remoteuser@remotehost:/directory/TargetFile
从主机复制文件:
scp user@host:/directory/SourceFile TargetFile
从主机递归复制目录:
scp -r user@host:/directory/SourceFolder TargetFolder
注意:如果主机使用的端口不是端口22,则可以使用-P选项指定它:
scp -P 2222 user@host:/directory/SourceFile TargetFile
如果需要将本地文件复制到服务器(请指定port)
scp -P 3838 /the/source/file username@server.com:/destination/file
希望这会帮助寻找完美答案的人
将具有已定义端口的服务器中的文件夹或文件复制到另一台服务器或本地计算机
scp -r -P端口user @ IP_address:/ home / file / pathDirectory。
**Note:** The last . on the command directs it to copy everything in that folder to your directory of preference
答案很多,但是您应该能够保持简单。确保知道 SSH正在侦听的端口,并对其进行定义。这就是我刚才用来复制您的问题的内容。
scp -P 12222 file.7z user@193.168.XX:/ home / user / Downloads效果很好。