dsg*_*dsg 22 unix threads parallel-processing
我通常必须将网络文件系统上文件夹的内容复制到本地计算机。远程文件夹中有许多文件(1000 个)都相对较小,但由于网络开销,常规副本cp remote_folder/* ~/local_folder/需要很长时间(10 分钟)。
我相信这是因为文件是按顺序复制的——在复制开始之前,每个文件都会等待前一个文件完成。
提高这个副本速度的最简单方法是什么?(我假设它是并行执行复制。)
在复制之前压缩文件不一定会加快速度,因为它们可能都保存在不同服务器的不同磁盘上。
Ole*_*nge 15
如果你安装了 GNU Parallel http://www.gnu.org/software/parallel/你可以这样做:
parallel -j10 cp {} destdir/ ::: *
Run Code Online (Sandbox Code Playgroud)
您可以简单地通过以下方式安装 GNU Parallel:
$ (wget -O - pi.dk/3 || lynx -source pi.dk/3 || curl pi.dk/3/ || \
fetch -o - http://pi.dk/3 ) > install.sh
$ sha1sum install.sh | grep 883c667e01eed62f975ad28b6d50e22a
12345678 883c667e 01eed62f 975ad28b 6d50e22a
$ md5sum install.sh | grep cc21b4c943fd03e93ae1ae49e28573c0
cc21b4c9 43fd03e9 3ae1ae49 e28573c0
$ sha512sum install.sh | grep da012ec113b49a54e705f86d51e784ebced224fdf
79945d9d 250b42a4 2067bb00 99da012e c113b49a 54e705f8 6d51e784 ebced224
fdff3f52 ca588d64 e75f6033 61bd543f d631f592 2f87ceb2 ab034149 6df84a35
$ bash install.sh
Run Code Online (Sandbox Code Playgroud)
命令、参数和选项的说明
source_file命令的参数cp。
了解更多
您的命令行会因此而爱您。
查看更多示例:http : //www.gnu.org/software/parallel/man.html
观看介绍视频:https : //www.youtube.com/playlist? list =PL284C9FF2488BC6D1
演练教程:http : //www.gnu.org/software/parallel/parallel_tutorial.html
在http://www.lulu.com/shop/ole-tange/gnu-parallel-2018/paperback/product-23558902.html获取“GNU Parallel 2018”一书 或从以下 网址下载:https : //doi.org /10.5281/zenodo.1146014至少阅读第 1+2 章。您应该花不到 20 分钟的时间。
打印备忘单:https : //www.gnu.org/software/parallel/parallel_cheat.pdf
注册电子邮件列表以获得支持:https : //lists.gnu.org/mailman/listinfo/parallel
只要您限制正在运行的复制命令,您就可以使用像Scrutinizer发布的脚本一样的脚本
SOURCEDIR="$1"
TARGETDIR="$2"
MAX_PARALLEL=4
nroffiles=$(ls "$SOURCEDIR" | wc -w)
setsize=$(( nroffiles/MAX_PARALLEL + 1 ))
ls -1 "$SOURCEDIR"/* | xargs -n "$setsize" | while read workset; do
cp -p "$workset" "$TARGETDIR" &
done
wait
Run Code Online (Sandbox Code Playgroud)
小智 7
老实说,最好的工具是 Google 的 gsutil。它通过目录递归处理并行副本。我见过的大多数其他方法都无法处理目录递归。他们没有在文档中特别提到本地文件系统到本地文件系统副本,但它的工作原理就像一个魅力。
这是另一个要安装的二进制文件,但考虑到当今所有云服务的采用,您可能已经运行了它。