How to nuke a FTP Server

by on August 13, 2006 · 2 comments· Last updated August 13, 2006

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.



You should follow me on twitter here or grab rss feed to keep track of new changes.

Featured Articles:

{ 2 comments… read them below or add one }

1 Shelon Padmore April 23, 2008 at 1:33 pm

What exactly is ncftpls ?

- Shelon Padmore

Reply

2 Cory January 4, 2010 at 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.

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 13 + 14 ?
Please leave these two fields as-is:
Solve the simple math so we know that you are a human and not a bot.



Previous post:

Next post: