Показано загальний прогрес у rsync: чи це можливо?


229

Я вже шукав цю опцію, але знайшов лише рішення, які передбачають власні виправлення . Той факт, що він не відображається в --help і не можна знайти більше інформації, мабуть, вказує на відповіді "ні", але я хотів би, щоб це підтвердилося.

Чи можна показати загальний хід передачі файлів за допомогою rsync?


22
Оскільки rsync 3.1.0, тепер включений базовий загальний прогрес передачі файлів. Детальні відомості див. У розділі сервер відповідей.com/ a/441724/107793 .
Флоріан Фельдхаус

14
Будь ласка, змініть прийняту відповідь. @ Відповідь Девіда абсолютно марна.
Навін

Відповіді:


36

данакім правильно. Немає тривіальних способів додавання загального показника прогресу.

Причиною цього є те, що коли rsync переглядає список файлів для синхронізації, він не знає достроково, які файли потрібно буде змінити. Якщо ви робите передачі дельти, самі дельти повинні бути розраховані заздалегідь, щоб скласти загальну картину роботи, яку потрібно виконати.

Іншими словами, найпростіший спосіб обчислити, скільки роботи потрібно виконати - це реально виконати.


42
Ви все ще можете мати простий індикатор на кшталт (передані дані + пропущені дані) / (загальна кількість даних у джерелі) або (# файли передано чи пропущено) / (# файлів у джерелі). Це не буде особливо точним, але це дасть ідею. Добре, коли ви робите велику передачу наприкінці дня, і вам цікаво, чи варто почекати і вимкнути комп’ютер, чи пустити його на ніч ...
naught101

3
Я не вірю, що такий висновок є правильним. Я думаю, що @ naught101 є більш справедливим до питання, і я думаю, що прогнозування відповіді про невживання --size-onlyабо подібне є ще неточним.
Еван Керролл

2
На той момент, коли я писав відповідь, це було точно - у rsync не було механізму загального показника прогресу. І так, ви можете написати своє, але дуже мало людей хотіли б.
Девід Макінтош

6
Коментар для новачків: Тепер можна: serverfault.com/a/441724/422003
imposeren

використання двох проходів, перший з "--dry-run" (загальний очікуваний кількість файлів) і другий з детальним результатом, записаним у файл (і підрахунок рядків завершений або з використанням труби до "pv"), дозволяє легко оцінити завершення. Мінусом є сканування великих вкладених каталогів двічі. Залежно від потреби, тобто забезпечення безпечної міграції даних клієнтів, це може бути прийнятним.
ives

377

Зараз існує офіційний спосіб зробити це в rsync (протокол версії 3.1.0, версія 31, випробуваний за допомогою Ubuntu Trusty 14.04).

#> ./rsync -a --info=progress2 /usr .
    305,002,533  80%   65.69MB/s    0:00:01  xfr#1653, ir-chk=1593/3594)

Я спробував зі своєю /usrпапкою, тому що хотів цю функцію для перенесення цілих файлових систем і, /usrздавалося, є гарним представником вибірки.

--info=progress2Дає хороший загальний відсоток, навіть якщо це тільки часткове значення. Насправді в моїй /usrпапці більше 6 концертів:

#> du -sh /usr
6,6G    /usr/

і rsyncзнадобилося багато часу, щоб сканувати все це. Так що майже весь час відсоток, який я бачив, був приблизно на 90% завершений, але, тим не менш, приємно бачити, що щось копіюється :)

Список літератури:


19
Зауважимо, що це випало в 3.1.0. Важливо також зазначити, що це не обов'язково точно в часовій перспективі. Це по суті показує кількість даних, які були перевірені на віддаленому кінці. І швидкість - це швидкість, з якою дані вивчаються правильними на віддаленому кінці (чи це вже було таким чином, чи були передані нові дані та зробили їх правильними). Тож хоч і дуже корисно потрібно розуміти застереження.
Кевін Кокс

15
Щоб використовувати це на OSX з домашньою мовою, "заварити крана домашньої пилки / дупи; варити встановити rsync"
Метт Перевізник

18
Варто зазначити, що --info=progress2це не працює-v
sanmai

42
Додайте --no-i-rперемикач, щоб rsyncвін не сканував поступово, але повністю, перш ніж копіювати, і знає + відображає, скільки роботи залишилось.
Олексій

16
Зверніть увагу, що ви можете використовувати --human-readable(або -h), щоб побачити загальний розмір у МБ / Гб .., що виконується.
Nux

45

Можна з 'pv' ( apt-get install pvз Debian і ubuntu). Я рекомендую стежити за кількістю переданих файлів, оскільки кількість переданих даних не співвідноситься з розміром файлів, а на дельті між джерелом та пунктом призначення. І підрахунок файлів буде рахувати однаковий прогрес для однієї великої дельти та іншого для маленької дельти. Що означає, що в будь-якому випадку оцінка ЗНО може бути далеко за горами. ETA на основі розміру працює лише в тому випадку, якщо місце призначення порожнє, в цьому випадку delta == розмір джерела.

Загальна ідея полягає в тому, щоб випустити один рядок на файл, 'переданий' з rsync, і порахувати ці рядки з 'pv':

rsync -ai / джерело віддалений: / dest | pv -les [кількість файлів]> / dev / null

Я , як правило , для резервного копіювання цілих файлових систем (з кількох причин), в цьому випадку ви можете використовувати набагато дешевше , dfщоб отримати кількість файлів (а не duчи findяким буде проходити ієрархії джерела в інший раз , після того, як Rsync зробив це). З'являється опція -x, щоб переконатися, що rsync залишається в одній і тій же файловій системі-джерелі (і не слідкувати за іншими внутрішніми кріпленнями):

rsync -aix / джерело віддалений: / dest | pv -les $ (df -i / source | perl -ane 'print $ F [2], якщо $ F [5] = ~ m: ^ /:')> / dev / null

Якщо ви хочете загалом рахувати файли в / джерелі, використовуйте find /source|wc -l(знову застереження: може бути повільним і важким для вводу / виводу).


1
Як вказано zerodeuz, використовуйте "df" лише тоді, коли ви rsyncing цілий розділ, оскільки df -i /sourceотримує кількість входів (файлів) з усіх розділів, в яких / джерело знаходиться. В іншому випадку використовуйте 'find' для підрахунку файлів всередині каталогу всередині виразу "$ ()".
lepe

1
Альтернативу duабо find, скажімо, ви закінчуєте неповну копію або робите оновлення на місці з видаленнями - це використовувати rsync -ai --dry-runдля отримання того самого списку файлів, до якого буде проходити основний запускpv
Ізката

32

Далі стосується rsync версії 3.0.0 та вище. Описані нижче варіанти були представлені у цьому випуску 1 березня 2008 року.

Поряд з --info = progress2 ви також можете використовувати --no-inc-recursive option (або його коротший --no-ir псевдонім) для відключення поступової рекурсії.

Це створить весь список файлів на початку, а не поступово виявляючи більше файлів у міру продовження передачі. Оскільки він буде знати всі файли перед запуском, він дасть кращий звіт про загальний прогрес. Це стосується кількості файлів - він не повідомляє про будь-який прогрес на основі розмірів файлів.

Це передбачає компроміс. Створення всього списку файлів достроково дорожче пам'яті, і це може значно затримати початок фактичної передачі. Як можна було б очікувати, чим більше файлів там, тим довше буде затримка і тим більше пам’яті буде потрібно.

Далі йде посібник з rsync (джерело - http://rsync.samba.org/ftp/rsync/rsync.html ):

-r, --рекурсивний

Це говорить rsync копіювати каталоги рекурсивно. Дивіться також - dirs (-d). Починаючи з rsync 3.0.0, використовуваний рекурсивний алгоритм - це покрокове сканування, яке використовує набагато менше пам'яті, ніж раніше, і розпочинає передачу після того, як сканування перших кількох каталогів завершено. Це покрокове сканування впливає лише на наш алгоритм рекурсії і не змінює нерекурсивний перехід. Це також можливо лише тоді, коли обидва кінці передачі мають принаймні версію 3.0.0.

Деякі параметри вимагають, щоб rsync знав повний список файлів, тому ці параметри вимикають режим додаткової рекурсії. До них відносяться: --delete-before, --delete-after, --prune-empty-dirs та --delay-updates. Через це режим видалення за замовчуванням, коли ви вказуєте --delete зараз --delete-під час, коли обидва кінці з'єднання мають принаймні 3.0.0 (використовуйте --del або --delete-під час запиту цього покращеного режиму видалення явно). Дивіться також варіант --delete-delay, який є кращим вибором, ніж використання --delete-after.

Поступова рекурсія може бути відключена за допомогою опції --no-inc-recursive або її коротшого --no-ir псевдоніму.

Дивіться також https://rsync.samba.org щодо конкретних відмінностей версій (прокрутіть униз та ознайомтесь із посиланнями Release News).


3
Дякую за це, інші відповіді призводять до% віку, який продовжує йти вгору і вниз!
artfulrobot

28

Для довгих трансферів я задоволений бігом du -sз обох сторін. Навіть watch -n1 du -sякщо я відчуваю себе справді тривожно.

watchdu -sперіодично виконує команду ( тут) (кожні 1 секунду тут) і показує вихідний повноекранний екран.


4
Дякуємо за приклад watchкоманди!
Cam

2
//, Розумний! Як повідомляє linfo.org: "Команда du (тобто використання диска) повідомляє розміри дерев каталогів, включаючи весь їх вміст та розміри окремих файлів. Це робить корисним для відстеження пробілів, тобто каталогів та файлів які споживають велику або надмірну кількість місця на жорсткому диску (HDD) або іншому носії інформації. "
Натан Басанес

10
Я не знаю, які довгі трансфери ви робите, де дю життєздатний. du повільно, як пекло, коли результат буде в TB та M файлах.
Ніхто

2
Для моїх "довгих передач" на роботу потрібно близько години, під час якої rsync працює набагато повільніше, оскільки вони борються за доступ до диска.
Абхі Беккерт

12

В основному ні. Ви можете показувати хід файлу лише за допомогою прапора --progress, але це стосується цього.

Я здогадуюсь, що ви можете написати обгортку навколо нього або скористатися будь-яким із патчів, які ви вже знайшли, але ви повинні запитати себе, чи дійсно це варто, чи справді вам потрібен загальний прогрес для rsync?


Ось скрипт для обгортки, який показує загальний прогрес і прогрес файлів як хорошу панель прогресу: gist.github.com/JohannesBuchner/4d61eb5a42aeaad6ce90
j13r

1
Ви можете змінити спосіб --progressроботи --info=progress2, це покаже вам глобальний прогрес. Вам потрібно буде відключити інкрементальний рекурсивний алгоритм, щоб він був корисним, тому--info=progress2 --no-inc-recursive
мат

@ j13r Ви також можете поділитися цією суттю як відповідь! його чудовий варіант!
skywinder

8

Я використав відповідь zerodeux і написав власний маленький сценарій bash:

#!/bin/bash

RSYNC="ionice -c3 rsync"
# don't use --progress
RSYNC_ARGS="-vrltD --delete --stats --human-readable"
SOURCES="/dir1 /dir2 /file3"
TARGET="storage::storage"

echo "Executing dry-run to see how many files must be transferred..."
TODO=$(${RSYNC} --dry-run ${RSYNC_ARGS} ${SOURCES} ${TARGET}|grep "^Number of files transferred"|awk '{print $5}')

${RSYNC} ${RSYNC_ARGS} ${SOURCES} ${TARGET} | pv -l -e -p -s "$TODO"

7

Я також шукав, як показати загальний прогрес за допомогою rsync, і знайшов корисного відповіді з цієї публікації: https://stackoverflow.com/questions/7157973/monitoring-rsync-progress

В основному, ви можете використовувати --info = progress2 у розробленій версії rsync 3.1.0 . Ось що сказав доктор :

Також є варіант --info = progress2, який виводить статистику на основі всієї передачі, а не окремих файлів. Використовуйте цей прапор, не виводячи імені файлу (наприклад, уникайте -v або вказуйте --info = name0, якщо ви хочете побачити, як відбувається передача, не прокручуючи екран з великою кількістю імен. (Не потрібно вказувати - варіант прогресу для використання --info = прогрес2.)


1
--info=name0є золото 🌈👑
ipatch

6

Я використав відповідь zerodeux і написав власний маленький сценарій BASH:

#!/bin/bash

RSYNC="ionice -c3 rsync"
# don't use --progress
RSYNC_ARGS="-vrltD --delete --stats --human-readable"
SOURCES="/dir1 /dir2 /file3"
TARGET="storage::storage"

#echo "Executing dry-run to see how many files must be transferred..."
TODO=$(find ${SOURCES} | wc -l)

${RSYNC} ${RSYNC_ARGS} ${SOURCES} ${TARGET} | pv -l -e -p -s "$TODO"

Я змінив TODO на пробіг

TODO=$(find ${SOURCES} | wc -l)

Знаходить кількість файлів дуже швидко!


знайти роботи , так набагато краще , ніж Rsync --dry перспективі!
hopeseekr

4
findпрацює лише якщо ви rsyncлокально. rsync --dry-runпрацює і з віддаленими джерелами ...
voretaq7

6

Якщо у вас немає останньої версії rsync (наприклад, OS X має 2.6.9) і не можете її використовувати --info=progress2, ось ще одна альтернатива, щоб зберегти себе зі сторінок прокручування тексту під час виконання:

rsync -aPh <source> <destination> | xargs -L1 printf "\33[2K\rTransferring: %s"

Це дозволить надрукувати в одному рядку ім'я останнього файлу, що передається:

Transferring: the-latest.file


4

Використовуйте

lsof -ad3-999 -c rsync

Щоб побачити, які файли rsync наразі відкриті (покаже розмір файлів), rsync копіює в прихований файл локально


Я хотів опублікувати це, for i in $(pgrep 'rsync'); do ls -l /proc/$i/fd; doneале ваше рішення простіше.
Алекс Габі

4

Я б прокоментував це, але не маю достатньої репутації. У відповідь на коментар naught101 до обраної відповіді, параметр --progress показує, скільки файлів передано із загальної суми для передачі. Я не усвідомлював цього, поки не подивився на цю посаду і уважніше подивився на результати.

Статистика "для перевірки" показує, скільки файлів залишилося від загальної кількості. Це найбільше користь, коли rsync'ing до нового пункту призначення, тому ви знаєте, що всі файли будуть повністю скопійовані.

На чоловіковій сторінці:

When [each] file transfer  finishes,  rsync  replaces  the
progress line with a summary line that looks like this:

    1238099 100%  146.38kB/s    0:00:08  (xfer#5, to-check=169/396)

In this example, the file was  1238099  bytes  long  in
total,  the average rate of transfer for the whole file
was 146.38 kilobytes per second over the 8 seconds that
it took to complete, it was the 5th transfer of a regu-
lar file during the current rsync  session,  and  there
are 169 more files for the receiver to check (to see if
they are up-to-date or not) remaining out  of  the  396
total files in the file-list.

3

Зауважте тут застереження, що навіть --info = progress2 не зовсім надійний, оскільки цей відсоток залежить від кількості файлів, про які rsync знає на момент відображення прогресу. Це не обов'язково загальна кількість файлів, які потрібно синхронізувати (наприклад, якщо вони виявляють велику кількість великих файлів у глибоко вкладеному каталозі). Одним із способів гарантувати, що --info = progress2 не «відскочить назад» у індикації прогресу, буде змусити rsync сканувати всі каталоги рекурсивно перед запуском синхронізації (замість поведінки за замовчуванням робити поступово рекурсивне сканування), надаючи також опцію --no-inc-recursive. Однак зауважте, що ця опція також збільшить використання пам'яті rsync та час роботи.


Поступова рекурсія може бути відключена за допомогою --no-inc-recursiveопції або її коротшого --no-i-rпсевдоніма. (Див.
Іншу

2

Я використовую скрипт, який витягує інформацію з / proc // io для процесу rsync (або будь-якого іншого процесу з цього питання) і, знаючи загальну суму, яку потрібно передати, обчислює прогрес.

#!/bin/bash

usage()
{
   echo "usage: $0 PID BASEMSIZE [DELAY[s|m|h]]"
}

if [ $# -lt 2 ]; then
   usage
   exit 1
elif [ $# -eq 3 ]; then
   DELAY=$3
else
   DELAY=5s
fi

PID=$1
PBASE=`echo "scale=2; $2/1024"|bc`

R_PID=$PID
W_PID=$PID

R_SPEED_MAX=0
W_SPEED_MAX=0
R_SPEED_CUM=0
W_SPEED_CUM=0
R_SPEED_AVG=0
W_SPEED_AVG=0

ETA=0
ETA_H=0
ETA_M=0
ETA_S=0

while [ ! -r /proc/$PID/io ];
do
   clear
   echo "Waiting for process with PID=$PID to appear!"
   sleep 1
done

B_READ_PREV=`cat /proc/$R_PID/io|awk '$1 ~ /^read_bytes/ {print $2}'`
B_WRITE_PREV=`cat /proc/$W_PID/io|awk '$1 ~ /^write_bytes/ {print $2}'`
T1=`date +%s.%N`

count=0
while true
do
   [ ! -r /proc/$PID/io ] && break
   clear
   B_READ=`cat /proc/$R_PID/io|awk '$1 ~ /^read_bytes/ {print $2}'`
   B_WRITE=`cat /proc/$W_PID/io|awk '$1 ~ /^write_bytes/ {print $2}'`
   BL_READ=`echo "scale=2; ($B_READ-$B_READ_PREV)/1048576"|bc`
   BL_WRITE=`echo "scale=2; ($B_WRITE-$B_WRITE_PREV)/1048576"|bc`
   GB_DONE=`echo "scale=2; $B_WRITE/1073741824"|bc`
   PDONE=`echo "scale=2; $GB_DONE*100/$PBASE"|bc`
   T2=`date +%s.%N`
   TLOOP=`echo "scale=2; ($T2-$T1)/1"|bc`
   R_SPEED=`echo "scale=2; $BL_READ/$TLOOP"|bc`
   W_SPEED=`echo "scale=2; $BL_WRITE/$TLOOP"|bc`

   if [ $count -ge 1 ]; then
      R_SPEED_CUM=`echo "scale=2; $R_SPEED_CUM+$R_SPEED"|bc`
      R_SPEED_AVG=`echo "scale=2; $R_SPEED_CUM/$count"|bc`
      W_SPEED_CUM=`echo "scale=2; $W_SPEED_CUM+$W_SPEED"|bc`
      W_SPEED_AVG=`echo "scale=2; $W_SPEED_CUM/$count"|bc`
      [ `echo "scale=2; $W_SPEED > $W_SPEED_MAX"|bc` -eq 1 ] && W_SPEED_MAX=$W_SPEED
      [ `echo "scale=2; $R_SPEED > $R_SPEED_MAX"|bc` -eq 1 ] && R_SPEED_MAX=$R_SPEED
   fi

   if [ `echo "scale=2; $W_SPEED_AVG > 0"|bc` -eq 1 ]; then
      ETA=`echo "scale=2; (($PBASE-$GB_DONE)*1024)/$W_SPEED_AVG"|bc`
      ETA_H=`echo "scale=0; $ETA/3600"|bc`
      ETA_M=`echo "scale=0; ($ETA%3600)/60"|bc`
      ETA_S=`echo "scale=0; ($ETA%3600)%60"|bc`
   fi

   echo "Monitoring PID: $PID"
   echo
   echo "Read:       $BL_READ MiB in $TLOOP s"
   echo "Write:      $BL_WRITE MiB in $TLOOP s"
   echo
   echo "Read Rate:  $R_SPEED MiB/s ( Avg: $R_SPEED_AVG, Max: $R_SPEED_MAX )"
   echo "Write Rate: $W_SPEED MiB/s ( Avg: $W_SPEED_AVG, Max: $W_SPEED_MAX )"
   echo
   echo "Done: $GB_DONE GiB / $PBASE GiB ($PDONE %)"
   [ `echo "scale=2; $ETA > 0"|bc` -eq 1 ] && printf "ETA: %02d:%02d:%05.2f (%.2fs)\n" $ETA_H $ETA_M $ETA_S $ETA
   echo "Elapsed: `ps -p $PID -o etime=`"

   T1=`date +%s.%N`
   sleep $DELAY
   B_READ_PREV=$B_READ
   B_WRITE_PREV=$B_WRITE
   ((count++))
done
echo "----- Finished -------------------------------------------------------------------"

2

Якщо ваша версія rsyncне приймає цю --info=progress2опцію, ви можете використовувати tqdm:

Щоб встановити:

pip install tqdm

Використовувати:

$ rsync -av / source / dest | tqdm --unit_scale | wc -l
10.0Mit [00:02, 3.58Mit / s]

1

Можливо, ви можете комбінувати pvз rsync. Особливо параметр --sizeможе бути корисним. Поглянувши на документи, щось подібне pv --size $(du -sb . | awk '{print $1}') | rsync -av . host:/your/pathповинно працювати.

Тут ви знайдете документи та програмне забезпечення.

Я не пробував цього самостійно.


1

Можливо, тут буде трохи пізно, але майбутні шукачі відповідей можуть отримати користь.

Це теж мене клопіло, тому я подумав, що зійду і забрудниться, і напишу свій перший сценарій. Зенність пакета повинна бути встановлена ​​(sudo apt-get install zenity), але я впевнений, що він, мабуть, вже буде. Крім того, я використовую wmctrl (керування вікнами управління), щоб змінити назву діалогового вікна прогресу після його завершення, його легко встановити, але якщо ви цього не зробите, це не змінить значення. Мені просто подобається бачити, коли це робиться на моїй панелі.

Сценарій, в основному, запитує джерело та каталог призначення, обчислює відсоток пункту призначення над розміром джерела за допомогою du та відображає панель прогресу.

Примітка. Це працює лише для повного синхронізації каталогу / файлів (я зазвичай використовую його для створення резервного копіювання кеш-файлу apt), тому немає --exclude = / file / in / Source-directory option. Також не буде працювати, якщо в каталозі призначення немає файлів / каталогів, а не у вихідному каталозі. Я не впевнений, чи працює він для віддалених джерел / напрямків, оскільки ніколи в мене не було потреби в ньому або в ресурсах для тестування.

PS. Цей сценарій може бути дуже погано написаним або дуже неефективним, (скрипт-незайманий тут), але принаймні він служить його цілі, і, звичайно, ви можете редагувати та вдосконалювати його відповідно до ваших потреб. PSS. Крім того, не вдалося отримати кнопку "Скасувати", щоб убити rsync, тому я просто її видалив.

    #!/bin/bash
set -e;

WELC="Running RsyncP as $USER";

function echo_progress()
{
    while (($TRANSFER_SIZE > 1000));    
    do  
        DEST_SIZE=$(du -s $DEST_FOLDER | cut -d / -f 1); 
        ((TRANSFER_SIZE=$SOURCE_SIZE-DEST_SIZE)); 
        PROGRESS_PERC=$((DEST_SIZE*100/SOURCE_SIZE));
        echo $PROGRESS_PERC;
        sleep 0.1s;
    done;
    echo 100;
    zenity --info --width=250 --title=RsyncP --text="File syncing complete!";
}

function get_input()
{
    dirs=$(zenity --forms --width=500 --title="RsyncP" --text="Enter source And destination directories" --add-entry="Source: " --add-entry="Destination: " --separator=" ");

    SOURCE_FOLDER=$(echo $dirs | cut -d' ' -f 1);
    DEST_FOLDER=$(echo $dirs | cut -d' ' -f 2);

    OPTIONS=-$(zenity --list --title="RsyncP Options" --text="Select rsync options" --separator='' --height=470 --width=470 --checklist --column "activate" --column "Option" --column "Description" FALSE v "Verbose (Terminal only)" FALSE q "Quiet, supress non-error messages (Terminal only)" FALSE P "Progress (Terminal only)" FALSE a "Archive (lrpog)" TRUE r "Recurse into directories" FALSE p "Preserve permissions" FALSE o "Preserve owner" FALSE g "Preserve group" FALSE l "Copy symlinks as symlinks");

    zenity --question --no-wrap --title="RsyncP" --width=500 --text="rsync  $OPTIONS $SOURCE_FOLDER $DEST_FOLDER\nDo you want to continue?";

    SOURCE_SIZE=$(du -s $SOURCE_FOLDER | cut -d / -f 1); 
    DEST_SIZE=$(du -s $DEST_FOLDER | cut -d / -f 1); 
    PROGRESS_PERC=$((DEST_SIZE*100/SOURCE_SIZE)); 
    TRANSFER_SIZE=1001;
}

if [ "$(id -u)" != "0" ]; then
    zenity --question --title=RsyncP --text="$WELC, Continue?";
    get_input;
    rsync  $OPTIONS $SOURCE_FOLDER $DEST_FOLDER & 
    echo_progress | zenity --progress --title=RsyncP --no-cancel --auto-close --text="Copying from \n$SOURCE_FOLDER to \n$DEST_FOLDER" ;

else            
    zenity --question --title=RsyncP --text="$WELC, Continue?";
    get_input; 
    sudo rsync  $OPTIONS $SOURCE_FOLDER $DEST_FOLDER & 
    echo_progress | zenity --progress --title=RsyncP --no-cancel --auto-close --text="Copying from \n$SOURCE_FOLDER to \n$DEST_FOLDER" ;
fi

Погляньте на YAD. Це виделка (переписати?) Zenity і схожа на Zenity ... але на стероїди. Мої сценарії використовують його для всього, що повертається до Zenity, оскільки у мене є машина з Zenity. Параметри команд досить схожі на це, але ви просто втратите багато смаку за допомогою Zenity.
DocSalvager
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.