在脚本中运行多个 rsync 执行

在脚本中运行多个 rsync 执行

我尝试从 bash 脚本运行多个 rsync 命令,但只有第一个命令会触发。我尝试使用&&和链接这些命令,;但都不起作用。

#! /bin/bash
rsync -ahPr --delete-excluded --exclude='.DS_Store' --exclude=Caches/ --ignore-errors --stats --log-file=$LOGFILE --files-from=$FILESFROM ~/$SOURCE /Volumes/$DEST &&
rsync -avh --progress ~/.profile /Volumes/$DEST/_profile/profile &&
rsync -avh --progress ~/.gitconfig /Volumes/$DEST/_profile/gitconfig &&
rsync -avh --progress ~/.ssh/ /Volumes/$DEST/_profile/ssh/ &&
rsync -avh --progress ~/.vim/ /Volumes/$DEST/_profile/vim/

我将最后 4 个命令作为单独的命令执行,因为我正在动态重命名文件/目录 - 不确定是否有更好的方法来做到这一点?

我正在执行该脚本以bash -x myscript.sh查看是否出现任何错误,但没有。

答案1

跑步

rsync && rsync

第一个 rsync 完成后将启动第二个 rsync。您需要

rsync&

解释:

a && b

a 运行,只有 a 成功竞争后,b 才会运行

a || b

a 运行,仅当 a 未成功完成时,b 才会运行

a; b

a 运行,无论成功与否,b 接下来运行

a& b

a 运行,被发送到后台。这相当于运行 a,输入 ctrl-Z 并运行 bg

因此,如果您希望程序同时运行,请将 && 替换为单个 &

相关内容