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

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

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

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

2 Solutions collect form web for “Обнаружение на удаленном хосте, на котором были обработаны файлы”

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

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

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

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

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

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

  • Как создать резервную копию Debian с зашифрованным LVM с помощью rsync?
  • от разреженного файла до блочного устройства по сети
  • Будет ли этот метод восстановления LUKS LVM rsync работать?
  • Односторонняя синхронизация каталога, но оставляйте удаленные файлы, удаленные по месту назначения
  • rsync для cifs: «изменить» время не обновлено
  • Попросить rsync создать * любые * необходимые каталоги
  • Что происходит, когда вы rsync без адресата?
  • Ошибка rsync: значение времени файла, усеченного на приемнике
  • Используйте rsync, чтобы просто получить папку и ее содержимое с шаблоном
  • синхронизировать конкретный файл рекурсивно, но только в подкаталогах, присутствующих в пункте назначения
  • Как предотвратить потерю данных (после установки)
  • Linux и Unix - лучшая ОС в мире.