服务器之间自动拷贝任务,如何在两个服务器之间快速复制大量文件

感谢Scott Pack的精彩回答(以前我不知道如何使用ssh做到这一点),所以我可以提供这一改进(如果bash是您的shell)。这将添加并行压缩,进度指示器并检查整个网络链接的完整性:

tar c file_list |

tee >(sha512sum >&2) |

pv -prab |

pigz -9 |

ssh [user@]remote_host '

gunzip |

tee >(sha512sum >&2) |

tar xC /directory/to/extract/to

'

pv是用于管道的不错的进度查看器程序,并且pigz是并行gzip程序,默认情况下使用的线程数与CPU的数量相同(我相信最多为8个)。您可以调整压缩级别,以更好地适应CPU与网络带宽的比率,pxz -9e并pxz -d在您的CPU比带宽更多的情况下将其替换掉。您只需在完成时验证两个总和是否匹配即可。

对于大量数据和高延迟网络,此选项很有用,但在链路不稳定且掉线的情况下,此选项不是很有用。在这种情况下,rsync可以恢复,因此可能是最佳选择。

样本输出:

6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e - ]

176MiB [9.36MiB/s] [9.36MiB/s] [ <=> ]

6c1fe5a75cc0280709a794bdfd23d7b8b655f0bbb4c320e59729c5cd952b4b1f84861b52d1eddb601259e78249d3e6618f8a1edbd20b281d6cd15f80c8593c3e -

对于块设备:

dd if=/dev/src_device bs=1024k |

tee >(sha512sum >&2) |

pv -prab |

pigz -9 |

ssh [user@]remote_host '

gunzip |

tee >(sha512sum >&2) |

dd of=/dev/src_device bs=1024k

'

显然,请确保它们的大小或限制与count =,skip =,seek =等相同。

当我以这种方式复制文件系统时,我通常会首先dd if=/dev/zero of=/thefs/zero.dat bs=64k && sync && rm /thefs/zero.dat && umount /thefs将大多数未使用的空间归零,这会加快xfer的速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值