Easiest way to duplicate directory over FTP

I want to duplicate a directory on an FTP server I’m connected to from my Mac via the command-line

Let’s say I have file. I want to have files2 with all of file‘s subdirectories and files, in the same directory as the original. What would be the simplest way to achieve this?

EDIT:

With mget and mput you could download all files and upload them again into a different folder but this is definitely NOT what i want/need (I started this question trying to avoid duplicating with this download upload method from the dektop client)

Asked By: Trufa

||

This is wrong now, but keeping undeleted so the comment tree isn’t lost

cp copies files and directories; you can give it the -r flag to make it recursively copy everything. From the folder that contains file:

$ cp -r file files2

Answered By: Michael Mrozek

What you have is not a unix command line, what you have is an FTP session. FTP is designed primarily to upload and download files, it’s not designed for general file management, and it doesn’t let you run arbitrary commands on the server. In particular, as far as I know, there is no way to trigger a file copy on the server: all you can do is download the file then upload it under a different name.

Some servers support extensions to the FTP protocol, and it’s remotely possible that one of these extensions lets you copy remote files. Try help site or remotehelp to see what extensions the server supports.

If you want a unix command line, you need remote shell access, via rsh (remote shell) or more commonly in the 21st century ssh (secure shell). If this is a web host, check if it provides ssh access. Otherwise, contact the system administrator. But don’t be surprised if the answer is no: command line access would be a security breach in some multi-user setups, so there may be a legitimate reason why it’s not offered.

LFTP supports higher-level commands above what the FTP protocol provides, for example its mirror command provides what you want.

There are other programs with similar features; sitecopy is another example.

Answered By: ephemient

Here’s how to do it with lFTP:

# lftp ftp_host
user ftp_user ftp_pass
mirror source target (download entire directory tree)
mirror -R source target (reverse mirror; upload entire directory tree)
Answered By: mbrixner
Categories: Answers Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.