Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > Автоматическая замена файла на хостинге


Автор: Webikus 9.9.2010, 23:33
Здравствуйте!

Возникла такая проблема:

Содержание одного из файлов perl скрипта произвольно изменяется или полностью исчезает. А причину этого установить не удалось. 

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

Т.е. нужно сделать так, чтобы скрипт(возможно с помощью cron) с периодичностью в 15 минут заменял на хостинге этот файл на соседний. Файлы с расширением .txd и находятся в папке /public_html/cgi-bin/ ...

Например, чтобы файл text.txd автоматически заменялся каждые 15 минут на его контрольный дубль (text.txd), лежащий в соседней папке. И при этом права доступа к файлу не сбрасывались.

Пожалуйста, подскажите возможные решения!? 
Если можно, то объясните поподробней.. 

Заранее благодарю!

Автор: DurRandir 10.9.2010, 01:27
Лучше решите проблему, почему оно исчезает. Варианта 3:
1. вы его сами удаляете, но случайно 
2. кто-то его удаляет специально, на этом же сервере
3. кто-то его удаляет специально, через дыру в скрипте

Проще всего проверить 1, потом 3, потом 2. 1,3 - ищите все команды удаления/открытия на запись, и пишите в лог из аргументы. Ищите, как они туда попали. Как вариант - если вы туда что-то пишете, то м.б. требуются блокировки на доступ к файлу, т.к. один поток его открывает, стирает, второй открывает, читает, первый пишет нормальные данные, закрывает, а второй теперь пишет пустые данные.

Автор: Webikus 10.9.2010, 04:39
В том то и дело, что я так и не понял что там происходит.
А тут речь не о починке скрипта, а о возможности замены файла через определенное время.

Я думаю, что это может пригодится не только в моем случае, а еще для многих задач.

Автор: ming 10.9.2010, 10:04
>>Пожалуйста, подскажите возможные решения!? 

crontab:
*/15 * * * *  cp  /path/to/backup/text.txd   /public_html/cgi-bin/

Автор: DurRandir 10.9.2010, 10:20
У меня течёт кран, но я не буду его чинить, подскажите, чем лучше вычерпывать воду.

Автор: shamber 10.9.2010, 11:51
DurRandir, может позвать пожарных?

Автор: Webikus 20.9.2010, 05:58
ming,
Большое спасибо, разобрался!

В общем расскажу чуть поподробней для таких же ламеров как я)

Сначала создаем в папке /public_html/cgi-bin/ пустой файл без расширения. Например: test
(возможно понадобится выставить права доступа на него. В моем случае это 705)

Дальше внутри пишем следующее:

-----------------------
#!/bin/sh

cp ~/public_html/cgi-bin/test.txt ~/public_html/test.txt
-----------------------
Где
#!/bin/sh - командный интерпретатор (может отличаться)
cp - функция копирования
~  - путь до корня сайта
/public_html/cgi-bin/test.txt -  файл, который копируем
/public_html/test.txt - путь в нужную папку (сам файл создавать не нужно)

Потом по средствам админки хостинга  назначаем задание на вызов этого скрипта с интервалом в 15 мин.

*/15 * * * *    ~/public_html/cgi-bin/test 

В начале, для отладки, можно сделать копирование каждую минуту (ставим все звездочки)

Ну и проверяем результат..!


Вот нашел еще примеры по теме:
Чтобы переместить файлы и каталоги используется команда «mv». Чтобы скопировать – команда «cp».
Для перемещения всех файлов из одной директории в другую (в примере – перемещение из www/site1/public_html/ в www/site2/public_html), команда будет иметь следующие параметры:

mv ~/www/site1/public_html/* ~/www/site2/public_html/

Для того, чтобы скопировать, а не перемещать данные файлы, следует использовать следующее выражение:
cp -R ~/www/site1/public_html/ ~/www/site2/public_html/

Для переноса файла, например, index.html, следует использовать команду с параметрами:
mv ~/www/site1/public_html/index.html ~/www/site2/public_html/index.html

Также «mv» используется для переименования файла. Переименуем index.html в index.html.old:
mv ~/www/site1/public_html/index.html ~/www/site1/public_html/index.html.old

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)