Я хочу создать свой собственный файловый индекс и использовать скрипт, в котором я запускаю следующую команду для определенных точек монтирования
File::Find::find( {wanted => \&processFile}, @ARGV ) ;
, где processFile равен
sub processFile
{ my( $dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks512) ;
( @X = lstat($_) ) ;
return unless( $#X == 12 ) ;
(($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks512) = @X)
&& ! ( $prune |= ($dev != $File::Find::topdev) )
&& ($prune = 1)
|| print( LOG "$dev $ino $mode $nlink $uid $gid $rdev $size " . 512*$blocks512 . " $mtime $name\n" ) ;
}
Это хорошо работает для/, / tmp и другие точки монтирования, но он не может спуститься в том данных /volume2/syno1.
Если я добавлю строку, которая печатает имя и значения $ dev и $ File :: find :: topdevЯ получаю следующее:
/volume2 40 40
/volume2/syno1 41 40
/volume2/@eaDir 40 40
/volume2/@eaDir/snaptree.bin 40 40
/volume2/@eaDir/syno1 40 40
/volume2/@eaDir/syno1/SYNO@.attr 40 40
/volume2/@eaDir/syno1/SYNO@.quota 40 40
/volume2/@eaDir/syno1/BackupData 40 40
/volume2/@eaDir/syno1/BackupData/Record 40 40
/volume2/@eaDir/syno1/BackupData/Record/snapshot.record 40 40
/volume2/@eaDir/syno1/BackupData/img_backup_local_db 40 40
/volume2/@eaDir/syno1/BackupData/img_backup_local_db/001132168A71_3_1543860108 40 40
/volume2/@eaDir/syno1/BackupData/img_backup_local_db/001132168A71_3_1543860108/2.db 40 40
/volume2/@tmp 40 40
/volume2/@sharesnap 45 40
Как видно, / volume2 / syno1 терпит неудачу, проверка
/ volume2 отображается в качестве точки монтирования, а syno1 является обычным подкаталогом, но с установленными Windows ACL, чтопо умолчанию в DSM 6
ls -l /volume2
total 0
drwxrwxrwx+ 1 root root 34 Dec 4 09:26 @eaDir
drwxr-xr-x 1 root root 32 Dec 4 09:26 @sharesnap
d---------+ 1 root root 108 Dec 3 18:58 syno1
drwxrwxrwx 1 root root 0 Dec 4 09:26 @tmp
df /volume2 /volume2/syno1
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vg1/volume_2 4026531840 2980006684 1046525156 75% /volume2
- 4026531840 2980006684 1046525156 75% /volume2/syno1
mount /volume2
mount: /dev/vg1/volume_2 is already mounted or /volume2 busy
/dev/vg1/volume_2 is already mounted on /volume2
Как лучше всего решить проблему?