在两台服务器之间通过 `nc`(Netcat)和 `pv` 命令传输文件,按照以下步骤。
如果是传输单个文件,在服务器 A(发送端)上的操作:使用 `dd` 或其他命令生成一个测试文件,或者选择一个已有的文件进行传输。
dd if=/dev/zero of=CentOS6_20190825.iso bs=1024M count=1
使用 `pv` 命令结合 `nc` 命令发送文件,并显示传输进度。
pv CentOS6_20190825.iso | nc -l 2345
`-l` 表示监听模式,`2345` 是选择的端口号。
在服务器 B(接收端)上的操作:
使用 `nc` 命令从服务器 A 接收文件,并用 `pv` 命令显示传输进度。
nc 10.20.10.60 2345 | pv > CentOS6-20190825.iso
`10.20.10.60` 是服务器 A 的IP地址,`2345` 是服务器 A 监听的端口号。
如果想使用 `nc` 和 `pv` 传输整个目录。在发送端(服务器 A)上的操作:进入需要传输的目录。
cd /usr/local/mysql/data
使用 `tar` 命令压缩目录,并通过 `pv` 和 `nc` 发送。
tar -zcf - | pv | nc -l 3456
这里 `-l` 表示监听模式,`3456` 是端口号。
在接收端(服务器 B)上的操作:使用 `nc` 命令从服务器 A 接收压缩后的目录,并使用 `pv` 命令显示传输进度。
nc 10.20.10.60 3456 | pv | tar -zxf -
这里 `10.20.10.60` 是服务器 A 的IP地址,`3456` 是服务器 A 监听的端口号。
以上就是关于使用 `nc` 和 `pv`完成两台服务器之间文件和目录传输的方法。还可以显示传输进度。以上步骤提供了简单有效的方法,特别是在没有 `scp` 或 `rsync` 可用的情况下。
如果是两台服务器使用网络不是一样的。用 `nc`(Netcat)和 `pv` 命令传输文件需要考虑网络的可达性和端口的开放情况。
确保网络可达性。要确保两台服务器之间网络是连通的,即可以从一台服务器SSH到另一台服务器。
开放必要的端口。如服务器有防火墙,需要确保选择用于传输的端口(默认是TCP端口)在两台服务器上都是开放的。
使用 `nc` 监听端口。在接收端服务器上,用 `nc` 命令监听一个端口,准备接收文件。
nc -l 1234 > received_file
`-l` 表示监听模式,`1234` 是选择的端口号,`received_file` 是接收到的文件名。
使用 `nc` 发送文件。在发送端服务器上,使用 `nc` 命令连接到接收端服务器的IP地址和端口,并发送文件。
nc 接收端服务器IP 1234 < file_to_send
这里 `接收端服务器IP` 是接收端服务器的IP地址,`1234` 是接收端服务器监听的端口号,`file_to_send` 是要发送的文件名。
使用 `pv` 监控传输进度。如果你想要监控文件传输的进度,可以在发送端使用 `pv` 命令。
pv file_to_send | nc 接收端服务器IP 1234
`pv` 命令会显示传输的实时速度和进度。
压缩文件以提高效率。如果文件较大,可以考虑先压缩文件再传输,以减少传输时间。
tar czvf - file_to_send | pv | nc 接收端服务器IP 1234
接收端需要解压缩:
nc -l 1234 | pv | tar xz
处理跨网络的SSH连接问题:如果两台服务器之间不能直接通过SSH连接,可能需要设置SSH的相关技术来建立连接。
考虑使用加密传输。如果传输的数据包含敏感信息,可以考虑使用SSH隧道来加密传输过程。
请注意,这些步骤假设你有足够的权限在服务器上执行这些操作,并且网络环境允许这样的传输。在实际操作中,可能需要根据具体的网络环境和服务器配置进行调整。