≡ Menu

How to nuke a FTP Server

You can nuke whole directory or sub-directory tree by using rm -rf command with -rf flags under UNIX or Linux. But ftp server does not gives rm -rf command. For ftp server you use the rmdir command to remove a directory (and rm for files). Depending on the remote server, you may be able to remove a non-empty directory.(most remote ftp server disables this option)

For example, consider my following ftp directory server structure (I do not have ssh access to this FTP box):

ccbackup/
ora9backup/
usershotdata/
vivek/
  |-Junk
  |-mp3
  |-02/09
  |-03/09
  |....
...
linux-iso/
openbsd-ports/
freebsd-ports/
tosbackup/
cnowbackup/
...

Now let us say I want remove all files and sub-directories under /vivek/ directory. There are least 100 subdirectories and deleting all files and directory manually will take lots of time.

To nuke a vivek/ directory, you need to use ncftpls command to obtain the list of all subdirectories:
$ ncftpls -u vivek -p mypassword ftp://array05.wan.nixcraft.com/vivek/

Output:

Junk/  mp3/ 02/09/ 03/09/   ...

Where,

  • -u vivek : FTP login username
  • -p mypassword : Ftp password
  • ftp://array05.lan.nixcraft.com/vivek/ : Ftp server name (array05.wan.nixcraft.com) followed by path (/vivek/).

Now you can store a list of all sub-directories in a shell variable called LIST. Type the following command at shell prompt:
$ LIST=$(ncftpls -u vivek -p mypassword ftp://array05.wan.nixcraft.com/vivek/)
$ echo $LIST

Output:

Junk/  mp3/ 02/09/ 03/09/ ….

To remove all sub-directories from /vivek/ dir you can write a shell script as follows:
LIST="$(ncftpls -u vivek -p mypassword ftp://array05.wan.nixcraft.com/vivek/)"
for dir in $LIST
do
rdir="/vivek/${dir}"
ncftp -u"vivek" -p"password" array05.wan.nixcraft.com <<EOF
cd $rdir
rm *
rmdir $rdir
quit
EOF
done

How it works?

  1. ncftp ftp client login to my ftp server.
  2. Script will change directory to $rdir
  3. First, it will remove all files
  4. Next, it will remove subdirectory
  5. And ftp connection will terminated
  6. The entire cycle is repeated using a shell for loop construct.

You can obtain complete working and generic version here. You can use logic presented here to write a shell script for sftp server. You can modify this script rotate ftp backups and much more.

Share this on:

Your support makes a big difference:
I have a small favor to ask. More people are reading the nixCraft. Many of you block advertising which is your right, and advertising revenues are not sufficient to cover my operating costs. So you can see why I need to ask for your help. The nixCraft, takes a lot of my time and hard work to produce. If you use nixCraft, who likes it, helps me with donations:
Become a Supporter →    Make a contribution via Paypal/Bitcoin →   

Don't Miss Any Linux and Unix Tips

Get nixCraft in your inbox. It's free:



{ 2 comments… add one }
  • Shelon Padmore April 23, 2008, 1:33 pm

    What exactly is ncftpls ?

    – Shelon Padmore

  • Cory January 4, 2010, 3:17 am

    I’m not sure if this is unique to my setup… but I was able to use ncftp and do:

    rm -fr /unempty-ftp-dir/

    from the ftp command line.

Leave a Comment