Используйте inotifywait и lftp для синхронизации серверов

Некоторые версии virt-менеджера дают Вам сумму всех загрузок как загрузка Dom0. Что точно Вы хотите знать?

1
задан 2 June 2014 в 15:04
2 ответа

Это потому, что команда FTP поместит $FILE поместит файл $FILE в любую 'текущую директорию' на стороне сервера FTP; следовательно, в корневую директорию сервера FTP (которая расположена на C:\content).

Сначала нужно извлечь подкаталог из вывода inotifywait's %w, а затем подготовить FTP-команду cd к параметру lftp.

Я никогда раньше не использовал inotifywait, но думаю, что скрипт должен быть таким:

inotifywait -q -r -m -e close_write,moved_to . --format "%w %f" | 
  while read DIR FILE; do
    lftp -e "cd $DIR; put $FILE; exit" -u user,password -p 2121 ftp.server-a.com
  done

PS: Никогда не стоит явно писать пароль в скрипте. Вместо этого используйте rsync; в Windows вам нужно будет установить rsync сервер. Я лично использую Cygwin, и использую cygrunsrv, чтобы заставить rsync работать как служба Windows.

.
2
ответ дан 3 December 2019 в 18:45

@pepoluan дал мне ответ, но я хотел сообщить о сценарии, который у меня получился, который немного отличается (причина, по которой я сделал это в ответе, а не в комментарии: вы не можете разметить код в комментарии)

#!/bin/bash 
cd /files
inotifywait -q -r -m -e close_write,moved_to . --format "%w %w%f" |
  while read DIR FILE; do
    lftp -e "mkdir -p $DIR; cd $DIR; put $FILE; exit" -u user,pass -p 2121 ftp.server-a.com
  done
1
ответ дан 3 December 2019 в 18:45

Теги

Похожие вопросы