Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Delete folders via FTP

by z3d (Scribe)
on Feb 07, 2004 at 13:40 UTC ( [id://327313] : note . print w/replies, xml ) Need Help??


in reply to Delete folders via FTP

Assuming (I know) that you *are* using a perl based method here, such as Net::FTP or varients, are you sure the directory is empty? That too can throw an error...



"I have never written bad code. There are merely unanticipated features."

Replies are listed 'Best First'.
Re: Re: Delete folders via FTP
by new_monk (Sexton) on Feb 09, 2004 at 00:58 UTC
    If the directory does not have anything in it then it would throw an error? In order to delete a folder there has to be some file or other sub directory in order for rmdir() to work?
      Reverse - you can't delete a dir if it still has content. I don't see where you validate in your code that the directory is empty - do you know it is empty already?



      "I have never written bad code. There are merely unanticipated features."
        I did not know it was supposed to be empty in order for the delete to work. We delete these directories at the end of the day regardless of content. They do have some subdirectories and *.rdb files that are discarded daily. How would I delete everything under iq whether its empty or contains data? We usually telnet into the server and do a rm -r * to remove the folders.
Re: Re: Delete folders via FTP
by new_monk (Sexton) on Feb 09, 2004 at 00:39 UTC
    Thanks for your reply. Here is my code and the errors:
    Here is the code:
    use File::glob; use strict; use Net::FTP; use File::Copy; use File::Path; use File::Remove; my $host_disco = "censored"; my $user_disco = "censored"; my $password_disco = "censored"; my $ftp_disco = ""; my $dir = "/"; my $diriq_disco = "/ep005/egate/client/iq"; my @iqfiles_disco = ""; my $file1 = ""; my @iqfolder_arr = ""; my $folder = ""; my $iqfolder = ""; my $folder1 = ""; my $count = 0; #------------------------- $ftp_disco = Net::FTP->new($host_disco) or die "Can't open $host_disco +: $@\n"; $ftp_disco->login($user_disco, $password_disco) or die "Couldn't login +: @{[ $ftp_disco->message ]}"; $ftp_disco->ascii(); $ftp_disco->cwd($dir) or die "Couldn't cwd to $dir: @{[ $ftp_disco->me +ssage ]}\n"; $ftp_disco->cwd($diriq_disco) or die "Couldn't cwd to $diriq_disco: @{ +[ $ftp_disco->message ]}\n"; @iqfolder_arr = $ftp_disco->ls; foreach $folder1 (@iqfolder_arr) { $iqfolder_arr[$count] =~ s/ //g; $iqfolder_arr[$count] =~ s/\n//g; $count++ } foreach $folder (@iqfolder_arr) { my $dirpath = '/ep005/egate/client/iq/'; $dirpath .= $folder; print($dirpath); $ftp_disco->rmdir($dirpath) || die "FTP Message> @{[ $ftp_disco->mess +age ]}\n"; } $ftp_disco->close(); $file1 = ""; sleep(2); print("Disco IQs have been cleared.\n"); #-----------------------------------#


    Error Message:
    /ep005/egate/client/iq/{E9424A48-0086-11D7-AE05-AD16EA76821A}FTP Messa +ge> /ep005 /egate/client/iq/{E9424A48-0086-11D7-AE05-AD16EA76821A}: D +o not specify an exist ing file. Press Enter to continue

    Seems like I have the right idea and the correct methods maybe but I am not sure if maybe the folder that I am trying to remove maybe causing the problem because of the "{}" bracket. I tried using an asterick too but to no avail. I can rename the folders too.