BASH - 如何检测文件的日期时间是否已更改,因此一旦完成复制或立即移动?

时间:2013-11-20 15:33:44

标签: bash centos freebsd

我有一个静态目录:/var/tmp/files

此目录仅与用户共享以通过SFTP上传/下载,它有一些静态文件名,例如:

recording-security.frontdoor.avi
recording-security.backdoor.avi
recording-security.parkingspace.avi
....

从另一台PC通过SFTP这些文件被删除/编辑/更新/添加等 现在是另一条道路:/var/www/html/livevideo-stream/

复制这些文件,从/var/tmp/files移动

如何使用BASH读取这些文件被编辑或新添加或覆盖?那么,我的脚本可以将有效内容从/ var / tmp / files移动到livevide-stream只有那些已被修改或新添加的内容等?

$ crontab i have:
0 7 * * * /var/tmp/finishit.sh
0 8 * * * /var/tmp/finishit.sh
0 9 * * * /var/tmp/finishit.sh
0 19 * * * /var/tmp/finishit.sh
0 20 * * * /var/tmp/finishit.sh

$ cat /var/tmp/finishit.sh

#!/bin/bash
cd /var/tmp/files
while :
do

  """
  how do we now validate those files which was modified or changed or newly added and place them in that directory?
  """
  # echo $1 $2
  cp -R /var/tmp/files/* /var/www/html/livevideo-stream/
  sleep 1

done

1 个答案:

答案 0 :(得分:1)

您的cron每小时会多次启动您的脚本,并且由于while :循环,您的脚本不会终止...您最终会遇到很多后台脚本试图复制内容永远第二。

您只需用

替换整个脚本即可
rsync -vaq /var/tmp/files/* /var/www/html/livevideo-stream/