скрипт bash при копировании файла, который был изменен совсем недавно - PullRequest
0 голосов
/ 25 июня 2019

Мне нужен скрипт, чтобы получить последний обновленный файл и скопировать его на удаленные серверы. Кроме того, сценарий должен завершиться после запуска.

Я пробовал с циклом 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 Ответ

1 голос
/ 25 июня 2019

Может быть с использованием 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
  }

См .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...