michaellukashov / Far-NetBox

SFTP/SCP/FTP/FTPS/WebDAV/S3 client for Far Manager 3 (http://farmanager.com/)
https://forum.farmanager.com/viewtopic.php?t=6317
GNU General Public License v2.0
159 stars 52 forks source link

Не копирует файлы если общая длина пути и файла более 255 символов #204

Open kos322 opened 8 years ago

kos322 commented 8 years ago

Не могу с FTP скачать на локальный диск файл с именем

D:\welcome\mp3\1001 Albums Your Must Hear Before You Die\1001 Albums You Must Hear Before You Die (vol.I)AAC.Lossy\0006. Duke Ellington - At Newport 91956)\CD 1\02. Father Norman O'Connor Introduces Duke & The OrchestraDuke Introduces Tune & Anderson, Jackson, & Procope.m4a

Похоже на известную проблему с длинными именами http://winitpro.ru/index.php/2014/11/12/kak-udalit-fajl-s-dlinoj-puti-bolee-260-simvolov/

В корень диска этот файл скачивается. Netbox 2.1.45 build 426, Far 3.0 build 4545 x64

VictorVG commented 8 years ago

@kos322

Вы забыли про одну простую мелочь - если в пути есть пробелы, то он должен заключаться в кавычки. Из описания я этого не вижу. Это первое, второе не все символы допустимые в UNIX допустимы для Windows, плюс есть следующие ограничения в реализации ОС (выписка из MSDN, статью простите не помню - текст лежит у меня в БД):

Соглашения именования в NTFS Имена файлов могут состоять не более чем из 255 символов, включая любое расширение. В именах сохраняется регистр введенных символов, но сами имена не зависят от регистра. NTFS не различает имена в зависимости от регистра. В именах могут быть использованы любые символы за исключением указанных ниже.

? " / \ < > * | :

В настоящее время из командной строки можно задать имя файла длиной не более 253 символов.

Давайте попробуем обойти эти ограничения попросив Far сгенерировать на панели короткие имена по CtrlN и отдать команду копирования с использованием корректного с точки зрения ОС имени.

kos322 commented 8 years ago

если в пути есть пробелы, то он должен заключаться в кавычки

Я как пользователь выбрал 3 файла на панели NetBox и нажал F5. Мне нужно думать про кавычки? Кроме того я уверен, что с пробелами проблем нет.

не все символы допустимые в UNIX допустимы для Windows, плюс есть следующие ограничения в реализации ОС

это уже учтено в NetBox (см F11 -> NetBox commands -> Настройки -> настройки передачи данных -> [x] Заменять :*"?

Давайте попробуем обойти эти ограничения попросив Far сгенерировать на панели короткие имена по CtrlN и отдать команду копирования с использованием корректного с точки зрения ОС имени.

Я выше описал в чем проблема. Один и тот же файл копируется в корень диска без проблем но отказывается копироваться в папку с длинным именем. Также привел ссылку, что это происходит из-за ограничения API Windows в 260 символов. У меня проблем нет, я скопировал файлы в другую папку, с более коротким именем. Сообщите мне если вам не удастся воспроизвести проблему. Спасибо

VictorVG commented 8 years ago

@kos322

Да, человек должен не полагаться на робота, а соблюдать правила именования ОС. ЭВМ (робот) без человека не знает как дважды два сложить и годна разве что яичницу поджарить ибо это большая железная дура и в плане ума с 79-го года в ней ничего не добавилось.

При случае если попадутся подобные имена файлов проверю, но у меня в NFS подобных имён файлов нет.

kos322 commented 8 years ago

Я верю что с ИИ и с сингулярностью встречусь в этой жизни.

При случае если попадутся подобные имена файлов проверю, но у меня в NFS подобных имён файлов нет.

достаточно на NTFS, любой Windows создать каталог длинной 250 символов и скачать в него при помощи NetBox любой файл с именем длинее 20 символов.

VictorVG commented 8 years ago

Ок. Воспользуюсь вашей подсказкой, но у меня и семёрка в VirtualBox, а основные ФС UFS2 и ZFS на BSD UNIX.