2018年11月服务器挂了,各种底层命令行失效,只能通过php来下载服务器的数据库备份文件 (备份还是应该在异地备份,否则麻烦的很)
只有cd 和 cat命令有效 vi失效,ls失效
cat > a.php << \EOF |
输入完毕php代码输入EOF就可以退出了。
<?php $name = $_GET['name']; function read($filename){ $arr = explode("/", $filename); $lastname = $arr[count($arr)-1]; $file_size = filesize($filename); header("Content-type: application/octet-stream"); //返回的文件 header("Accept-Ranges: bytes"); //按照字节大小返回 header("Accept-Length: $file_size"); //返回文件大小 header("Content-Disposition: attachment; filename=".$lastname);//这里客户端的弹出对话框,对应的文件名 $fp = fopen($filename, "rb");//读取二进制文件时,需要将第二个参数设置成'rb' //向客户端返回数据 //设置大小输出 $buffer=1024; $file_count=0; while(!feof($fp) && ($file_size-$file_count)>0){ $file_data=fread($fp,$buffer); $file_count+=$buffer; echo $file_data; } fclose($fp); } $file = '/root/'.$name; read($file); ?> |
此代码可以实现下载站的文件验证,加密,等各种功能,因为所有文件下载必须经过php文件,就可以进行cookie认证鉴权等操作。
比如服务器存了个java-er.com.zip,客户下载必须登录,就可以用php来实现。发现客户没登录,那么禁止下载
当然这个zip文件实际上不在http服务目录下,而是在专门的无法被http直接访问的目录。