Pre-Cache unison

Вы можете попробовать это выражение sed :

sed -e 's/^\(.* .* \).* .*== \([^ ]* \).*MAIL FROM:<\([^ ]*\)> [^ ]* \([0-9 .]*\)\[.*Messages from \([^ ]*\).*$/\1\t\2\t\3\t\5\t\4/'

Оно работает для меня с вашим примером.

Объяснение

Это выражение sed содержит только одну команду - s /.../.../ .

Первая часть s /// :

'^\(.* .* \)'      -- Timestamp, two first space-separated blocks of text, \1.
'.* .*== '         -- Uninteresting text after timestamp.
'\([^ ]* \)'       -- Block of test between spaces, first email address, \2.
'.*MAIL FROM:<'    -- Position before second email.
'\([^ ]*\)>'       -- Second email addr, non-space characters, ended by '>', \3.
' [^ ]* '          -- SIZE=...:
'\([0-9 .]*\)\['   -- Error codes: digits, spaces and dots ended by '[', \4.
'.*Messages from ' -- Position before IP.
'\([^ ]*\)'        -- Non-space characters, ended by space, IP. \5.
'.*$'              -- Text before end of string, not interesting.

Как видите, это всего лишь прямое описание сырых журналов, ничего интересного.

Вторая часть s /// просто помещает \ N в правильном порядке с \ t (символ табуляции) в качестве разделителя.

2
14.02.2017, 18:11
1 ответ

Вы можете обмануть Unison, предоставив ему два представления одного и того же дерева, которые он не распознает как одно и то же, с помощью привязки .

mkdir /media/Files-bind
bindfs -n /media/Files /media/Files-bind
unison /media/Files /media/Files-bind </dev/null

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

Я подозреваю, что единственным хорошим решением было бы исправить Unison, чтобы добавить нужную вам функциональность.

0
27.01.2020, 22:42

Теги

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