FTP загрузка и перезапись НЕ перезаписывают, а создают [file.ext]. # Вместо

6394
René Kåbis

Этот вопрос является дубликатом вопроса в StackOverflow, и мне было рекомендовано задать этот вопрос здесь. Приношу свои извинения, если мультипост нежелателен.

У меня очень странная проблема с FTP, которая вызывает у меня живые дневные света. Это первый раз, когда я видел эту проблему.

Когда я загружаю файл, он не перезаписывает оригинал, а вместо этого переименовывается в [original file.ext] .1 (или [file] .2, если [file] .1 уже существует). Например, если style.css существует на сервере, и я загружаю и редактирую его, когда я загружаю его обратно в положение, он «переименовывается» в style.css.1 . Повторная попытка создает третий файл с именем style.css.2 .

У меня есть собственное железо, на котором у меня установлена ​​64-битная версия OpenSUSE 11.4 (сравнительно недавняя установка, только что настроенная). Я использую pure-ftpd и использую панель управления YAST для управления настройками. В частности, для параметра Umask (umask files: umask dirs) установлено значение 000: 000 (единственный параметр, который дает загружаемому файлу те же разрешения, что и существующим файлам). У меня есть доступ через Chrooted ftp для всех, и для доступа к FTP / srv / www / я использовал инструкции на этом сайте для монтирования / srv / www / inside / home / [user] / ftp / с помощью операции bind, Поэтому FTP-доступ предназначен для очень безопасного пользователя, но у него все еще есть доступ к содержимому в / srv / www /.

Я также нашел время, чтобы дать содержимому / srv / www / такие же права доступа и user: group, как и самому пользователю (т. Е. Не должно быть никаких проблем с разрешениями).

Я использую WS_FTP Pro 2007 для доступа к сайту, а также Notepad ++ (через NppFTP), и у обоих клиентов одна и та же проблема: я могу загружать файлы очень хорошо, но когда я загружаю их, к ним добавляется «. #» ( .1, .2, .3 и т. Д.) Вместо перезаписи исходного файла. Эти новые файлы имеют права IDENTICAL и права собственности (user: group) как исходный файл, поэтому я совершенно не знаю, почему при загрузке создается новый файл вместо перезаписи.

Отредактировано, чтобы добавить: с тех пор я попробовал несколько различных клиентов FTP, включая функции FTP в командной строке Windows, с одинаковыми конечными результатами.

1
Вероятно, это обычное явление в программном обеспечении FTP - учтите, например, что у вас был доступ по FTP к файлу «Important-file.txt», и какой-то из сценариев взломал его и переписал его пустым текстовым файлом. Мой совет: напишите задачу cron, чтобы переименовать любой из этих файлов, и запускайте ее каждые 5 минут. Не должно быть слишком сложно, если вы полукомпетентны со скриптами оболочки. new123456 12 лет назад 0
@ new123456 - Я настроил FTP-серверы на нескольких компьютерах до этой установки OpenSUSE 11.4. Никто из них не проявлял этого конкретного поведения. Я бы предпочел использовать чистое и элегантное решение, а не какую-то хакерскую работу. René Kåbis 12 лет назад 0

1 ответ на вопрос

1
Dennis

В pure-ftpd есть несколько ссылок на функцию «autorename». Это просто вопрос выключения? http://pureftpd.sourceforge.net/README

И хотя описания имен файлов делают это менее вероятным, использует ли клиент ftp опцию STOU? http://www.nsftools.com/tips/RawFTP.htm

В этом вопросе также может быть некоторая помощь. Как FTP-серверы обрабатывают переименование в существующий файл?

Вы заставили меня посмотреть в правильном направлении, хотя потребовалось довольно много времени, чтобы понять это. Тем, кто использует OpenSUSE или pure-ftpd вместе с панелью управления YAST, следует помнить, что панель управления YAST НЕ предоставляет вам эту возможность для редактирования. René Kåbis 12 лет назад 0
Что я сделал (в моем случае), так это изучил файл ** / etc / rc.d / pure-ftpd **, в котором содержалась ссылка на файл ** / etc / pure-ftpd / pure-ftpd.conf ** , В этом втором файле я нашел запись ** AutoRename ** со значением * yes *. Я изменил это на * no *, перезапустил pure-ftpd, и все работало идеально. Загруженные файлы больше не добавляются с **. # **. Спасибо @Dennis, за толчок в правильном направлении! René Kåbis 12 лет назад 0

Похожие вопросы