如何在没有同时实例化风险的情况下自动化 rsync

如何在没有同时实例化风险的情况下自动化 rsync

我有一个 rsync 命令,用于将数据从 ~/home 复制到远程 /srv/share 文件夹。

/usr/bin/rsync -rltvz --progress --stats -e 'ssh -p MYPORT' /home/luke/share/ [email protected]:/srv/share/

1)我想自动执行此操作,以便本地 ~/share 中删除的任何内容都将被复制,我很想做一个每小时的 cron 工作或使用 systemd 计时器,但我担心如果它正在做一个大的事情作业并且需要一个多小时 - 然后两个同时的 rsync 实例将对相同的数据进行操作。是这样吗?如果是这样,我该如何避免呢?

2)来自不同机器的多个rsync同时将(不同的)数据复制到同一服务器目录中是否存在问题?

答案1

我遇到了完全相同的问题时移。我将其添加到备份脚本的顶部,这样它直到之后才会启动时移已完成:

# if Timeshift is running, wait until it's finished
until [ -z $(/bin/pidof timeshift) ]
  do
      # waiting
      sleep 1
  done

只需替换即可同步为了时移你应该可以走了。

如果您想将所有内容都放在一个长命令上,请执行以下操作:

until [ -z $(/bin/pidof rsync) ]; do sleep 1; done; your_rsync_command

相关内容