gpt4 book ai didi

linux - 加快文件从一台机器传输到另一台机器

转载 作者:太空狗 更新时间:2023-10-29 12:23:45 26 4
gpt4 key购买 nike

我必须将大约 25 个文件从一台机器复制到另一台机器。每个文件大小约为 15 GB。我有 1GB 链接,这两台机器都是非常强大的盒子。他们有大约 40 个 CPU。现在复制所有这些文件,我需要 50 分钟。

下面是我在我应该复制文件的盒子上运行的脚本。它在 /data01/test_primary 文件夹中复制了 15 个文件,在 /data02/test_secondary 中复制了其他 10 个文件。逻辑非常简单,我找出要从哪台本地机器复制数据,如果该本地机器出现故障,那么我会转到远程机器并复制数据。

export PRIMARY=/data01/test_primary
export SECONDARY=/data02/test_secondary
export dir3=/bat/data/snapshot/20180227
PRIMARY_FILES=(685 959 682 679 688 651 909 906 657 881 884 878 853 707 847)
SECONDARY_FILES=(950 883 887 890 1001 994 997 1058 981 833)

export LOCATION_1="machineA"
export LOCATION_2="machineB"
export LOCATION_3="machineC"

do_Copy() {
el=$1
PRIMSEC=$2
scp golden@"$LOCATION_1":"$dir3"/proc_"$el"_5.data "$PRIMSEC"/. || scp golden@"$LOCATION_2":"$dir3"/proc_"$el"_5.data "$PRIMSEC"/. || scp golden@"$LOCATION_3":"$dir3"/proc_"$el"_5.data "$PRIMSEC"/. || exit 1
}
export -f do_Copy
parallel -j 5 do_Copy {} $PRIMARY ::: ${PRIMARY_FILES[@]} &
parallel -j 5 do_Copy {} $SECONDARY ::: ${SECONDARY_FILES[@]} &
wait

echo "All copied."

我认为我的脚本的主要问题是我可能会为每个文件打开一个单独的 scp 连接,这会增加很多不必要的开销。有什么我可以在这里优化的吗?所以我想我可以在这里做一些改进,以便它可以快速复制。截至目前,我正在将 scp 与 gnu-parallel 结合使用,以便实现并行性。

我有哪些选择可以加快速度?我准备好尝试不同的事情,看看它是否对我有帮助。

最佳答案

启用 scp(-cflags)压缩可能会加快速度(取决于数据)。请记住,您有很多 CPU 不应该花很长时间来压缩。

或者,如果可能的话,另一种选择是使用 rsync (-z 启用压缩)而不是 scp。 rsync 添加了一些优化以使操作更快,并且还具有特殊的增量传输算法(在更新文件的情况下)

关于linux - 加快文件从一台机器传输到另一台机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49060971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com