Glam Prestige Journal

Bright entertainment trends with youth appeal.

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?

0

11 Answers

You can use ncftpput. Do the following:

  1. Install ncftp:

    yum install ncftp

yum is lowercase.

Alternatively:

 apt-get install ncftp

2. Execute the following command:

 ncftpput -R -v -u "ftp-username" ftp.website.com ftp-upload-path local-path/*
4

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).

3

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
  1. have the user/client zip the folder
  2. upload the zip file
  3. unzip the folder server side.
1

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 * / _C:\yourFolderDirectoryHere\\*_
    (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
1

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:

#!/bin/bash
hostname="my-ftp-host"
username="username"
password="password"
ftp -in $hostname <<EOF
quote USER $username
quote PASS $password
binary
cd 123456
{COPY THE LIST HERE}
quit
EOF

Check this out.

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

1

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 else { //Just copy. Replace bit is false here. So there is no overwiting. File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), false); }
} 
1

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

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy