图片 2

PHP统计目录中文件以及目录中目录大小的方法

正文实例陈述了PHP计算目录普通话件以致目录中目录大小的不二等秘书籍。分享给大家供我们参照他事他说加以考查,具体如下:

近年来在自动化的历程中用到了7z命令行工具,开掘其参数中的路线挺风趣的,在那计算一下。本文中全体demo使用的7z版本为:15.14
x64。

以前一向在弄iOS开辟,对于服务器询问并十分的少。趁着近日不忙,筹算询问精通服务器的连锁文化。

<?php
 //循环遍历目录中所有的文件,并统计目录和文件的大小
 $dirName="phpMyAdmin";
 $dir=opendir($dirName); //返回一个资源类型
 while($fileName=readdir($dir)){
 $file=$dirName."/".$fileName;
 if($fileName!="." && $fileName!=".."){
  if(is_dir($file)){
  echo "<font color='red'>".$fileName."===".date("Y-m-d H:i:s",filectime($file))."==".filetype($file)."==".toSize(dirSize($file))."</font><br/>";
  }
  else{
  echo "<font color='green'>".$fileName."=====".date("Y-m-d H:i:s",filectime($file))."====".filetype($file)."====".toSize(filesize($file))."</font><br/>";
  }
 }
 }
 closedir($dir);
 //把文件或目录的大小转化为容易读的方式
 function toSize($size){
 $dw; //指定文件或目录统计的单位方式
 if($size>pow(2,30)){
  $dw="GB";
  $size=round($size/pow(2,30),2);
 }
 else if($size>pow(2,20)){
  $dw="MB";
  $size=round($size/pow(2,20),2);
 }
 else if($size>pow(2,10)){
  $dw="KB";
  $size=round($size/pow(2,10),2);
 }
 else
 {
  $dw="bytes";
 }
 return $size.$dw;
 }
 //利用递归的方式统计目录的大小
 function dirSize($dirName){
 $dirsize=0;
 $dir=opendir($dirName);
 while($fileName=readdir($dir)){
  $file=$dirName."/".$fileName;
  if($fileName!="." && $fileName!=".."){ //一定要进行判断,否则会出现错误的
  if(is_dir($file)){
   $dirsize+=dirSize($file);
  }
  else{
   $dirsize+=filesize($file);
  }
  }
 }
 closedir($dir);
 return $dirsize;
 }
?>

收缩有个别文件夹

下边包车型大巴指令会把g:temp目录和目录下的兼具文件打包到压缩文件abc.zip中。

7z.exe a abc.zip g:temp

小心,那个时候收缩包中是满含temp目录的。

当大家解压缩abc.zip文件时就能产生大器晚成件相比较有趣的事。无论通过右键菜单中windows提供的”Extract
All…”依旧7z提供的”Extract
files…”,暗中同意都会给解压缩的公文增多顶级目录即abc。

图片 1

多出的那级目录恐怕是大家想要的,或许不是。假使不是,我们能够在下面的UI分界面中把它去掉。

抑或您能够动用命令行解压它:

7z.exe x abc.zip –og:

您能相信呢,解压出来的文本路线中并从未abc这级目录!

问了更加好的询问服务器的连带文化,买了黄金年代台服务器,本来希图用Ali云的,可是好贵,然后开掘AWS
能够无偿使用一年(链接须求翻墙State of Qatar,先要预订,然后亚马逊(Amazon卡塔尔(قطر‎的客服会打电话给您(客性格很顽强在荆棘满途或巨大压力面前不屈妹子很科学!哈哈卡塔尔

减掉有些文件夹下的具有文件

出于通过UI解压缩时默许会生成一级以压缩文件名命名的目录,为了在解压后不改换目录树的布局。大家能够思量在调整和减少时,只增多根目录下的全体文件而不增加根目录,然后以根目录的称号命名压缩文件。

7z.exe a g:temp.zip g:temp*

这时候,压缩包少校不分包temp目录。

诸有此类,大家透过UI暗许解压出来的公文路线和减少前是均等的。

唯独,假如利用命令行解压就得手动增多上一级目录:

7z.exe x g:temp.zip –og:temp

接下去令人奇异的事务再一次发生了,当大家应用相对目录推行压缩命令时:

G:> 7z.exe a g:temp.zip temp*

裁减包中依旧现身了temp目录。查询7z的文书档案后才驾驭,在这里种意况下,要选取相对路径,必要如此写:

G:> 7z.exe a g:temp.zip .temp*

小编选用的是Linux 服务器,看了下 目录,上面是目录截图

在减弱包中带有压缩目录的父目录

还应该有大器晚成种情景,就是大家在减少一个目录时,希望把它的父目录消息也保留到压缩包里。注意,压缩包里唯有父目录而不含有父目录中的别的文件。那个时候就亟须采用相对目录了:

G:>7z.exe a g:temp.zip temptest

诸如此比,压缩包普通话件的根目录正是temp了。

图片 2

文本列表

当实践压缩命令时,除了钦命目录外还足以钦点八个要么多个公文。假如要钦定五个文件/目录,最好的格局是把那一个文件/目录的称呼写到三个文本文件中,然后把那个文件文件作为命令行参数。那些文件文件就称为文件列表,在参数中援用它时需求在文件名前面增加三个出奇的标记’@’。

G:>7z.exe a g:abc.zip –i@g:list.txt 

-i代表list.txt中列项支出的文件和目录会被增添到压缩包中。

文件列表中得以写文件的相对路线,也得以写相对路线。须求当心的是,如若写相对路径,是对峙于当前工作目录的门路,实际不是相对于list.txt的门道。

文件列表中不仅能够罗列单个文件的路线,也能够罗列目录的门径。注意区分绝对路线和相对路径,其准绳和前文所述相同。

 

除了含有内定的目录/文件,还足以清除钦定的目录/文件。

G:>7z.exe a g:temp.zip g:temp -x@g:templist.txt

-x表示list.txt文件中列出的公文和目录不会拉长的压缩包中。

只顾:消释列表中必须要利用相对目录。

 

Linux目录.png

/

/处于Linux文件系统树形布局的最上方,它是Linux文件系统的进口,全体的目录、文件、设备都在/之下。

/bin
该目录寄存着系统最常用的最重大的下令,相当于DOS下的此中命令,只然而它们是以独立的文书情势存在。比方:ls、cp、mkdir等一声令下。这么些目录中的文件都以可实行的还假诺普通客户都得以使用的吩咐。作为系统最底工的一声令下都位居此处。

/usr
该目录是系统存放程序之处,举个例子平常命令、帮衬文件、安装的软件等。这一个目录下有比超级多的文本和目录。当我们设置三个Linux发行版官方提供的软件包时,非常多安装在那。当有关联服务器的铺排文件时,会把布置文件安装在/etc目录中。/usr目录下满含涉嫌字体目录/usr/share/fonts、扶持目录/usr/share/man或/usr/share/doc等。

/var
该目录的剧情是时常转移的,/var下有/var/log目录用来存放系统日志的目录。/var/www目录用来定义Apache服务器站点存放目录。/var/lib用来存放在一些库文件。

/sbin
大多数提到系统管理的一声令下都寄存在该目录中,它是精品权限客户root的可实行命令贮存地,普通顾客无权力实行这些目录下的命令,凡是目录sbin中蕴含的指令都以root权限技艺奉行的。

/root Linux一流权限客商(系统管理员卡塔尔root的主目录。

/home

普通客商的主目录都默许存放在该目录中,比如:有个客商叫wang,那它的主目录正是/home/wang,也得以用~wang表示。

/etc
该目录是系统布署文件的所在地,一些服务器的配置文件也在此,比方:顾客帐号及密码配置文件等。

/dev
设备文件存款和储蓄在该目录中,那么些目录下是兼具Linux的外界设备文件,这几个设施文件的效率周围于DOS下的.sys文件和Win下的.vxd文件。Linux将配备当成文件使用,就要器具抽象化,那样庞大地惠及了大家对设施的操作调节。因而Linux中装置和文件是用相通的秘技访谈的。

/boot
Linux的功底及指引系统的前后相继所急需的公文都寄放在该目录中,比如vmlinuz、initrd.img等文件都坐落这几个目录中。在相同情状下,GRUB或LILO系统辅导微处理器在这里个目录中。

/opt
该目录是可选的软件包安装目录,有个别软件包大家能够将它安装在该目录中。

/tmp
该目录用于寄存有时文件,不常客商运路程序的时候,会爆发一些有的时候文件。/tmp正是用来贮存在一时文件的。/var/tmp目录和该目录的效果与利益是相似的。

/lost+found
在ext2或ext3文件系统中,当系统竟然崩溃或机器意外关机,而发出的片段文件碎片就贮存在该目录中。当系统运维在经过中fsck工具会检讨这里,并修复已经磨损的文件系统。
有的时候系统产生难题,有无数的文件被移到那几个目录中,大概要用手工业的艺术来修复,或移到文件原本的岗位上。

/lib
该目录用于寄放库文件,那几个目录里贮存着系统最核心的分享库,其成效相似于Windows里的.dll文件。差相当少具有的应用程序都供给用到那些分享库。
/mnt
该目录是用来存放挂载积攒设施的挂载目录的,系统提供那么些目录是让客商权且挂载其余文件系统,比如有cdrom等目录。

/proc
操作系统运转时,进度(正在运营中的程序)音信及水源新闻(比如cpu、硬盘分区、内部存款和储蓄器新闻等)贮存在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并非的确的文件系统。因而,这些目录是多少个虚构的目录,它是系统内部存款和储蓄器的照耀,大家能够透过向来访谈那么些目录来收获系统音讯。也等于说,这一个目录的剧情不在硬盘上而是在内部存款和储蓄器里。

/misc
该目录能够用来寄存在杂项文件或目录,即那个用项或含义不明朗的文件或目录能够寄放在该目录下。

/media
即插即用型存款和储蓄设备的挂载点自动在该目录下创设。举例USB盘系统活动挂载后,会在此个目录下发生叁个目录;CDROM/VCD自动挂载后,也会在此个目录中开创叁个目录,相符于cdrom这么些目录。该目录独有在新式的发行套件上才有。

/initrd
系统在起步前的基本是减削的(那和ramdisk有关),当系统运转时供给解压缩,该目录正是解压缩时的近来目录,当运维完后又将该目录清空。

/usr/man 该目录是Linux系统帮助文书档案的存放目录。

/proc/cpuinfo 关于Computer的新闻,如类型、商家、型号和属性等。譬喻cat
/proc/cpuinfo –

/proc/devices 当前运作内核所配置的具备器械清单。 –

/proc/filesystems 当前运转内核所配置的文件系统。 –

/proc/dma 当前正值利用的DMA通道。 –

/proc/interrupts 正在利用的中断和曾经有微微在那之中断。 –

/proc/ioports 当前正在选取的I/O端口。 –

/etc/init.d 那一个目录是用来存放在系统或服务器以System
V方式运转的脚本,那在以System V格局运维或开头化的类别中平淡无奇。举个例子RedHat
Fedora。 –

/etc/xinetd.d
假设服务器是通过xinetd方式运作的,它的台本要放在这里个目录下。某个系统并未有那么些目录,比如Slackware,有个别老的本子也远非。在Redhat
Fedora中相比较新的版本中存在。 –

/etc/rc.d

这是Slackware发行版中某些一个索引,是BSD情势运转脚本的存放地,比方定义网卡,服务器开启脚本等。

 
/etc/X11 是X-Window相关的安顿文件存放地。 –

/usr/bin

以此目录是可执路程序的目录,普通顾客就有权力试行。当大家从系统自带的软件包安装四个顺序时,他的可试行文件超级多会放在这里个目录。相符的目录是/usr/local/bin目录。有时/usr/bin中的文件是/usr/local/bin的链接文件。

/usr/sbin

其一目录也是可执路程序的目录,但基本上贮存涉及系统一管理理的授命。独有root权限技艺试行,肖似目录是/sbin或/usr/local/sbin或/usr/X11Highlander6/sbin等。

/usr/local

那个目录日常是用来寄放在客户自编写翻译安装软件的寄存目录。平日是透过源码包安装的软件,若无特别指虞诩装目录的话,平时是安装在此个目录中。

/usr/lib
该目录和/lib目录雷同,是库文件的仓储目录。存放一些常用的分享库。 –

/usr/share

该目录用于寄放系统共用的事物,比如/usr/share/fonts是字体目录,是客商都共用的。

 
/usr/share/doc 该目录是Linux分享文书档案的存放地。 –

/usr/share/man 该目录是分享的辅助文件的贮存地。 –

/usr/src
该目录是内核源码寄放地,上面有基本源码目录,比如linux、linux-2.xxx.xx目录等。有的系统也会把一些源码软件包安装在那间,例如Redhat
Fedora。别的Redhat

4.0/5.0,它的基石源码包的目录位于/usr/src/kernels目录下的某部目录中(唯有安装后才会变卦对应目录)。

/var/adm

比方软件包安装音信、日志、管理新闻等就寄存在该目录下,在Slackware操作系统中是有这几个目录的。在Fedora中好象没有。

/var/log 该目录用于寄存系统日志。 –
 
/var/spool 打字与印刷机、邮件、代理服务器等假脱机目录寄放在该目录下。 –

参照链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注