我需要一个脚本来获取最新的更新文件并将其复制到远程服务器。另外,脚本一旦运行即可终止。
我尝试过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)文件应复制到远程服务器,并且每当脚本运行时,它就会将相同的文件覆盖复制到远程服务器。
答案 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
}
请参阅: