我有一个带有USB端口和外部USB磁盘驱动器的路由器,我想将其用于备份。
不幸的是,路由器使用了不安全的SMBv1,Windows拒绝连接。路由器具有到驱动器的FTP功能,但指令集有限。 FTP不提供任何df(磁盘文件系统)或类似功能来监视磁盘利用率。 LIST命令以及PHP ftp_rawlist()不会递归工作。 ftp_rawlist()确实提供了准确的文件大小,但是目录大小是错误的。
我正在尝试使用ftp_rawlist()通过FTP“蜘蛛化”磁盘
此PHP脚本似乎提供了所需的递归,但是空间计算比实际计算少了约15%。我想念什么?
$directories = array('/volume1') ;
$sizetotal=0;
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
while (count($directories)) {
$curdir = array_shift($directories);
$directorylisting = ftp_rawlist($conn_id, $curdir );
foreach ($directorylisting as $line) {
//substr ( string $string , int $start [, int $length ] ) : string
$ftype = substr( $line , 0,1);
$fsize= substr( $line , 29, 13);
$fname= substr( $line , 56);
if ($ftype == '-') {
$sizetotal += (int)$fsize;
} elseif ($ftype == 'd') {
array_push($directories, $curdir ."/" . $fname );
$sizetotal += $fsize;
echo $curdir ."/" . $fname ."\t" . $fsize . "\r\n";
} else {
echo "not a file or directory! probably a link.\r\n";
}
}
}
echo $sizetotal . "\r\n";