550 Requested action not taken. File unavailable (e.g., file not found, no access). (
тык)
есть SIZE, но это не часть фтп протокола, потому не все сервера это поддерживают (хотя в этом случае должен был быть другой код ошибки). может быть ваш фтп клиент пытается отправить MLSD/LIST чтоб получить информацию про все файлы, и потом выдрать размер нужного. И если у пользователя нет на это прав - 550 смотрится правдоподобно. т.е. если вы случайно не передаете разные filename - это НЕ проблема вашего кода
В целом - смотрите логи фтп. Если доступа к админ консоли сервера нету - посмотрите про наличие дебаг режима в самой библиотеке. В идеале вам нужено получить полный список всех запросов/ответов которые отправляются. Если эта библиотека так не умеет - выкиньте и возьмите другую. Мы в свое время остановились на
FluentFtp (правда пришлось немного поконтрибьютить чтоб допилить в ней нужную фичу), и у нее точно есть дебаг режим
ну и если очень хочется именно эту библиотеку, но она не умеет в дебаг - вайршарк в помощь. в нем даже готовый фильтр для фтп есть, только помните что данные и команды отправляются по разным портам