информация о прогрессе через объем плазмы для копии каталога

Логические тома легче создать на лету, изменить размер, удалить.
"К LVM или не" вопрос всегда имеет тот же ответ, он зависит :)
Это имеет смысл при необходимости в гибкости в диске (дисках), уровне раздела (разделов).
Это не имеет большого смысла, если Вы не нуждаетесь в гибкости, обеспеченной LVM, или не хотите использовать в своих интересах другие функции LVM

13
11.12.2016, 13:44
7 ответов

Использовать rsync --progress [SRC] [DST]

Действительно проверьте man rsync страница, потому что это имеет много очень полезных опций. -a поскольку архив является хорошим началом, но он зависит от Ваших строгих требований.

Копирование через канал излишне замедлит процесс копии, особенно если это будут базирующиеся файлы.

21
27.01.2020, 19:52
  • 1
    Почему был бы, копируя через канал, замедляют процесс? Буферизация, обеспеченная каналами и многозадачностью, связанной с каналами, вероятно, поможет вопросам, которые я сказал бы. (и rsync является мультипроцессами и использует каналы внутренне IIRC). Что такое процесс копии, который не основан на файле? –  Stéphane Chazelas 18.11.2012, 21:03
  • 2
    Bash удобен, но не быстро. Особенно при передаче по каналу одной команды к другому. –  jippie 18.11.2012, 21:25
  • 3
    @StephaneChazelas: Поскольку буфер канала составляет только 8 КБ. Программа как rsync могла бы хотеть использовать намного более крупный внутренний буфер. –  Zan Lynx 18.11.2012, 23:31

Вы могли использовать tar или pax или cpio:

mkdir -p dst &&
  (cd src && tar cf - .) | pv -trb | (cd dst && tar xpf -)
10
27.01.2020, 19:52
  • 1
    Кроме того, можно добавить a v к tar команда для наблюдения имен файлов. –  peterph 21.01.2014, 17:17
  • 2
    Таким образом, это архивирует исходную папку прежде, чем сделать копию, правильно? Моя папка составляет 5 ТБ в размере, таким образом, я не уверен - ли это лучший способ сделать это? Мне действительно нравится использовать объем плазмы, поскольку он показывает состояние действительно значительного прогресса, совет? –  Tak 08.03.2018, 15:12
  • 3
    @Tak, нет это ничего не архивирует, поскольку нет никакого сжатия. tar cf - производит поток, содержащий файлы и их метаданные, которые питаются через канал к объему плазмы, который подает их нетронутый к другому tar при печати признака прогресса и другого tar извлекает данные в том потоке. Все три команды, выполненные одновременно и, обрабатывают данные, как это прибывает, нет ничего сохраненного на диске, нет ничего сохраненного в памяти кроме буферов канала и команд внутренних буферов, который просто составляет несколько килобайтов. большое спасибо –  Stéphane Chazelas 08.03.2018, 15:31
  • 4
    @StéphaneChazelas спасибо за комментарий. Я попробовал его, и это работает, единственная вещь состоит в том, что индикатор выполнения не показывает ожидаемый процент, это продолжает идти слева направо. Какая-либо идея, почему? Я использовал объем плазмы с этим параметры - Петра, которая обычно показывает индикатор выполнения, где панель продолжала заполняться, пока это не заканчивается. У меня есть upvoted Ваш ответ также. –  Tak 08.03.2018, 16:59
  • 5
    @Tak, pv не имеет никакого способа знать, сколько там должны передать данные. Если у Вас есть оценка той суммы, можно передать ее ей с -s опция (GNU du -sb src дал бы Вам хорошее приближение, если файлы являются достаточно большими) –  Stéphane Chazelas 08.03.2018, 17:06
find source-dir -print0 | xargs -0 -I % pv % > dest-dir/%
-1
27.01.2020, 19:52
  • 1
    Объясните тур solutipon, Вы захотите, чтобы OP смог к checo он (и учиться), –  vonbrand 27.01.2014, 03:41

Tar.

tar -cf - /var/log/ | pv | tar -C . -x

Пример:

# tar -cf - /var/log/ | pv | tar -C . -x
tar: Removing leading `/' from member names
58MB 0:00:05 [ 2.2MB/s] [                   <=> 
2
27.01.2020, 19:52

Вы можете сделать DU -B / Directory / на обоих источниках, так и на месте, когда выполняется обычная команда копирования и сравнивает два. Это так же эффективно и не замедляет процесс копирования, толкая его через трубу.

0
27.01.2020, 19:52

Вот несколько команд для копирования каталогов с информацией о ходе выполнения.


Если есть много маленьких файлов:

cp -av sourcedir targetdir | pv -l -s filecount > logfile

Это сообщит о прогрессе, основанном на количестве копируемых файлов.

Вы можете перенаправить на /dev/null, если вам не нужен logfile.

Используйте следующую команду для получения filecount:

find sourcedir | wc -l

Если есть несколько огромных файлов:

tar c sourcedir | pv -s size | tar x -C targetdir

Это сообщит о прогрессе на основе байтов, которые копируются.

targetdir должен существовать.

Используйте следующую команду для получения size:

du -sh sourcedir

Если вы хотите использовать rsync:

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

Получите filecount, как показано выше.

Если вы копируете в одной системе, то rsync -a практически то же самое, что cp -a . Преимущества rsync - при копировании по сети или при обновлении (или сравнении) предыдущей копии.

См. подробнее здесь:

1
27.01.2020, 19:52

Я сделал индикатор выполнения для rsync (в обертке):

rsyncy -a FROM/ TO

Это выглядит так:

rsyncy

Дополнительная информация на GitHub , установить с помощьюpip3 install --user rsyncy

1
16.11.2020, 09:12

Теги

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