Должен проверить дерево каталогов на изменения каждые 10 секунд и запустить скрипт, если это изменяется

Вы пытаетесь соединиться с сервером MySQL без пароля. Если бы Вы забыли это, то Вы могли бы попробовать:

sudo dpkg-reconfigure mysql-server

Диалоговое окно попросит у Вас нового пароля пользователя root. Если Вы соединяетесь с mysql клиентом, необходимо попробовать:

mysql -p

Эта команда попросит у Вас пароля, Вы входите прежде.

3
задан 20 July 2010 в 19:47
6 ответов

inotifywait сделает рекурсивные проверки.

Это находится в репозиториях Ubuntu.

3
ответ дан 3 December 2019 в 04:55

Идеальный инструмент для этого задания использует inotify сервис ядра. Можно использовать их на сценарии оболочки с inotify-инструментами пакета (debian/ubuntu). Можно читать больше и видеть некоторые примеры на странице проекта. Существует даже пример на странице, которая, кажется, делает что-то близко к тому, что Вы хотите:

#!/bin/sh

# get the current path
CURPATH=`pwd`

inotifywait -mr --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' \
-e close_write /tmp/test | while read date time dir file; do

       FILECHANGE=${dir}${file}
       # convert absolute path to relative
       FILECHANGEREL=`echo "$FILECHANGE" | sed 's_'$CURPATH'/__'`

       rsync --progress --relative -vrae 'ssh -p 22'  $FILECHANGEREL usernam@example.com:/backup/root/dir && \
       echo "At ${time} on ${date}, file $FILECHANGE was backed up via rsync"
done
3
ответ дан 3 December 2019 в 04:55
  • 1
    Проблема здесь состоит в том, если файлы активно изменяются и rsync занимает время для завершения, неисправимое отставание могло быть создано. См. мой ответ здесь и приложенные комментарии. Необходимо соблюдать особую осторожность это rsync завершается быстро или a while inotifywait ... цикл (без -m переключатель), должен использоваться. Предотвращение искушения к фону rsync должен быть тщательно рассмотрен. –  Paused until further notice. 20 July 2010 в 22:13
  • 2
    Услышьте то, что Dennis говорит, его мудрый совет. Возможно, если он делает сценарий, который накапливает изменения и затем rsync затем время от времени для предотвращения нескольких процессов... –  coredump 21 July 2010 в 00:14

rsync проверит дерево каталогов на изменения и скопирует только измененные файлы, если Вы дадите ему каталог как источник.

2
ответ дан 3 December 2019 в 04:55
  • 1
    Правда, но что, если существуют достаточно новые файлы, которые требуется больше чем минута для копирования? Я также хочу, чтобы это смогло работать, как только изменения происходят, не минуту спустя. Это копирует код для проживания веб-серверов, и наличие их из синхронизации в течение минуты не идеально. –  Mike 20 July 2010 в 20:26
  • 2
    Прежде чем я узнал о inotify и inotifywait, который я скажу, происходит ли это, разделяет rsync исходные каталоги. Inotify является ясно путем вперед все же. –  user9517 supports GoFundMonica 20 July 2010 в 22:04

Взгляните на inotify. Я решил подобную проблему некоторое время назад с dnotify, или sgi_fam (не вспоминайте, который), но inotify, кажется, заменил их обоих.

1
ответ дан 3 December 2019 в 04:55

Кто-то уже изобрел это колесо. Это назвало lsyncd, и это - по-видимому, мэшап rsync и inotify. Я не использовал его сам, потому что ограничения inotify таковы, что это не масштабирует к действительно большому (и глубоко) каталоги. Я ожидаю, пока они не повторно реализуют его непосредственно использующий fsnotify.

Существует также PIrsyncD, который, кажется, делает то же самое.

1
ответ дан 3 December 2019 в 04:55

используйте находят

find /path -mmin 1

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

0
ответ дан 3 December 2019 в 04:55
  • 1
    Существует ли способ записать этот сценарий так, чтобы в основном, если та команда возвращает что-нибудь, затем запустил мой rsync скрипт, еще спали в течение минуты? –  Mike 20 July 2010 в 20:11

Теги

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