Bash 如何将一个rsync进程优先于另一个rsync进程?
我有两个单独的cronjob在Red Hat实例上运行。两者都通过rsync将日志文件从远程服务器复制到实例。第一个cronjob运行Bash 如何将一个rsync进程优先于另一个rsync进程?,bash,rsync,Bash,Rsync,我有两个单独的cronjob在Red Hat实例上运行。两者都通过rsync将日志文件从远程服务器复制到实例。第一个cronjob运行rsync new.sh,它从服务器上的各个目录复制任何新的日志文件(从今天或昨天开始)。第二个cronjob运行rsync backfill.sh,它复制比昨天旧的日志文件。我分离了rsync进程,以便新文件总是能够快速复制,并且大型回填作业不会干扰新文件的复制 这通常有效,但以下情况除外:如果rsync backfill.sh已从文件夹复制旧文件,则rsync
rsync new.sh
,它从服务器上的各个目录复制任何新的日志文件(从今天或昨天开始)。第二个cronjob运行rsync backfill.sh
,它复制比昨天旧的日志文件。我分离了rsync进程,以便新文件总是能够快速复制,并且大型回填作业不会干扰新文件的复制
这通常有效,但以下情况除外:如果rsync backfill.sh
已从文件夹复制旧文件,则rsync new.sh
将在rsync backfill.sh
完成文件夹后才复制其文件
有没有办法将rsync new.sh
中的rsync命令优先于rsync backfill.sh
中的rsync命令?或者至少让rsync命令并行运行,以便总是快速复制新文件
以下是一般脚本结构:
rsync new.sh
以$表示的子目录的(ls$SOURCEDIR)
做
rsyc-zt\
--排除自=$TRACKERFILE\
--out format=“%n”\
$SOURCEDIR/$SUBDIR/log-$TODAY*.log$DESTDIR/| tee-a$TRACKERFILE
完成
对于美元中的子目录(ls$SOURCEDIR)
做
rsyc-zt\
--排除自=$TRACKERFILE\
--out format=“%n”\
$SOURCEDIR/$SUBDIR/log-$forday*.log$DESTDIR/| tee-a$TRACKERFILE
完成
rsync backfill.sh
以$表示的子目录的(ls$SOURCEDIR)
做
rsyc-zt\
--排除自=$TRACKERFILE\
--exclude=“log-$TODAY*.log”\
--exclude=“log-$dayed*.log”\
--out format=“%n”\
$SOURCEDIR/$SUBDIR/log-*.log$DESTDIR/| tee-a$TRACKERFILE
完成
这不是问题,只是巧合,其中一个目录的新日志文件直到回填完成后才同步(新日志文件刚好比回填文件大得多)
Cron在隔离的环境中运行作业,因此rsync进程之间没有交互。在Cron中运行脚本时,可以尝试使用
nice
命令,请注意这些更改将影响整个系统,请参阅