perl $ File :: Find проблема по синологии с DSM 6.2.1 - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу создать свой собственный файловый индекс и использовать скрипт, в котором я запускаю следующую команду для определенных точек монтирования

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

Как лучше всего решить проблему?

...