Вопрос или проблема
Возможно ли (и как) скопировать файл на удаленной машине в другое место на той же удаленной машине, используя FTP?
Вам нужно именно создать копию файла, так чтобы полная версия находилась в обоих путях, а не просто переместить или переименовать единичный экземпляр файла?
Если да, то протокол FTP действительно это позволяет, несколькими способами:
- FTP с давних пор позволяет пользователю координировать передачи FTP от сервера к серверу с одного клиента. Вы можете использовать этот метод через два отдельных управляющих соединения к одному серверу, чтобы заставить сервер “общаться с самим собой” через FTP для передачи файла. См. RFC 959, раздел 2.3 (в частности, рисунок 2) и раздел 5.2.
- Команда FTP “SITE” позволяет любому FTP-серверу предоставлять “специфические для сайта” функции, которые могут включать возможность выполнения копий.
Я предполагаю, что это зависит от FTP-сервера, но вы можете выполнить перемещение с помощью команды FTP rename
.
Почему вы хотите использовать FTP вместо команды ОС copy|cp|whatever
для этого? У вас есть доступ к серверу только через FTP? Не можете использовать telnet|ssh|RDP|и т. д. вместо этого?
Тем не менее, название FTP само по себе говорит о многом: “перенос” и “протокол” должны указывать на то, что это для передачи файлов по сети и будет иметь ограниченные возможности взаимодействия с файловой системой. FTP не является универсальным инструментом для работы с файловыми системами.
Вы можете переименовать файл, используя команды FTP RNFR
и RNTO
(см. функцию переименования в вашем любимом FTP-клиенте).
Большинство FTP-серверов поддерживают переименование ‘/folder/file’ в ‘/another/folder/another-file’, если целевая директория существует.
Реализация копирования файлов на FTP-сервере (т. е. без выполнения обратного прохода через сеть) кажется зависимой от клиента, который устанавливает петлевое соединение с сервером. Для выполнения этого с помощью командного клиента lftp
см. разделы man-страницы, касающиеся FXP и команды ftpcopy
.
Ответ или решение
Перемещение/Копирование файлов с использованием FTP-сервера
Введение
FTP (File Transfer Protocol) – это стандартный сетевой протокол, используемый для обмена файлами между клиентом и сервером по сети. Он позволяет пользователям выполнять действия, такие как загрузка, скачивание, перемещение и копирование файлов. В данной статье мы рассмотрим, возможно ли копировать файлы на удаленных машинах с помощью FTP, а также выясним, какими методами можно это сделать.
Возможность копирования файлов через FTP
Как было указано выше, вы можете воспользоваться несколькими подходами для копирования файлов на одном и том же удаленном сервере, используя FTP. Однако важно понимать, что оригинальный протокол FTP не предоставляет прямых команд для копирования файлов. Вместо этого можно воспользоваться следующими методами:
-
Координация серверных передач:
FTP позволяет пользователю управлять передачами с одного сервера на другой через один клиент. Вы можете подключиться к серверу дважды, создавая два контроллера и при этом использовать команды FTP для указания серверу «говорить самому с собой».- Ссылаясь на RFC 959, раздел 2.3 и 5.2, можно узнать подробно о том, как организовать такие операции.
-
SITE команда:
Многие FTP-серверы поддерживают специальные команды SITE, которые могут быть настроены системными администраторами для обеспечения функционала копирования непосредственно на сервере. Эта команда может быть нестандартной и варьироваться в зависимости от реализации, поэтому следует ознакомиться с документацией вашего FTP-сервера. -
Команды RNFR и RNTO:
Если задача заключается в перемещении файла, существует командаrename
, которая может выполнять эту операцию. Для копирования необходимо использовать комбинацию команд RNFR (Recognize From) и RNTO (Recognize To) на существующем файловом ресурсе, при этом это создаст лишь новую ссылку на файл, а не его полноценную копию.
Применение lftp
Если ваш FTP-клиент поддерживает команды FXP (FTP eXchange Protocol), вы можете создать циклическое соединение к серверу для передачи файлов без необходимости сетевых операций (т.е. для минимизации сетевых расходов).
При использовании командной строки lftp, вы можете использовать следующие команды для осуществления копирования:
lftp -u username,password ftp://yourftpserver.com
Затем выполните команду:
ftp> mirror --only-newer --verbose /path/to/source /path/to/destination
Ограничения HTTP
Следует учитывать, что FTP предназначен для обмена файлами и имеет ограничения для управления файловой системой. Если ваш FTP-сервер не поддерживает команду SITE для создания копий файлов, у вас могут быть ограничения на этом уровне.
Альтернативные методы
Если у вас есть доступ к серверу через Telnet, SSH, или RDP, лучше использовать команды операционной системы, такие как cp
в Linux или copy
в Windows, которые предоставят более полный контроль над файловой системой и позволят выполнять множество операций с файлами эффективно.
Заключение
Копирование файлов на удаленном сервере с использованием FTP может быть достигнуто через несколько методов, каждый из которых имеет свои ограничения и спецификацию. Понимание возможностей и ограничений протокола FTP позволит вам принимать обоснованные решения при управлении файлами на ваших серверах. Если доступ к более мощным инструментам возможен, рекомендуется использовать их для выполнения операций с файлами более эффективно.