Disk-Usage
如何檢查 ftp 中的磁碟使用情況?
有沒有辦法在ftp中總結某個目錄的磁碟使用情況?我試圖創建一個腳本來檢查目前目錄的磁碟使用情況並列印出主目錄的可用空間。
例子:
ftp> cd /home/directory/ drw-rw-rw- 1 user group 0 Nov 16 /directory drw-rw-rw- 1 user group 0 Nov 16 next/directory drw-rw-rw- 1 user group 0 Nov 16 next/next/directory
出於某種原因,我看不到目錄的任何大小。但在它們裡面是我需要檢查使用情況的文件,所以我必須得到這樣的東西:
total disk usage for /home/directory = "some count" total disk usage for /next/directory = "some count" total disk usage for /../directory = "some count"
你可以使用 Perl。來自http://aplawrence.com/Unixart/perlnetftp.html:
#!/usr/bin/perl my $param = $ARGV[0]; # required modules use Net::FTP; use File::Listing qw(parse_dir); sub getRecursiveDirListing { # create a new instance of the FTP connection my $ftp = Net::FTP->new("fftpserver", Debug=>0) or die("Cannot connect $!"); # login to the server $ftp->login("username","password") or die("Login failed $!"); # create an array to hold directories, it should be a local variable local @dirs = (); # directory parameter passed to the sub-routine my $dir = $_[0]; # if the directory was passed onto the sub-routin, change the remote directory $ftp->cwd($dir) if($dir); # get the file listing @ls = $ftp->ls('-lR'); # the current working directory on the remote server my $cur_dir = $ftp->pwd(); my $totsize = 0; my $i = 0; my @arr = parse_dir(\@ls); my $arrcnt = scalar(@arr); if ($arrcnt == 0) { print "$cur_dir 0\n"; $ftp->quit(); exit 1; } else { # parse and loop through the directory listing foreach my $file (parse_dir(\@ls)) { $i++; my($name, $type, $size, $mtime, $mode) = @$file; $totsize = $totsize + $size if ($type eq 'f'); print "$cur_dir $totsize\n" if ($i == $arrcnt); # recursive call to get the entries in the entry, and get an array of return values # @xx = getRecursiveDirListing ("$cur_dir/$name") if ($type eq 'd'); } # close the FTP connection $ftp->quit(); } # merge the array returned from the recursive call with the current directory listing # return (@dirs,@xx); } @y = getRecursiveDirListing ("$param");
要執行它:
$ ./getSize.pl <directory>
我建議您使用curlftpfs在文件系統上掛載您的 FTP 儲存庫。
du -shc .
然後在您想知道磁碟使用情況的文件夾中使用傳統命令。