| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |