Что на самом деле делают эти команды ('tar')? Существует ли лучший путь?

Я знаю о fuser, посмотрите, доступно ли в Вашей системе.

5
20.11.2013, 21:16
2 ответа

Причина, почему tar (или cpio) рекомендуется по CP для этой процедуры, из-за того, как инструменты работают.

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

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

8
27.01.2020, 20:35
  • 1
    При Взятии всей буферизации это продолжается, cp и tar действуйте по существу тождественно: считайте некоторый материал, пока RAM почти не насыщается, затем запишите некоторый материал и повторение. У Вас есть сравнительные тесты, которые показывают значительное преимущество скорости для tar по CP? –  Gilles 'SO- stop being evil' 31.08.2011, 01:58
  • 2
    @Gilles: буферизация может или не может происходить; FWIW, fwrite () s мог очень хорошо быть полностью синхронным для той конкретной точки монтирования. Используя tar абстрагировал бы это далеко несколько - но на практике, я соглашаюсь, что буферизация сотрет различие в 99% случаев. –  Piskvor left the building 31.08.2011, 15:39

Команда выполняет точную подобную архиву копию поддерева каталога (т.е. где полномочия хранителей tar, владение, связываются и т.д.).

Во-первых, это команда

tar cpf - . | ( cd /var/ftp/ks/centos/; tar xpf - )

эквивалентно

tar cpf - . | tar -C /var/ftp/ks/centos -x -p -f -

где -C указывает, что рабочий tar каталога должен измениться на прежде, чем начать извлекать файлы.

Вероятно, коллега просто не знал -C опция.

Также довольно эквивалентный:

cp -a * /var/ftp/ks/centos/

(где -a или --archive обозначает-r - preserve=all - нет - разыменовывают - preserve=links, т.е. CP сохраняет затем полномочия, копии рекурсивно и т.д. как, каждый ожидает при выполнении точной подобной архиву копии),

Это не эквивалентно потому что сопоставление с образцом оболочки * не ловит точечные файлы в текущем рабочем каталоге. С другим источником копируют причину выбрать tar cp -a это cp -a расширение GNU и не POSIX, т.е. a tar решением было бы более портативное.

Нет никаких причин производительности выбора tar по CP.

2
27.01.2020, 20:35

Теги

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