我正在尝试在ssh上并行运行rsync,以便在两台计算机之间传输文件以进行评估。我想看看与单个rsync进程相比我能获得多快。
我试过这两个解决方案: https://wiki.ncsa.illinois.edu/display/~wglick/Parallel+Rsync但没有取得很大成功。 https://gist.github.com/rcoup/5358786(我无法使其发挥作用)
基于first link我运行如下命令:
ssh HOST "mkdir -p ~/destdir/basefolder"
cd ./basefolder; ls | xargs -n1 -P 4 -I% rsync -arvuz -e ssh % HOST:~/destdir/basefolder/.
我得到了转移的文件,但似乎效果不好......在这种情况下,它将为basefolder中的每个文件和文件夹运行一个进程,但是当它找到一个文件夹时,它会转移仅使用1个进程在该文件夹中的所有内容。
我尝试使用find -type f,但是由于我松散了文件层次结构,我遇到了问题。
有没有人如何做某些方法来做我想要的? (在保留文件和文件夹层次结构的同时,在ssh上并行使用rsync)。
答案 0 :(得分:2)
由于您标记了您的问题'gnu-parallel',显而易见的是引用您http://www.gnu.org/software/parallel/man.html#EXAMPLE:-Parallelizing-rsync
cd src-dir; find . -type f -size +100000 | parallel -v ssh fooserver mkdir -p /dest-dir/{//}\;rsync -Havessh {} fooserver:/dest-dir/{}