I need to upload a full folder using FTP. Is there is any option for transferring a folder and all of its contents at once?


11 Answers 11


You can use ncftpput. Do the following:

  1. Install ncftp:

    yum install ncftp

yum is lowercase.


    apt-get install ncftp

2. Execute the following command:

    ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
  • 1
    The Yum should be changed to yum - as it is case-sensitive.
    – olekeh
    Oct 26, 2017 at 7:34
  • 3
    Here are all CLI options for ncftpput: ncftp.com/ncftp/doc/ncftpput.html Dec 12, 2017 at 17:37
  • What I like about this solution: automatable!
    – twigmac
    Feb 11, 2020 at 8:51
  • 1
    Great! use the -p "passwd" then I can write it in bash script and run auto.
    – herbertD
    Jan 20, 2021 at 1:48

If you're using a standard command-line ftp client, the MPUT command will allow you to transfer all files matching a (shell glob-style) pattern, so MPUT * will send all files in the current directory. There is also MGET to retrieve files matching a pattern.

By default, both MPUT and MGET will prompt for whether to transfer each file before doing so. You'd probably want to turn off prompting with the "PROMPT" command (no argument; it's a toggle).

  • This question originally came from stackoverflow, so I feel that it should be the accepted answer. Though the original asker seems to have vanished so isn't going to accept one....
    – codetaku
    Aug 20, 2014 at 15:17
  • Warning: the FTP command line client that comes with Windows doesn't support passive mode so using this technique may waste your time. It did in my case since I needed to upload files and was using the Windows command line w/ natively installed tooling.
    – sean2078
    Sep 21, 2017 at 2:29
  • 2
    It will transfer all the plain files in the current directory but it will not transfer recursively any directories that are present. It will just ignore them silently Feb 15, 2019 at 18:09

Use an FTP client such as LeechFTP or FileZilla or something similar. Many people swear by CuteFTP, but it's shareware last I checked. All support transferring a whole folder including directory structure.

  1. have the user/client zip the folder
  2. upload the zip file
  3. unzip the folder server side.
  • note: my answer was posted at StackOverflow. That's why it references a "coding" solution. May 15, 2011 at 1:20

A simple tutorial for other Windows newbies like me who wind up here:

The easiest way to upload an entire folder (with all subfolders and files in them) is:

  1. Download NcFTP Client (it's free, but you can donate) from this link.
  2. Choose NcFTP Client 3.2.5 for Microsoft Windows from the list.
  3. Install it.
  4. When done, a small CMD window with a cherries icon will pop-up. You don't need it.
  5. Just open a standard CMD window and type:
    ncftpput -u *yourUserNameHere* -p *yourUserPasswordHere* -R *www.yourWebsite.com* /
    (as one line).

Note that:

  • -R is a flag for "recursive"; it makes the command copy all subfolders recursively
  • / (slash) is your website's root directory
  • C:\yourFolderDirectoryHere\* selects everything inside C:\yourFolderDirectoryHere
  • looks nice, but the server banned my IP saying i made 800 connections in short interval. no way to reduce number of connections. ANOTHER problem is that i do not know how to skip uploading if destination file exist already.
    – 16851556
    Oct 21, 2019 at 20:37

I'll offer an answer which - though it is pure brute force and not elegant in the slightest - was the only thing that worked for me on the command line. I created a list of the files, and put them into a script:

generate your list of files:

find my-dir -exec echo "put /Users/username/"{} {}  \;

copy and paste them into the script:


ftp -in $hostname <<EOF
quote USER $username
quote PASS $password

cd 123456
  • by bash u mean this only works in unix?
    – p._phidot_
    Oct 26, 2023 at 16:22

Check this out.

You can also programmatically create a folder on the server, and then upload all files to that new folder.

  • The linked SO question has been removed.
    – cxw
    Nov 13, 2017 at 12:06

FileZilla is great for this. If you don't want to download/install anything, this can be done with Internet Explorer. Go into the advanced options, and select Enable FTP folder view (outside of Internet Explorer). Then you can point an explorer window at your FTP server and drag-and-drop files and folders between explorer windows.


Firefox has a plug-in called FireFtp that is a nice ftp client.


The target dir is a zip file. You can copy the full zip file into the ftp server using below code.

//Taking source and target directory path
string sourceDir = FilePath + "Files\\" + dsCustomer.Tables[0].Rows[i][2].ToString() + "\\ConfigurationFile\\" + dsSystems.Tables[0].Rows[j][0].ToString() + "\\XmlFile";

string targetDir = FilePath + "Files\\Customers\\" + CustomerName + "\\" + SystemName + "\\";                                                                                       
foreach (var srcPath in Directory.GetFiles(sourceDir))
    //Taking file name which is going to copy from the sourcefile                                              
    string result = System.IO.Path.GetFileName(srcPath);

    //If that filename exists in the target path
    if (File.Exists(targetDir + result))
        //Copy file with a different name(appending "Con_" infront of the original filename)
        System.IO.File.Copy(srcPath, targetDir + "Con_" + result);
    //If not existing filename
        //Just copy. Replace bit is false here. So there is no overwiting.
        File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), false);
  • That's nice, but your program doesn't compile.
    – DavidPostill
    Jun 15, 2016 at 17:32

My answer is variation of @dgig 's answer.

You can list all the files and save them (including put command) into a file:

find my-dir -exec echo "put /Users/username/"{} {} > list.txt \; 

and then use sftp to process the file:

sftp -C -b sftpbatchfile.txt name@server

-C is for compression, -b is for batch file

  • This does not use FTP as asked. The sftp program uses the SFTP protocol which is a different protocol although it has some letters in common. And you didn't edit the enter code here leftover. Mar 25, 2017 at 16:30

You must log in to answer this question.