Другое решение, без использования awk и только jq
Хитрость заключается в использовании--сырого -ввода , который будет считывать файл как массив строк.
Таким образом, для каждой строки проверьте, символ | здесь вырежьте строку и проанализируйте часть как строку json
jq -j --raw-input '
. as $line |
if index("|") >= 0
then
[.[:index("|")-1],.[index("|")+2:] ]
else
empty
end |
[.[0], (.[1] | fromjson | to_entries |.[0].value ) ] |
.[0], " | \"",.[1], "\"\n" ' /tmp/file.log
Пожалуйста, проверьте это:
и эта тема:https://serverfault.com/questions/7969/is-there-a-working-linux-backup-solution-that-uses-inotify
Или вы можете запустить rsync
с помощью cron
.
Итак, у меня есть план. Я хочу резервное копирование / синхронизацию, но если я удалю, меня не будет. Итак, псевдокод выглядит примерно так
while inotify create/modify #executes command if create/modify
do
if `du source` is greater than `du destination` then #size of source is gt than dest
rsync source/ dest -av
done
Наконец-то сделал это
#!/bin/bash
if [[ `pgrep -f $0` != "$$" ]]; then
echo "Exiting"
exit
fi
while inotifywait -r -e modify,create /root/MachineYadav 1>/dev/null 2>/dev/null
do
echo "0" > /tmp/KaliLinuxBackup
clear && sleep 1.5 && echo "Backing up" && sleep 0.5
if [[ `du -s /root/MachineYadav/ | awk '{print $1}'` -gt `du -s /root/Mount/Window/Kali-Mirror | awk '{print $1}'` ]]; then
echo "1" > /tmp/KaliLinuxBackup
rsync /root/MachineYadav/ /root/Mount/Window/Kali-Mirror/ -av
fi
clear && echo "Finishing" && sleep 0.5
done
У меня будет аналогичная реализация с некоторыми изменениями. Спасибо @Artem S. Tashkinov и @fra -san