Выявление причины удаления файлов с сервера

Я работаю над приложением для управления документами на LAMP/php, которое позволяет добавлять и удалять PDF-файлы на наш сервер. Это прекрасно работает, за исключением одной неприятной проблемы — файлы, которые вы загружаете в понедельник, могут исчезнуть во вторник, и я не могу понять, почему. похоже, что весь каталог удаляется - я подозреваю, что где-то неполная строка передается на отвязку или что-то в этом роде, но я отключил каждую строку кода, которую я могу найти, которая удаляет файлы с сервера, и я все еще попасть в неприятности. Как мне диагностировать причину этих случайных исчезающих файлов? Существуют ли какие-либо утилиты, которые я могу использовать для регистрации любых попыток удаления или изменения файла или каталога?


person sixtimes    schedule 30.12.2012    source источник
comment
Измените разрешения для папок и посмотрите, где начинают появляться ошибки.   -  person ethrbunny    schedule 31.12.2012
comment
вот ссылка, которая может вам помочь: linuxos4all.blogspot.com/2010/11/   -  person pzirkind    schedule 31.12.2012
comment
@pzirkind: это не сработает, если файлы будут удалены скриптом PHP.   -  person InternetSeriousBusiness    schedule 31.12.2012
comment
@InternetSeriousBusiness Интересно... Спасибо, что поделились!   -  person pzirkind    schedule 31.12.2012
comment
Создайте функцию-оболочку отмены связи, которая отслеживает некоторые дополнительные данные, и обновите все функции отмены связи в вашем приложении, чтобы использовать ее. Что-то вроде unlink_custom(file,date-time,note), а затем пусть эта функция регистрирует все запросы, чтобы вы могли вернуться и посмотреть, какие из них уничтожают ваши файлы.   -  person hansvedo    schedule 05.01.2013
comment
Это может быть что-то вне вашего приложения, например, запущенный cron, который сокращает определенные каталоги, хотя это вероятно только в том случае, если вы не одиноки на сервере.   -  person Jormundir    schedule 06.01.2013
comment
Обратите внимание, что если вы используете unlink() для удаления файлов, это приведет к удалению только файлов или пустых папок — он откажется удалять непустые папки. Вы можете проверить, сканирует ли поисковая система ссылки для удаления.   -  person    schedule 24.01.2013


Ответы (1)


в идеале вы хотели бы найти свою ошибку...

find codebase/ -type f -exec grep -il "unlink" '{}' \;

alertativley, если вы хотите хакерское исправление, обновите своего пользователя apache, чтобы у него была umask, которая позволила бы ему создавать файлы, но не удалять их ...

sed -i 's/^\(start|[a-z|-]*)\)/\1\n    umask 0222/' `which apachectl`

также это приведет к ошибкам отказа в разрешении в журнале ошибок...

person mikejonesey    schedule 23.01.2013
comment
find codebase/ -type f | xargs grep -sl "unlink " легче запомнить... всего мои 3,14 цента. - person specializt; 24.01.2013
comment
@Michael, не могли бы вы объяснить, что делает команда find и как она поможет решить заданную проблему. - person crafter; 30.08.2015