Intereting Posts
Команда Bash для записи во временный буфер Linux Mint 18 Cinnamon – не может установить позицию отображения по умолчанию Bash не полностью функциональен для нового пользователя Разрешает ли NAT доступ к внутренней сети (или локальному интерфейсу маршрутизатора) по умолчанию по умолчанию? Я не могу настроить яркость экрана моего ноутбука больше Xubuntu Oneiric не запускает XFCE Настройка сенсорного экрана Исключить каталоги в поиске местоположения Как заставить звук работать на Mozilla Firefox 52? Недостаточно места на диске: удалите первые n строк текстового файла без копирования файла Просмотреть временную метку для заданий печати CUPS Является ли `dig ptr` допустимым способом выполнения обратного DNS-запроса? Solaris / OpenIndiana: хорошая документация для механизма разрешения – роли, профили и auths? Сравнение двух файлов и печать содержимого inotifywait – получить старое и новое имя файла при переименовании

Обнаружение на удаленном хосте, на котором были обработаны файлы

У меня есть инструмент, который я использую во время разработки для синхронизации кода, который я пишу на своем ноутбуке, с моей тестовой средой на удаленном хосте. Это позволяет мне быстро тестировать изменения без необходимости git-commit / push / pull / build и т. Д. Он реализуется с помощью fswatch и rsync, поэтому он автоматически передает изменения, которые я делаю локально в удаленную среду. Однако у меня проблема, потому что иногда я забываю включить этот инструмент, а затем трачу больше времени, чем выяснять, почему мой код не работает.

  1. Есть ли программный способ на моем удаленном хосте обнаружить, что какие-либо файлы в последнее время (скажем, в последнюю минуту) были rsync'd?
  2. Кроме того, можно ли сказать, что мой инструмент – тот, который делает rsync-ing? Маловероятно, что любые другие хосты будут синхронизироваться с моим пультом, так как я его владею, но чем больше надежнее, тем лучше 🙂

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

Одно из решений может заключаться в том, чтобы ваш инструмент эхо отогнал текущую дату / время к файлу на удаленном компьютере после того, как он закончил rsync'ing данных. Затем на удаленном компьютере все, что нужно сделать, это проверить файл, чтобы определить, когда в последний раз данные синхронизировались с ним.

Если вы используете linux, вы можете обнаружить изменения файловой системы с помощью inotify api, встроенного в ядро. С помощью inotify вы можете определить, какие файлы были записаны и принять действие, основанное на любом событии. (открывать, закрывать, читать, писать, удалять, перемещать и т. д.)

Вы можете поместить часы в удаленной системе (с помощью fswatch, inotify, loggedfs или любого другого интерфейса, который вы предпочитаете), и чтобы он обнаружил запись в тестовый каталог. Это, по крайней мере, позволит вам узнать о последних изменениях. Не все из этих механизмов могут определить, какой процесс вызвал их, например loggedfs может, но inotify не может.

Остается проблема вспомнить, как включить часы. Вы можете сделать это, сделав свой скрипт start-testing-now, включив часы, и сначала выполните синхронизацию, если часы еще не были запущены.

Но мне кажется, что самым простым решением в этом случае было бы совсем не синхронизировать. Вместо этого смонтируйте локальное дерево на тестовой машине с помощью SSHFS.

См. Как настроить обратное соединение SSH с подключающимся компьютером? как инициировать соединения SSH с удаленного компьютера на локальный компьютер.