Есть три разных директории(/home/22 /home/33 /home/44 и тд). В этих директориях 24/7 будет падать разный хлам и текстовые файлы в подпапках и в корне этих директорий. Основная цель: найти все txt файлы рекурсивно и скопировать их на шару, допустим /home/some_dir. Каждый тхт - имеет уникальное имя. Нужно сделать так, чтобы проверялось есть ли такой файл в /home/some_dir или нет(чтобы снять лишнюю нагрузку). rsync сможет сделать это или нет ? И вообще с помощью чего лучше решить все это ?
И забыл добавить: все тхт в директориях попадают туда не в готовом виде. Тхт появляются, в них скидывается информация. Т.е если синкать по крону получится так, что синкнулась тхт в которой недописанный результат.
посоветуйте инструмент (синхронизация нескольких папок)
Модераторы: SLEDopit, Модераторы разделов
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: посоветуйте инструмент
может, с помощью него и лучше.
можно после завершения всех операция с txt выставлять некий флаг (пустой файл) в директории, сигнализирующий, что директория готова к синхронизации. а крон, прежде чем запустить синхронизацию конкретной директории, будет проверять наличие этого флага.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
vsdfn
- Сообщения: 147
- ОС: Windows,Linux,BSD
Re: посоветуйте инструмент
SLEDopit писал(а): ↑13.12.2012 22:35может, с помощью него и лучше.
можно после завершения всех операция с txt выставлять некий флаг (пустой файл) в директории, сигнализирующий, что директория готова к синхронизации. а крон, прежде чем запустить синхронизацию конкретной директории, будет проверять наличие этого флага.
c флагом готовности директории не пойдет. Нет там особого состояния в директории. Только хардкор, только риалтайм наполнение тхт в перемешку со всем Г
-
liaonau
- Сообщения: 390
- ОС: gentoo
Re: посоветуйте инструмент
Тогда, например, синхронизируйте после каждого изменения текстовых файлов. Об этом изменении узнавайте от ядра с помощью inotify на директорию, в которой файл находится.
-
Bizdelnick
- Модератор
- Сообщения: 21520
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: посоветуйте инструмент
В следующий раз синкнется окончательный.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
liaonau
- Сообщения: 390
- ОС: gentoo
Re: посоветуйте инструмент
Я может быть неправильно понял, что там нет никакого окончательного результата — логи, например.
-
pelmen
- Сообщения: 1268
- ОС: debian
Re: посоветуйте инструмент
Возможно, метод работы "maildir:" что-то навеет? файл сначала попадает в ~/Maildir/tmp/, затем, когда он окончательно записался, тогда делается жесткая ссылка в ~/Maildir/new/, а исходный файл удаляется. Вот если можно как-то (inotify?) определить, что файл записался окончательно, то делать жесткую ссылку на файл в соседний каталог (например, /home/22_txt/), а уже этот каталог синхронизировать rsync-ом с /home/some_dir
Пользователем создается пустой текстовый файл, потом этот или другой пользователь записывают в него данные? Если да, то как вы сами определяете, закончили писать в файл данные, или нет? Может там еще 2-3 раза дозапишут что-то?
Пользователем создается пустой текстовый файл, потом этот или другой пользователь записывают в него данные? Если да, то как вы сами определяете, закончили писать в файл данные, или нет? Может там еще 2-3 раза дозапишут что-то?
-
Goodvin
- Ведущий рубрики
- Сообщения: 4333
- Статус: ⚝⚠⚒⚑⚖☭☞☣☤&
Re: посоветуйте инструмент
vsdfn писал(а): ↑13.12.2012 22:16Есть три разных директории(/home/22 /home/33 /home/44 и тд). В этих директориях 24/7 будет падать разный хлам и текстовые файлы в подпапках и в корне этих директорий. Основная цель: найти все txt файлы рекурсивно и скопировать их на шару, допустим /home/some_dir. Каждый тхт - имеет уникальное имя. Нужно сделать так, чтобы проверялось есть ли такой файл в /home/some_dir или нет(чтобы снять лишнюю нагрузку). rsync сможет сделать это или нет ? И вообще с помощью чего лучше решить все это ?
И забыл добавить: все тхт в директориях попадают туда не в готовом виде. Тхт появляются, в них скидывается информация. Т.е если синкать по крону получится так, что синкнулась тхт в которой недописанный результат.
А в результирующем каталоге /home/some_dir все txt-файлы должны быть в одной куче?
Если это необязательно, то может быть сильно проще сделать внутри /home/some_dir симлинки на каталоги (/home/22 /home/33 /home/44 и тд).
А если обязательно - то посмотреть в сторону обьединения содержимого этих каталогов (/home/22 /home/33 /home/44 и тд) в одну кучу чем-то вроде AuFS.
И уже на эту результирую "кучу" сделать симлинк внутри целевого каталога /home/some_dir
В этом случае не надо никаких синхронизаций, все будет видно сразу в реалтайме.
-
BigBrother
- Сообщения: 436
- Статус: ¯\_(ツ)_/¯
- ОС: linux based
Re: посоветуйте инструмент
а при следующей синхронизации уже будет с информацией, т.к. файл был изменен (rsync это умеет).
ВНИМАНИЕ!!! БУДЬТЕ ОСТОРОЖНЫ С ПЕРЕДАВАЕМЫМИ ПАРАМЕТРАМИ ПРИ ИСПОЛЬЗОВАНИИ ОПЦИИ --delete.
ЕСЛИ СДЕЛАТЬ ТАК (добавлен слэш вконце пути server_IP)
Код: Выделить всё
rsync -e "ssh -p888" -avz --delete root@server_IP:/usr/local/nginx/ /usr/localТО ВСЕ СОДЕРЖИМОЕ /usr/local УДАЛИТСЯ, И ЗАМЕНИТСЯ СОДЕРЖИМЫМ root@server_IP:/usr/local/nginx
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: посоветуйте инструмент
find что-бы найти. Для копирования надо перейти в каталог /home/, найти (скажем ./44/x/y/z/xxx.txt), и скопировать с ключом --parents. (man cp)
cp --no-clobber
может. Уж если тупая cp может...
обычно файл на запись не открывается. Вместо этого записывается временный файл, который атомарно подменяет текущий (часто при этом также атомарно текущей переименовывается например в *~). Потому в Linux таких проблем нет.