Эффективная копия всего каталога - PullRequest
2 голосов
/ 05 апреля 2010

Я хочу скопировать один каталог и два файла в нем в другое общее хранилище. Можно ли объединить три (один каталог и два файла) как непрерывную запись файла и разложить его на другую сторону, чтобы сэкономить затраты? Я ограничен языком c и Unix / Linux. Я рассматриваю возможность создания структуры с информацией об инодах и получения данных в приемнике.

Спасибо!

Ответы [ 3 ]

5 голосов
/ 05 апреля 2010

rsync - это то, что вы ищете.Или смолу, если вы хотите работать с оболочкой на другой стороне.

0 голосов
/ 05 апреля 2010

По некоторым причинам, cpio часто предпочтительнее, чем tar для этого.

Вы можете, например, передать канал cpio в сеанс ssh, запустив cpio удаленно.

0 голосов
/ 05 апреля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...