SCP命令在不同远程服务器之间发送文件(指定端口、大量小文件操作)

在这里插入图片描述

最近想把数据集放在另一个服务器上,但是如果先下载到本地然后再上传过去,则需要浪费好久时间。

特总结下如何快捷的通过命令完成不同远程服务器之间的文件传输,以及遇到的问题。

SCP命令

Linux scp 命令用于 Linux 之间复制文件和目录。1
scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。
scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

单个文件的传输

scp /home/src/1.py username@xxx.xx.xx.xx:/home/des/
  • /home/src/1.py: 当前命令行所在的主机上的某个文件
  • username: 目标服务器的用户名
  • xxx.xx.xx.xx: 目标服务器的IP地址,scp默认连接的远端主机22端口
  • /home/des/: 目标服务器上的文件位置

将这些信息换成自己的就可以了。


整个文件夹的传输

scp -r /home/src/ username@xxx.xx.xx.xx:/home/des/

指定端口传输

如果目标服务器是一个docker,也就是需要指定特定端口号,则指定参数-P即可, 如下:

scp -P 18888 -r /home/src/ username@xxx.xx.xx.xx:/home/des/
  • 18888: 表示docker镜像对应的的端口号

需要注意的问题

  • 指定端口传输,需注意是参数大写的P.
  • 传输需要保证源文件或文件夹是可读的,目标文件夹是可写的,否则会报如下
Permission denied, please try again

可通过chmod命令暂时修改权限为766,也就是rwx rw- rw-

chmod 766 xxx.txt

然后再改回来(通常文件默认是rwx r-x r-x)

chmod 755 xxx.txt

传输内容为大量的小文件

当所传输的文件夹中包含大量的小文件,比如数据集(有很多张图片),这时候使用SCP速度会很慢,因为每传输一个文件都需要进行 协议信息确认以及传输结束后的确认信息,这样的开销是非常大的.

因此通常会结合tar命令打包,然后在发送,能够节省很多倍速度

cd 需要打包的文件夹
tar cf - * | ssh -p 10086 username@xxx.xx.xx.xx "cd /home/des/ && tar xf -"

  1. Linux scp命令 ↩︎

  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口); HTTPS(securely transferring web pages)服务器,默认的端口号为443/tcp 443/udp; Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口); FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口); TFTP(Trivial File Transfer Protocol ),默认的端口号为69/udp; SSH(安全登录)、SCP文件传输)、端口重定向,默认的端口号为22/tcp; SMTP Simple Mail Transfer Protocol (E-mail),默认的端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口); POP3 Post Office Protocol (E-mail) ,默认的端口号为110/tcp; WebLogic,默认的端口号为7001; WebSphere应用程序,默认的端口号为9080; WebSphere管理工具,默认的端口号为9090; JBOSS,默认的端口号为8080; TOMCAT,默认的端口号为8080; WIN2003远程登陆,默认的端口号为3389; Symantec AV/Filter for MSE ,默认端口号为 8081; Oracle 数据库,默认的端口号为1521; ORACLE EMCTL,默认的端口号为1158; Oracle XDB( XML 数据库),默认的端口号为8080; Oracle XDB FTP服务,默认的端口号为2100; MS SQL*SERVER数据库server,默认的端口号为1433/tcp 1433/udp; MS SQL*SERVER数据库monitor,默认的端口号为1434/tcp 1434/udp; QQ,默认的端口号为1080/udp
引用[1]:在Vue.js中,可以通过自定义事件来实现子组件向父组件传递数据。父组件可以通过在子组件上监听自定义事件来接收数据。子组件可以使用`$emit`方法来触发自定义事件并传递数据给父组件。例如,在子组件中可以使用`this.$emit("whd", 188)`来触发名为"whd"的自定义事件,并传递参数188给父组件的事件处理函数。[1] 引用[2]:在Vue.js中,可以使用`.once`修饰符来确保事件处理函数只会在程序运行期间触发一次。例如,在模板中可以使用`@click.once`来监听点击事件,并确保事件处理函数只会执行一次。[2] 引用[3]:在Vue.js中,可以使用事件修饰符来增强键盘事件的能力。例如,可以使用`@keydown.enter`来监听回车按键事件,并在事件处理函数中执行相应的逻辑。类似地,可以使用`@keydown.esc`来监听返回按键事件。使用事件修饰符可以提高开发效率,减少手动判断按键的过程。[3] 关于SCP传送文件命令,SCP是一种安全的文件传输协议,用于在本地和远程服务器之间传输文件。要使用SCP传送文件,可以使用以下命令: ``` scp [选项] [源文件] [目标地址] ``` 其中,`[选项]`可以指定一些参数,例如远程服务器的用户名和IP地址,端口号等。`[源文件]`是要传输的文件的路径,可以是本地文件或者远程服务器上的文件。`[目标地址]`是文件传输的目标地址,可以是本地路径或者远程服务器的路径。 例如,要将本地的`example.txt`文件传输到远程服务器的`/home/user/`目录下,可以使用以下命令: ``` scp example.txt username@remote_server:/home/user/ ``` 这个命令会将`example.txt`文件传输到远程服务器上,并保存在`/home/user/`目录下。需要替换`username`为远程服务器的用户名,`remote_server`为远程服务器的IP地址或域名。 请注意,SCP命令需要在终端或命令行界面中执行,并且需要确保本地和远程服务器之间有网络连接和正确的权限设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值