Запись файла одновлеменно в два места

Технические обсуждения
Ответить
VerstaK
Advanced Newbie
Advanced Newbie
Сообщения: 12
Зарегистрирован: 09 ноя 2009 10:14

Запись файла одновлеменно в два места

Сообщение VerstaK »

Встала задача постоянного резервного копирования каталога фтп-сервера. Копирование раз в минуту не подходит - юзвери могут за эту минуту поудалять файлы. А ограничивать в правах на удаление - тоже нельзя, поскольку каталог фтп они чистят, чтобы не было помойки и путаницы.
интересуюсь - можно ли как-нибудь организовать постоянное копирование? Не раз в минуту, хотя бы секунд в 5-10 смотреть, есть ли изменения и если есть - синхронизировать каталоги.


P.S. Второй вопрос организовался - никто не подскажет, каким образом в proftpd можно организовать оповещение о подключении/закачке файла звуковом? Подключился пользоватьель - бип. Закончил заливать файл -бип.

Аватара пользователя
hatred
Global Moderator
Global Moderator
Сообщения: 1205
Зарегистрирован: 08 июн 2006 00:32
Откуда: Владивосток
Контактная информация:

Re: Запись файла одновлеменно в два места

Сообщение hatred »

Если честно - дикая задача... ну если так нужно, то стоит попробовать покурить в направлении:
подробного логирования 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, отфильтровывать только нужные события и не делать tst=`...` коде скрипта.
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos

Лимон
Full Member
Full Member
Сообщения: 140
Зарегистрирован: 26 июн 2009 15:11
Откуда: Владивосток

Re: Запись файла одновлеменно в два места

Сообщение Лимон »

Читая "постановку задачи", хотел было уже мимо пройти, но прочитав ПыСЫ, меня осенило! Верстак в армии служит! Я представляю, как, бип, рядовой Иванов докладывает ... Не, а че? Мы же в толксах! Да?
История про пользователя, удаляющего файлы, не похожа на резервное копирование, да и резервное копирование бывает разное и само по себе нужно только для резюме. Тебе зачем это нужно?

Аватара пользователя
hatred
Global Moderator
Global Moderator
Сообщения: 1205
Зарегистрирован: 08 июн 2006 00:32
Откуда: Владивосток
Контактная информация:

Re: Запись файла одновлеменно в два места

Сообщение hatred »

Лимон писал(а):Не, а че? Мы же в толксах! Да?
ты уже раскурил сопряжение форума с рассылкой? Хотя...
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos

Лимон
Full Member
Full Member
Сообщения: 140
Зарегистрирован: 26 июн 2009 15:11
Откуда: Владивосток

Re: Запись файла одновлеменно в два места

Сообщение Лимон »

hatred писал(а):ты уже раскурил сопряжение форума с рассылкой? Хотя...
нет. я думал-думал и устал. это тебе не толксы языком ворочать.
выгоды нет.
на будущее, создавай отдельные темы ;)

Аватара пользователя
rpk
Full Member
Full Member
Сообщения: 117
Зарегистрирован: 07 июн 2006 20:48
Откуда: Vladivostok
Контактная информация:

Re: Запись файла одновлеменно в два места

Сообщение rpk »

VerstaK писал(а): Не раз в минуту, хотя бы секунд в 5-10 смотреть, есть ли изменения и если есть - синхронизировать каталоги.
Ну дык если часы имеются и исправны - раз в 5-10 секунд проверяешь не были ли за это время созданы новые файлы, если были - либо копируешь куда надо, либо делаешь харлинк на них. Запустить из того же скрипта что и ftp сервак пускается. ничего собственно сложно и интересно нету.

Ответить