bash等待rsync完成继续

时间:2017-04-07 10:39:41

标签: bash macos global-variables

您好我为我的备份程序编写了一个bash脚本,我监控一个文件夹并每月将目标目录同步到此文件夹,并且每天都会对母目录进行更改。

我希望第二个rsync进程在第一个完成后启动我使用wait命令实现它,但它不起作用:

if [ ! -f $MONTH_COMPARE/monat-$MONTH-compare.log ]; then
   rsync -avh --force --delete --update --log-file=$MONTH_COMPARE/monat-$MONTH-compare.log $SOURCE_LOC $MONTH_COMPARE &
fi
wait

if [[ $MONTH -eq 1] && [ $DAY -eq 1]]; then
    rm -rf $BACKUP_DIR/$LASTYEAR/12
    mkdir $BACKUP_DIR/$LASTYEAR/12

    #compare changes of last month to backup year month
    rsync -avh --force --ignore-errors --log-file=$BACKUP_DIR/$LASTYEAR/12/monat-$MONTH.log --compare-des=$MONTH_COMPARE $SOURCE_LOC $BACKUP_DIR/$LASTYEAR/12 &&
    #update aktuell with day changes
    rsync -avh --force --ignore-errors --delete --update --log-file=$BACKUP_DIR/$YEAR/$MONTH/$DAY/tag-$DAY.log --backup-dir=$BACKUP_DIR/$YEAR/$MONTH/$DAY $SOURCE_LOC $TARGET_DIR &&
    #update the month compare folder da 1. des neuen monats
    rsync -avh --force --ignore-errors --delete --update --log-file=$MONTH_COMPARE/monat-$MONTH-compare.log $SOURCE_LOC $MONTH_COMPARE &
fi
wait

如何做到这一点?

1 个答案:

答案 0 :(得分:1)

您正在后台运行rsync(&),然后等待它。为什么不正常运行(没有&),所以你不需要等待。下一个命令只会在第一个rsync完成后执行。