复制最近修改的文件上的bash脚本

时间:2019-06-24 21:45:14

标签: bash

我需要一个脚本来获取最新的更新文件并将其复制到远程服务器。另外,脚本一旦运行即可终止。

我尝试过While循环,它确实会复制,但是一旦完成工作,我将无法停止脚本。或者我错过了我不知道的东西。

#!/bin/bash
FILE="/opt/testdir/file.txt"
LATEST=$(ls -Art | tail -n 1)
while [ $LATEST != $FILE ] 
do 
rsync -avz $LATEST 192.168.20.20:/opt/testdir/.
done

i)文件应复制到远程服务器,并且每当脚本运行时,它就会将相同的文件覆盖复制到远程服务器。

1 个答案:

答案 0 :(得分:1)

也许可以使用inotify工具

# monitor current directory ./
# and get dir/file paths on these file-system events:
# - close_write (file written and closed)
# - create (file created)
# - moved_to (file moved to here)

inotifywait \
  --quiet \
  --monitor \
  --event close_write \
  --event create \
  --event moved_to \
  --format '%w%f' \
  ./ \
  | {
    # loop through all files
    # as inotifywait may return multiple files (one per line)
    while read -r LATEST; do
      rsync \
        --archive \
        --compress \
        --verbose \
        "${LATEST}" \
        192.168.20.20:/opt/testdir/.
    done
  }

请参阅: