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?
- ncftp ftp client login to my ftp server.
- Script will change directory to $rdir
- First, it will remove all files
- Next, it will remove subdirectory
- And ftp connection will terminated
- 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:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop











{ 2 comments… read them below or add one }
What exactly is ncftpls ?
- Shelon Padmore
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.