Встала задача постоянного резервного копирования каталога фтп-сервера. Копирование раз в минуту не подходит - юзвери могут за эту минуту поудалять файлы. А ограничивать в правах на удаление - тоже нельзя, поскольку каталог фтп они чистят, чтобы не было помойки и путаницы.
интересуюсь - можно ли как-нибудь организовать постоянное копирование? Не раз в минуту, хотя бы секунд в 5-10 смотреть, есть ли изменения и если есть - синхронизировать каталоги.
P.S. Второй вопрос организовался - никто не подскажет, каким образом в proftpd можно организовать оповещение о подключении/закачке файла звуковом? Подключился пользоватьель - бип. Закончил заливать файл -бип.
Запись файла одновлеменно в два места
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Запись файла одновлеменно в два места
Если честно - дикая задача... ну если так нужно, то стоит попробовать покурить в направлении:
подробного логирования ftp-сервера, при закачке файла вызывать хук (скрипт) который будет делать жесткую ссылку на файл (если в пределах одной файловой системы - будет очень быстро, а файл физически не уничтожится, пока все хардлинки на него не будут удалены).
Если сам сервер не умеет вызывать хуки после загрузки, то нужно натравливать на его лог что-то юзающее технологию inotify, и детектить когда что там поменялось, читать, вычленять имя файла ну и далее по тексту.
Названия программ которые стоит пглядеть: inotail, inotify-tools
так же при помощи команд из пакета inotify-tools можно рекурсивно следить за изменением в дереве каталогов: создание файлов, подкаталогов, открытие их на чтение, запись и т.п.
А вот дальше - фантазия) Например такая:
Если нужно смотри какие там действия происходят, на нужные делай свои какие-то манипуляции - на экране в общем наблюдай. Не знаю как на большой нагрузке будет себя вести, ннноооооо. Можно, почитая man, отфильтровывать только нужные события и не делать tst=`...` коде скрипта.
подробного логирования ftp-сервера, при закачке файла вызывать хук (скрипт) который будет делать жесткую ссылку на файл (если в пределах одной файловой системы - будет очень быстро, а файл физически не уничтожится, пока все хардлинки на него не будут удалены).
Если сам сервер не умеет вызывать хуки после загрузки, то нужно натравливать на его лог что-то юзающее технологию inotify, и детектить когда что там поменялось, читать, вычленять имя файла ну и далее по тексту.
Названия программ которые стоит пглядеть: inotail, inotify-tools
так же при помощи команд из пакета inotify-tools можно рекурсивно следить за изменением в дереве каталогов: создание файлов, подкаталогов, открытие их на чтение, запись и т.п.
А вот дальше - фантазия) Например такая:
Код: Выделить всё
#!/bin/bash
ftp_dir="/tmp/ino/"
backup_dir="/tmp/backup/"
inotifywait -m -r $ftp_dir | while read line
do
echo $line
tst=`echo $line | grep CLOSE_WRITE`
if [ -n "$tst" ]; then
dir=`echo $line | cut -d ' ' -f 1`
file=`echo $line | cut -d ' ' -f 3`
echo "==> $dir/$file"
if [ ! -d "$backup_dir/$dir" ]; then
mkdir -p $backup_dir/$dir
fi
cp $dir/$file $backup_dir/$dir
fi
done
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
Re: Запись файла одновлеменно в два места
Читая "постановку задачи", хотел было уже мимо пройти, но прочитав ПыСЫ, меня осенило! Верстак в армии служит! Я представляю, как, бип, рядовой Иванов докладывает ... Не, а че? Мы же в толксах! Да?
История про пользователя, удаляющего файлы, не похожа на резервное копирование, да и резервное копирование бывает разное и само по себе нужно только для резюме. Тебе зачем это нужно?
История про пользователя, удаляющего файлы, не похожа на резервное копирование, да и резервное копирование бывает разное и само по себе нужно только для резюме. Тебе зачем это нужно?
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Запись файла одновлеменно в два места
ты уже раскурил сопряжение форума с рассылкой? Хотя...Лимон писал(а):Не, а че? Мы же в толксах! Да?
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
Re: Запись файла одновлеменно в два места
нет. я думал-думал и устал. это тебе не толксы языком ворочать.hatred писал(а):ты уже раскурил сопряжение форума с рассылкой? Хотя...
выгоды нет.
на будущее, создавай отдельные темы
- rpk
- Full Member
- Сообщения: 117
- Зарегистрирован: 07 июн 2006 20:48
- Откуда: Vladivostok
- Контактная информация:
Re: Запись файла одновлеменно в два места
Ну дык если часы имеются и исправны - раз в 5-10 секунд проверяешь не были ли за это время созданы новые файлы, если были - либо копируешь куда надо, либо делаешь харлинк на них. Запустить из того же скрипта что и ftp сервак пускается. ничего собственно сложно и интересно нету.VerstaK писал(а): Не раз в минуту, хотя бы секунд в 5-10 смотреть, есть ли изменения и если есть - синхронизировать каталоги.