Хвост с сохранением информации (только показывает новые строки от последнего выполнения),

Ваше наблюдение

В настоящее время перемещенные файлы сохраняют свои собственные разрешения ACL от того места, где они были созданы, что не соответствует ожиданиям.

blockquote>

Кажется, что ожидаемое поведение. После статьи службы поддержки Microsoft Как обрабатываются разрешения при копировании и перемещении файлов и папок .

По умолчанию объект наследует разрешения от своего родительского объекта, либо во время создания, либо когда он копируется или перемещается в родительскую папку. Единственное исключение из этого правила возникает, когда вы перемещаете объект в другую папку на том же томе. В этом случае первоначальные разрешения сохраняются .

BLOCKQUOTE>

5
задан dland 2 November 2008 в 21:56
поделиться

4 ответа

Хотя это использовало строки для других целей, я написал код, который делает по существу это прежде.

Все, что необходимо сделать, записать байтовое смещение (с, говорят), и inode (со статистикой) для каждого файла после того, как хвост завершен. В следующий раз это выполняется против файла, сначала проверьте inode (со статистикой) снова. Если inode изменился, или файл меньше, чем зарегистрированное смещение, то это - другой файл (удаленный и воссозданный, журнал был повернут, и т.д.), таким образом, необходимо показать его с начала; иначе ищите на зарегистрированное смещение и отобразите его оттуда.

2
ответ дан 14 December 2019 в 04:51
поделиться

с тех пор делает точно это, хотя это находится в C.

2
ответ дан 14 December 2019 в 04:51
поделиться

Может быть этот пакет Perl, может помочь Вам:

File::Tail::Multi

Полученный из MultiTail, эта библиотека жемчуга помогает выследить динамический список файлов и строк соответствия/кроме с помощью полных регулярных выражений и даже поддерживает их состояние локально.

Использование В КАЧЕСТВЕ ПРИМЕРА File::Tail::Multi;

$tail1=File::Tail::Multi->new (  OutputPrefix => "f", 
                                 Debug => "$True", 
                                 Files => ["/var/adm/messages"]
                              );
while(1) {
    $tail1->read;
    #
    $tail1->print;
    sleep 10;
}
  • $tail1=File::Tail::Multi->new : Создайте новый объект ptail
  • Files => Файл хвоста/var/adm/messages
  • OutputPrefix => Предварительно ожидают имя начала файла каждой строки в атрибуте объекта "LineArray"
  • $tail1->read : Считайте всю строку из файлов
  • $tail1->print : Распечатайте всю строку в атрибуте объекта "LineArray";
2
ответ дан 14 December 2019 в 04:51
поделиться

Я реализовал минимальную версию чистой версии Perl:

#! /usr/bin/perl
# Perl clone of since(1)
# http://welz.org.za/projects/since
#

use strict;
use warnings;

use Fcntl qw/ SEEK_SET O_RDWR O_CREAT /;
use NDBM_File;

my $state_file = "$ENV{HOME}/.psince";

my %states;
tie(%states, 'NDBM_File', $state_file, O_CREAT | O_RDWR, 0660)
        or die("cannot tie state to $state_file : $!");

while (my $filename = shift) {
        if (! -r $filename) {
                # Ignore
                next;
        }
        my @file_stats = stat($filename);
        my $device = $file_stats[0];
        my $inode = $file_stats[1];
        my $size = $file_stats[7];
        my $state_key = $device . "/" .$inode;
        print STDERR "state_key=$state_key\n";

        if (! open(FILE, $filename) ) {
                print STDERR "cannot open $filename : $!";
                next;
        }

        # Reverting to the last cursor position
        my $offset = $states{$state_key} || 0;
        if ($offset <= $size) {
                sysseek(FILE, $offset, SEEK_SET);
        } else {
                # file was truncated, restarting from the beginning
                $offset = 0;
        }

        # Reading until the end
        my $buffer;
        while ((my $read_count = sysread(FILE, $buffer, 4096)) > 0) {
                $offset += $read_count;
                print $buffer;
        }
        # Nothing to read
        close(FILE);
        $states{$state_key} = $offset;
}

# Sync the states
untie(%states);

@Dave: это почти похоже на Ваш алгоритм, за исключением того, что я не использую, говорят, но внутренний сохраняемый счетчик.

2
ответ дан 14 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: