Easiest way to duplicate directory over FTP

24,169

Solution 1

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.

Solution 2

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)

Solution 3

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

Solution 4

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.

Share:
24,169

Related videos on Youtube

Trufa
Author by

Trufa

Updated on September 17, 2022

Comments

  • Trufa
    Trufa over 1 year

    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)

  • Trufa
    Trufa over 13 years
    It doesnt seem to be working, I failed to mention (because I though it would be the same) that I am trying to do this via an FTP connection established from a mac terminal. It gives me this error: 'cp' macro not found. Thanks
  • Michael Mrozek
    Michael Mrozek over 13 years
    @Trufa Oh! No, that's quite different; FTP and the command-line are completely separate. I edited your question to hopefully clarify
  • Trufa
    Trufa over 13 years
    Im so sorry, I though it wouldnt mind because "I was using the UNIX command line via FTP", this is obviously not the case! Thanks for the edit!!
  • Trufa
    Trufa over 13 years
    is this a question for stackoverflow? it may be more of a programming question than an UNIX one, I´n no sure.
  • Michael Mrozek
    Michael Mrozek over 13 years
    @Trufa Definitely not SO. Maybe SU, but I think it's fine here
  • Trufa
    Trufa over 13 years
    I´ll check it out I think this sums up the whole issue very well!! thank you VERY much!!
  • Trufa
    Trufa over 13 years
    Just to clarify, Hostgator offers jailed ssh in shared accounts.