Я хотел бы ограничить фрагментацию диска сервера, когда несколько клиентов одновременно загружают на FTP-сервер.
Есть ли способ указать FTP-серверу предварительно выделить дисковое пространство для большого блока входящего файла и продолжать увеличивать его большими блоками?
В качестве альтернативы, есть ли способ указать FTP-серверу предварительно выделить стоимость всего файла и записать входящие FTP-пакеты в более последовательном порядке.
Дефрагментация файлов после передачи недопустима: дефрагментация займет слишком много времени.
Я использую IIS 6.0, но другие продукты FTP-серверов были бы желанной заменой.
Протокол FTP не включает информацию о размере в команду STOR:
http://www.ietf.org/rfc/rfc959.txt
Поэтому я сомневаюсь, что вы найдете какие-либо чистые FTP-клиенты, которые бы это сделали. Вы можете найти поставщика, который реализовал собственное расширение, но для этого потребуется и клиент, и сервер для их поддержки. Вы говорите «клиенты», поэтому, если сюда входят как внутренние, так и внешние клиенты, у вас могут возникнуть проблемы, заставив их использовать другое программное обеспечение.
Быстрый взгляд на черновик SFTP также не указывает на то, что сообщение о записи файла включает в себя размер файла.
Протокол SCP включает параметр размера в свою команду копирования файла, и есть клиенты с графическим интерфейсом Windows, которые поддерживают SCP (а не SFTP), но вам нужно будет проверить, выделяет ли сервер предварительное выделение, используя параметр размера. С другой стороны, код доступен, поэтому вы можете создать свой собственный демон Windows SSH / SCP, который предварительно выделяет ресурсы. Но это несколько перебор для описываемой вами проблемы.