Perl如何监听文件的变化

来源:百度知道 编辑:UC知道 时间:2024/05/28 00:42:30
我想请问一下,服务器是linux的系统,现在想针对服务器上的一个文件夹进行监听和备份。如何实践,如果有代码更好。谢谢大家了。

可以把文件的名字、长度、日期存入数组或者文本文件,不断的定时重新更新数组,检测数组和上一次记录数值的变化,就可以知道哪些文件变化了(长度、日期)、哪些文件删除了、哪些文件新增的。

打开文件夹读取文件清单使用下面的语句:
$dir='/usr/local';
opendir(DIR,$dir);
@files=readdir(DIR);
closedir(DIR);

获取某个文件的时间、长度使用stat函数,说明如下:

perl stat 函数

stat()函数返回一个数组。下面是数组各元素的含义。
0 dev 设备号 驱动器号(C:通常是2,D:通常是3,等等)
1 ino 索引节号 总是0
2 mode 文件的方式 无
3 nlink 链接号 通常为0;Windows NT;文件系统允许链接
4 uid 文件所有者的用户ID(UID)总是0
5 gid 文件所有者的组ID(GID)总是0
6 rdev 特殊文件信息 驱动器号(重复)
7 size 文件大小(以字节计)文件大小(以字节计)
8 atime 上次访问的时间 上次访问的时间
9 mtime 上次修改的时间 上次修改的时间
10 ctime Inode修改时间 文件的创建时间
11 blksz 磁盘块的大小 总是0
12 blocks 文件中的块的数量 总是0

例:获取文件时间

my @array = stat("mysql.tar.gz");
print "Mtime: $array[9]\n";
print "Size: $array[7]\n";