Как я могу ускорить операции на редких файлах с tar, gzip, rsync?

В ударе, . и source функционально выполните то же задание - выполнение сценария в текущей оболочке.

./foo выполнения в другой оболочке, как Ваши ветвления оболочки перед выполнением.

Если Ваш сценарий должен быть портативным, всегда используйте .. source синоним удара, но он не существует в POSIX.

9
17.03.2014, 20:29
2 ответа

В этой статье [112685] есть несколько полезных советов как минимум для [112686]rsync[112687]:

Problems Using [113187]rsync --sparse works[113188], но приводит к огромному количеству ненужных записей на диск. Изменение 10 байт на длину 50 Гб (используется 1 Гб) должно привести к записи только одного или двух блоков, это приводит к записи 1 Гб. Это медленно, и, возможно, не очень хорошо для долговечности дисков. Использование [113189]rsync --inplace[113190] работает, но создает не разреженные файлы.Вы не можете использовать --sparse и --inplace одновременно :-( это запрещено rsync. rsync: --sparse нельзя использовать с --inplace Solution

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

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

Затем вы можете использовать [112704]rsync --inplace[112705] для копирования файлов. Это необходимо сделать только один раз.

Screenshot 1

Screenshot 2

Screenshot 3

В той же статье предлагается использовать [112706]Virtsync[112707], который является

коммерческим инструментом командной строки Linux стоимостью $49 для синхронизации содержимого огромных файлов (таких как образы дисков и баз данных виртуальной машины).

Это может быть лучшим решением, если вы готовы заплатить за него, так как он написан специально для такого рода ситуаций.[112210].

2
27.01.2020, 20:07

bsdtar[112833] (по крайней мере, из [112834] libarchive[112835] 3.1. 2) способен обнаруживать разреженные участки, используя [112836]FS_IOC_FIEMAP[112837] ioctl на файловых системах, которые его поддерживают (хотя он поддерживает и ряд других API), однако, как ни странно, по крайней мере в моем тесте, он не способен обрабатывать файлы [112838]tar[112839], которые он сам генерирует (похоже на ошибку).

Однако использование GNU [112840]tar[112841] для их извлечения работает, но тогда GNU tar не может обрабатывать некоторые расширенные атрибуты, которые поддерживает bsdtar.

Так

  • работает, пока файлы не имеют расширенных атрибутов или флагов.

  • Он все еще не работает для файлов, которые полностью разрежены (только нули), так как [112842]FS_IOC_FIEMAP[112843] ioctl затем возвращает 0, и выглядит так, будто [112844]bsdtar[112845] не справляется с этим должным образом (еще одна ошибка? ).

star[112847] ([112848]Schily tar[112849]) - это другая реализация open source tar, которая может обнаружить разреженные файлы (используйте опцию [112850]-sparse[112851]) и не имеет этих ошибок [112852]bsdtar[112853] (но не упакован многими системами).[112314].
7
27.01.2020, 20:07

Теги

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