Как копировать файл в пределах удаленного FTP-сервера?
Есть задача копировать данные на удаленный FTP-сервер. При этом файл должен оказаться в двух директориях - в архивной и в каталоге программы. В архивной должный для истории сохранятся все файлы с указанием в имени времени выгрузки. А в рабочем каталоге должно быть имя - "current_data".
В настоящий момент я успешно копирую файл с помощью команды "append". Но файл большой и выгрузка одного экземпляра занимает около получаса. Хочется дважды одни и те же данные по сети не гонять.
Команда help в ftp-клиенте и man ftp ни слова не говорят о возможности копирования в рамках удаленного сервера. Есть только удаление и переименование файлов. Еще есть возможность выполнения шеловских команд, но только на локальном компе, а не на удаленном как мне бы хотелось.
Остается последняя надежда на комбинацию команд ntrans и nmap для указания файлу более одного места назначения. Но подтверждения этой идеи примерами я найти не смог.
Мне кажется это довольно распространенная задача для админов, интеграторов и девеллоперов. Как вы, имея только FTP доступ к удаленному серверу, выполняете копирование одинаковых данных (к примеру, те же бэкапы на разные винты)?
UPD.
1) Сервер, с которого отсылаются данные, под управлением серверной убунты без графического интерфейса. Работа на нем происходит по SSH. Результатом работы будет шеловский скрипт, который по крону отсылает требуемые данные. Хочется уменьшить время выполнения скрипта, так как после отправки данных необходимо выполнить отметку про успешное окончание и выполнить еще кое-какие данные. А в результате все неоправданное затягивается.
2) Сервер принимающий данные - просто FTP-сервер, который доступ по SSH к себе не дает.
Тоже часто сталкиваюсь с задачей, но каждый раз легче просто получить ssh чем придумывать как бы с помощью молотка, который держишь за привязанную к ручке веревку, закрутить шуруп.
Ну я стараюсь доходчиво объяснить, что ssh гораздо безопаснее ftp и ftp пользуются только ретрограды.
А насчет sftp/scp - не совсем понял. Какая разница? Ну используйте scp если удобно, но sftp выглядит удобнее, да и как бы он не был надстройкой над scp. Хотя я не вдавался в детали.
Я ваш комментарий про SSH понял. Вы же вопрос читали? У меня желание уменьшить время копирования на удаленный сервер за счет отказа от двойного копирования одного и того же файла. SFTP - это реализация FTP поверх SSH, а в протоколе FTP (RFC 959) нет такой команды как скопировать из одного удаленного каталога в другой. А вот SCP поддерживает такое копирование. Касательно второй моей части ответа - SSH дают не всем. В моем случае с этим нужно смириться. В других случаях это мог вообще оказаться виндузный сервер и ssh тоже в пролете...
> SFTP - это реализация FTP
Нет. Ничего общего кроме названия. Операции копирования и перемещение файлов в пределах сервера по sftp выполняются в пределах этого сервера.
Ну а по ftp задача видимо не решаемая. Хотя подпишусь - мало ли.
Теоретически задача решаема. FXP (en.wikipedia.org/wiki/File_eXchange_Protocol) поверх обычного FTP позволяет сделать отправку с одного FTP-сервера на другой не заводя трафик на клиентскую машину. Только никак не могу разобраться: стандартный ftp-клиент Ubuntu (пришедший туда из BSD) умеет такое или нет? А если он не умеет, то могут ли другие программы из репозитория (с минимумом зависимостей) такое делать? На совсем левый "велосипед" с гитхаба я уже не пойду - чем проводить полный аудит кода проще смирится с удвоенным временем копирования.
хз. Судя по времени копирования и трафику, тот клиент который используется nautilus (nemo/caja) так не умеет. Или у него свой встроенный?
Еще я из гуевых пользовался gnome-commander - это вообще тормозное поделие - умудряется переоткрывать сессию для каждого вновь отправляемого файла. Пока файлов не много - не заметно. Но когда много - это ад.
Самым классным по работе с протоколом именно, показался FileZilla - попробуйте его.
Правда интерфейс у него идиотский и функциональность этого интерфейса (((
Сейчас, в итоге, пользуюсь nemo.
Dementor: А, вон чо. А если скрипт разместить на сервере который должен получать данные? Нет такой возможности? Чтобы он забирал данные и сам их уже множил
Suntechnic: если простого рецепта все же нет (хитрая опция в стандартном ftp-клиенте), то можно будет попробовать договорится. Но это, как говорится, уже будет совсем другая история...