rsync --сравнить -пункт назначения, не ускоренный результат

Мне нравится, когда он короткий и без большого количества хаков или внешних скриптов. Вы можете запустить этот oneliner из ex (в vim )при необходимости (или поместить каждую команду в vimrc, когда открываются файлы журнала -.)

:set autoread | au CursorHold * checktime | call feedkeys("lh")

и дополнительно вы можете :set syntax=logtalkраскрасить бревно

(если вы хотите перейти (почти )в конец файла, просто используйте "G" вместо "lh" с клавишами подачи)

Пояснение:

  • autoread:читает файл при изменении извне (но сам по себе не работает, нет внутреннего таймера или что-то в этом роде. Он будет читать файл только тогда, когда vim выполняет действие, например команду в ex:!
  • CursorHold * checktime:когда курсор не перемещается пользователем в течение времени, указанного в updatetime(, которое по умолчанию составляет 4000 миллисекунд, выполняется )checktime, который проверяет наличие изменений вне файла
  • call feedkeys("lh"):Курсор перемещается один раз вправо и назад влево. а дальше ничего не происходит (... значит, CursorHoldсрабатывает, значит имеем цикл)

Чтобы остановить прокрутку при использовании call feedkeys("G"), выполните:set noautoread-теперь vim сообщит, что файл был изменен, и спросит, хотите ли вы прочитать изменения или нет)

Мне нравится идея смотреть лог-файлы в vim (вместо tail -f ), например. когда вы работаете в сеансе ssh без screen/tmux.Кроме того, вы можете скопировать непосредственно из файла журнала, если это необходимо, или сохранить вывод напрямую, или... все, что вы можете сделать с помощью vim:)

*из этого ответа(со ссылкой на ответ PhanHaiQuang и комментарий flukus)

0
11.09.2020, 12:41
1 ответ

Is there a way to only copy the files that are the diff between the directories?

Да. В вашем случае не хватает только того, что каталог сравнения относится к месту назначения. Та же проблема относится и к каталогам ссылок. Решение здесь состоит в том, чтобы использовать абсолютный путь

Сценарий

mkdir /tmp/608927
cd /tmp/608927
mkdir testdiff{1,2} changed
touch testdiff1/testfil{1,2,3}
cp -p testdiff1/testfil{1,2} testdiff2/

Тестовый запуск, копирование файлов из testdiff1в changed, но только тех, которые не старше -до -даты в testdiff2и не в changed

.
rsync -av --compare-dest "$PWD"/testdiff2/ testdiff1/ changed/

Выход

sending incremental file list
./
testfil3

sent 165 bytes  received 38 bytes  406.00 bytes/sec
total size is 0  speedup is 0.00

Доказательства

ls changed/
testfil3

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

0
18.03.2021, 23:05

Теги

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