Мне нужно скопировать очень большой каталог (здесь речь идет о терабайтах) и хочу следить за ходом работы.
Я обнаружил, что pv
это хорошая утилита, но как я могу использовать ее для рекурсивного копирования каталогов? ( pv src > dst
не работает, потому что они каталоги)
PS: работает на OS X Mountain Lion, pv
был установлен из портов Mac
Вы можете использовать
tar
илиpax
илиcpio
:источник
v
кtar
команде, чтобы увидеть имена файлов.tar cf -
выводит поток, содержащий файлы и их метаданные, который подается по каналу в pv, который передает его нетронутым другомуtar
во время печати индикатора выполнения, а другойtar
извлекает данные в этом потоке. Все три команды выполняются одновременно и обрабатывают данные по мере их поступления, на диске ничего не хранится, в памяти ничего не хранится, кроме конвейерных буферов и внутренних буферов команд, которые составляют всего несколько килобайт.pv
нет никакой возможности узнать, сколько данных нужно передать. Если у вас есть оценка этой суммы, вы можете передать ее с помощью-s
опции (GNUdu -sb src
даст вам хорошее приближение, если файлы будут достаточно большими)Тар.
Пример:
источник
Вот несколько команд для копирования каталогов с информацией о прогрессе.
Если есть много маленьких файлов:
Это будет сообщать о прогрессе в зависимости от количества скопированных файлов.
Вы можете перенаправить,
/dev/null
если вам не нужноlogfile
.Используйте следующую команду, чтобы получить
filecount
:Если есть несколько огромных файлов:
Это сообщит о прогрессе на основе скопированных байтов.
targetdir
должен существовать.Используйте следующую команду, чтобы получить
size
:Если вы хотите использовать rsync:
Получите
filecount
как показано выше.Если вы копируете в той же системе, то
rsync -a
практически так же, какcp -a
. Преимущества rsync - это когда вы копируете по сети или обновляете (или сравниваете) предыдущую копию.Смотрите здесь для более подробной информации:
источник
Вы можете выполнить операции
du -b /directory/
как для источника, так и для места назначения, пока выполняется обычная команда копирования, и сравнить их. Это так же эффективно и не замедляет процесс копирования, проталкивая его через канал.источник
источник