Как показать, что прогресс rsync копирует сценарий в области уведомлений плазмы KDE?

Я искал вокруг, но не мог найти учебное руководство о том, как добавить progressbar или уведомление о прогрессе в плазме KDE. Моя цель довольно проста: сделайте резервный сценарий rsync, который разожжен cron/anacron и помещен в/sbin, который будет выполнен как корень и скопирует мою целую систему (через ssh). Кроме того, для показа progressbar в области уведомлений плазмы KDE, когда запуски сценария выполняется cron/anacron. До сих пор использовал сценарий из этого ubuntuusers.de: https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC/

Спасибо!

1
задан 12 November 2019 в 21:28

1 ответ

Хорошо я нашел хорошее решение с помощью zenity. Ниже я присоединил некоторый todos для пользователей, которые не знакомы со всеми они администраторский материал ;)... Что делает сценарий:

  • Проверка, если удаленный хост достижим
  • , Спрашивает, хотите ли Вы выполнить резервное копирование в GUI (с Zenity)
  • Используя rsync с ssh для резервного копирования к удаленной машине
  • Список резервного копирования установленных пакетов
  • , Сценарий сделан выполнить полное системное резервное копирование / и все его подкаталоги
  • , Выполняемый autmatically один раз в день использующий anacron/cron

Здесь является сценарием:

#!/bin/bash

#preperations...

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:
export DISPLAY=:0.0
export XAUTHORITY=/home/$USER/.Xauthority

#check if host is reachable

ping -c1 -W1 -q $iptoremotehost &>/dev/null #put in the host adress here
status=$( echo $? )
if [[ $status == 0 ]] ; then

#ask if backup should be performed if the remote host is reachable
 if
    ! zenity --question --text "Grab a coffee and perform backup?"; then exit;
 fi
#backup Packages

 dpkg --get-selections > /pathtoyour/Packages.txt #file needs to be created first

#backup whole machine with some excluded folders (not to produce infinite loops). Take care of -i param in rsync because by default it is not using the right private key for ssh connection (in my case this was a problem).

 rsync --rsync-path="sudo rsync" --delete --exclude-from='/pathtoyour/rsync_exclude.txt' -aAXPv -e 'ssh -i /pathtoyour/privatekey' $yoursourcedirectory rsyncuser@$iptoremotehost:$yourdestinationdirectory |
    awk -f /pathtoyour/rsync.awk | #this file must be created first!
    zenity --progress --title "Full System Backup" \
       --text="In process..." --percentage=0 --auto-kill

else
   exit   
fi

TODO для получения его работа:

  1. Создают файлы rsync.awk, rsync_exclude-txt (содержание видят ниже)
  2. Помещенный резервный сценарий в/etc/cron.daily, и сделайте это исполняемым файлом
  3. Установка соединение SSH с помощью открытого ключа, который заменяет пароль когда sshing к хосту. (См.: https://www.cyberciti.biz/faq/how-to-set-up-ssh-keys-on-linux-unix / )
  4. Создают $rsyncuser на удаленном хосте и создают группу, где Вы добавляете rsyncuser к и также обычного пользователя. Измените разрешение так, чтобы новая группа могла получить доступ к чтению и записать $destinationpath Вашего резервного копирования. Не забывайте устанавливать ssh ключ к новому пользователю, так, чтобы никакой пароль не требовался когда sshing!

  5. для сохранения правильных полномочий на скопированных файлах и каталогов добавляют, что необходимо позволить $rsyncuser работать sudo rsync (на удаленной машине) без пароля prombt: sudo visudo и добавляют rsyncuser ALL = NOPASSWD: /usr/bin/rsync

Захват пиво и выполняют резервное копирование!

rsync.awk:

{
   if (index([111], "to-chk=") > 0)
   {
    split([111], pieces, "to-chk=")
    split(pieces[2], term, ")");
    split(term[1], division, "/");
    print (1-(division[1]/division[2]))*100"%"
   }
   else
   {
    print "#"[111];
   }
   fflush();
}

rsync_exclude.txt:

dev*
proc*
sys*
tmp*
run*
mnt*
lost+found*
home/$USER/.ssh/*

не забывают добавлять каталог, где закрытый ключ Вашего соединения SSH лежит. Иначе это была бы проблема безопасности!

Feedback ценится!

0
ответ дан 7 December 2019 в 18:09

Другие вопросы по тегам:

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