Оценочное время или работа, оставленная закончиться для rsync?

Я просто попробовал эту точную вещь, и она работала на меня.

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

ssh-copy-id root@skinner

Моя установка следующие:

$HOME/.ssh/config:

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
IdentityFile ~/.ssh/id_dsa

Host skinner mulder byers
    User root

содержание $HOME/.ssh/:

$ ls -dl ~/.ssh
drwx------ 2 saml saml 4096 May 23 03:18 /home/saml/.ssh

$ ls -l ~/.ssh
total 16
-rw------- 1 saml saml 204 May 23 03:17 config
-rw------- 1 saml saml 736 Jan 10  2011 id_dsa
-rw-r--r-- 1 saml saml 612 Jan 10  2011 id_dsa.pub
-rw-r--r-- 1 saml saml 401 May 23 03:17 known_hosts

Теперь ssh для хостинга кожевника:

   ss of initial ssh

содержание $HOME/.ssh/:

$ ls -l ~/.ssh
total 16
-rw------- 1 saml saml 204 May 23 03:17 config
-rw------- 1 saml saml 736 Jan 10  2011 id_dsa
-rw-r--r-- 1 saml saml 612 Jan 10  2011 id_dsa.pub
-rw-r--r-- 1 saml saml 401 May 23 03:17 known_hosts
srw------- 1 saml saml   0 May 23 03:25 master-root@skinner:22

отправить somefile.txt к удаленному хосту:

$ rsync -arv -e ssh somefile.txt skinner:~
sending incremental file list
somefile.txt

sent 106 bytes  received 31 bytes  91.33 bytes/sec
total size is 13  speedup is 0.09

вытянуть somefile.txt от удаленного хоста:

$ rsync -arv -e ssh skinner:~/somefile.txt somefile-remote.txt
receiving incremental file list
somefile.txt

sent 30 bytes  received 100 bytes  260.00 bytes/sec
total size is 13  speedup is 0.10

результаты вышеупомянутого rsync команды:

$ ls -l
total 8
-rw-rw-r-- 1 saml saml 13 May 23 03:19 somefile-remote.txt
-rw-rw-r-- 1 saml saml 13 May 23 03:19 somefile.txt

отправить somefile.txt к удаленному хосту (-v):

$ rsync -arv -e 'ssh -v' somefile.txt skinner:~
OpenSSH_5.5p1, OpenSSL 1.0.0e-fips 6 Sep 2011
debug1: Reading configuration data /home/saml/.ssh/config
debug1: Applying options for *
debug1: Applying options for skinner
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug1: mux_client_request_session: master session id: 5
sending incremental file list
somefile.txt
debug1: mux_client_request_session: master session id: 5

sent 106 bytes  received 31 bytes  274.00 bytes/sec
total size is 13  speedup is 0.09

отправить somefile.txt к удаленному хосту (-vv):

$ rsync -arv -e 'ssh -vv' somefile.txt skinner:~
OpenSSH_5.5p1, OpenSSL 1.0.0e-fips 6 Sep 2011
debug1: Reading configuration data /home/saml/.ssh/config
debug1: Applying options for *
debug1: Applying options for skinner
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug1: mux_client_request_session: master session id: 5
sending incremental file list
somefile.txt
debug1: mux_client_request_session: master session id: 5
debug2: Received exit status from master 0

sent 106 bytes  received 31 bytes  274.00 bytes/sec
total size is 13  speedup is 0.09
5
13.04.2017, 15:36
4 ответа

Вы можете использовать $ time rsync * /temp Когда вы хотите узнать приблизительное время, вы должны проверить общий размер файлов перед выполнением rsync. Быстрота или медленность rsync зависит от вашей сети, когда вы выполняете rsync по сети. Вы можете использовать $ ls -ltr, чтобы проверить, в какие каталоги была сделана резервная копия.

0
27.01.2020, 20:41

Вы можете заставить rsync печатать одну строку для каждого файла, используя -i , а затем использовать pv -l , чтобы сообщать о прогрессе на основе количества строк (фактически файл считать).

Вам понадобится pv (просмотрщик каналов): http://www.ivarch.com/programs/pv.shtml

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile

Используйте следующую команду, чтобы получить количество файлов:

find sourcedir | wc -l

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


Чтобы увидеть прогресс при обновлении (или сравнении) существующей копии:

(дополнительная информация: Сравнить каталоги, но не содержимое файлов )

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount > logfile

Второй -i заставляет rsync печатать одну строку для каждого файла, даже если они равны.

Добавьте -n для сравнения (фактически ничего не копируйте и не удаляйте).

Оставить - при необходимости удалить .

Эта команда выводит на экран в реальном времени файлы, которые отличаются друг от друга:

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount | 
    tee logfile | grep -v "^\."

Приведенные выше команды работают лучше всего, когда имеется много небольших файлов. Если у вас мало огромных файлов, то некоторые из встроенных отчетов rsync могут оказаться более полезными. См. Справочную страницу rsync для -P или - progress или - info = progress2 . Но будьте осторожны: эти параметры не будут работать с pv . Или, по крайней мере, я не понял, как это сделать.

Вот грубый обходной путь, чтобы увидеть прогресс в зависимости от размера:

  • обратите внимание на свободное пространство целевого раздела перед копированием с помощью df -h .
  • обратите внимание на размер исходного каталога, используя du -sh .
  • используйте watch df -h и наблюдайте за увеличением размера.

Очевидно, это работает только при копировании, а не при обновлении или сравнении.

3
27.01.2020, 20:41
rsync -arv /source desc --info=progress2

дает расчетное время до завершения работы rsync

2,863,290,944 64%  5.71MB/s  0:04:12

0 :04 :12 — оставшееся время

Протестировано на CentOS 7/8

3
04.05.2020, 07:34

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

На целевом сервере вы запускаете его как:

# rsync-monitor.sh <folder> <expected final size of folder> <seconds between measuring start/stop size>
rsync-monitor /folder 516835 300

Это отслеживало бы /folder, ожидая, что он достигнет 516835 МБ, и каждые 300 секунд выводило бы что-то вроде:

[Sun 21 Mar 2021 03:53:25 PM UTC] Starting              | Sleeping 300s...
[Sun 21 Mar 2021 03:58:25 PM UTC] 11900MB of 516835MB   | ~13MB/s       | 10h 15m 0s remaining  | Sleeping 300s...
[Sun 21 Mar 2021 04:03:27 PM UTC] 16497MB of 516835MB   | ~15MB/s       | 9h 0m 0s remaining    | Sleeping 300s...
[Sun 21 Mar 2021 04:08:29 PM UTC] 20974MB of 516835MB   | ~14MB/s       | 9h 10m 0s remaining   | Sleeping 300s...
[Sun 21 Mar 2021 04:13:31 PM UTC] 25600MB of 516835MB   | ~15MB/s       | 8h 50m 0s remaining   | Sleeping 300s...

Вот скрипт:

#!/usr/bin/env bash

# The folder
FOLDER=$1

# The expected size of folder
MEGS=$2

# How many seconds to refresh
SLEEP=$3

SECONDSLEFT=1
START=$(du -sm $FOLDER |awk '{print $1}')
echo -e "[$(date)] Starting\t\t| Sleeping ${SLEEP}s..."
while (( $SECONDSLEFT > 0 )); do
        sleep $SLEEP
        END=$(du -sm $FOLDER |awk '{print $1}')
        DOWNLOADED=$(( $END-$START ))
        MEGSPERSECOND=$(( $DOWNLOADED/$SLEEP ))
        SECONDSLEFT=$(( ($MEGS-$END)/$DOWNLOADED*$SLEEP ))
        HOURS=$(( $SECONDSLEFT/60/60 ))
        MINUTES=$(( ($SECONDSLEFT-$HOURS*60*60)/60 ))
        SECONDS=$(( $SECONDSLEFT-$HOURS*60*60-$MINUTES*60 ))
        echo -e "[$(date)] ${END}MB of ${MEGS}MB\t| ~${MEGSPERSECOND}MB/s\t| ${HOURS}h ${MINUTES}m ${SECONDS}s remaining\t| Sleeping ${SLEEP}s..."
        START=$END
done
echo -e "[$(date)] Finished"
0
21.03.2021, 13:28

Теги

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