我制作了一个用于启动并行 rsync 进程的脚本:
#! /bin/bash
LIST=$1
DEST_DIR=$2
RSYNC_OPTS=$3
#echo "rsyncing From=$SRC_DIR To=$DEST_DIR RSYNC_OPTS=$RSYNC_OPTS"
echo $LIST|xargs -n1 -d, echo|xargs -n1 -P 0 -I% rsync --rsync-path='sudo rsync' ${RSYNC_OPTS} % ${DEST_DIR}
然后,我在获取 rsync 进程的退出状态时遇到问题。我知道可以获取管道状态数组,但我需要捕获退出代码才能知道 rsync 是否成功进行。
答案1
您需要知道确切的代码还是只知道它是否失败?
如果您使用 GNU Parallel 而不是 xargs,您可以执行以下操作:
echo $LIST | parallel -d, -P 0 rsync --rsync-path='sudo rsync' ${RSYNC_OPTS} {} ${DEST_DIR}
什么时候完成 $?将包含有多少作业失败。要获取确切的退出代码,请使用“--joblog file”生成包含退出代码的制表符分隔文件,或使用“--halt 1”获取 $? 中失败的 rsync 的退出代码。
了解更多:
观看介绍视频以进行快速介绍: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
浏览本教程 (man parallel_tutorial)。你的命令行会喜欢你的。