Как переместить несколько файлов с rsync при показе прогресса?

Я могу переместить файлы с этой командой:

mv -t /mnt/hdd /home/me/movies/movie1.avi /home/me/movies/movie2.avi

Проблема, что она не показывает прогресса вообще, таким образом, я не знаю, составляет ли операция сделанный 1% или сделанных 80%.

Я знаю, что rsync может показать прогресс.

Таким образом, как был бы, rsync изменение той команды выше похоже, также показывая ход операции?

Спасибо

4
задан 25 May 2018 в 12:54

3 ответа

Вы можете использовать Coreutils Progress Viewer progress Install progress . После установки 1 просто отправьте процесс mv в фоновый режим и предоставьте progress его PID:

mv -t /path/to/file1 /path/to/file2 & progress -mp $!

Используйте progress -w, чтобы отобразить список всех запуск процессов coreutils с их прогрессом. Смотрите man progress и его страницу github для большего количества опций и примеров.

Далее читаем с множество различных подходов:
Как я могу перемещать файлы и просматривать прогресс (например, с помощью индикатора выполнения)?

1: Если вы используете Ubuntu 14.04, вам, к сожалению, придется собирать программное обеспечение самостоятельно, см. Приведенную выше связанную страницу github.

4
ответ дан 1 December 2019 в 09:02

Фон

  • mv только переименовывает ссылку на inode, при перемещении файла/каталога в той же файловой системе [раздел]
  • mv копирует файл/каталог и после того удаления исходного между файловыми системами [разделы].

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

От man rsync

   -P     The -P option is equivalent to --partial --progress.   Its  pur‐
          pose  is to make it much easier to specify these two options for
          a long transfer that may be interrupted.

          There is also a --info=progress2 option that outputs  statistics
          based  on the whole transfer, rather than individual files.  Use
          this flag without outputting a filename (e.g. avoid -v or  spec‐
          ify  --info=name0)  if you want to see how the transfer is doing
          without scrolling the screen with a lot of  names.   (You  don’t
          need   to   specify  the  --progress  option  in  order  to  use
          --info=progress2.)

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

Пример

Копия с rsync

$ ls -l
totalt 2064196
-rw------- 1 sudodus sudodus 1921843200 apr 26 18:44 orig.iso
-rw-rw-r-- 1 sudodus sudodus  191889408 maj 23  2016 test.iso
$ rsync --info=progress2 -Ha *.iso /tmp
  2,113,732,608 100%  171.10MB/s    0:00:11 (xfr#2, to-chk=0/2)

Проверьте (если Вы желаете),

$ rsync --info=progress2 -Ha *.iso /tmp
          0   0%    0.00kB/s    0:00:00 (xfr#0, to-chk=0/2)

Удалите файлы и каталоги с

rm -r *.iso  # remove the same as the source in the rsync command line
4
ответ дан 1 December 2019 в 09:02

Это было бы похоже:

rsync -aP /home/me/movies/movie1.avi /home/me/movies/movie2.avi /mnt/hdd

Пример:

~ rsync -aP /usr/bin/{free,man} /tmp
sending incremental file list
free
         18,808 100%    0.00kB/s    0:00:00 (xfr#1, to-chk=1/2)
man
        107,008 100%  102.05MB/s    0:00:00 (xfr#2, to-chk=0/2)
1
ответ дан 1 December 2019 в 09:02

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

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