Rsync огромный набор данных из небольших файлов 5 ТБ, +M маленьких файлов

Я столкнулся с ситуацией, когда неправильная настройка сервера приложений привела к созданию около 5 ТБ наборов данных, где каждый каталог содержит огромное количество небольших файлов. Мы находимся в процессе передачи файлов и изменения приложения, но rsync не может передать данные. Это происходит даже локально между локальными дисками. Мне удалось скопировать только 3.5G за одну ночь! Я попытался изменить переключатели rsync, но все равно не повезло. Вот что в данный момент выполняется на сервере без указания прогресса: rsync -avhWc --no-compress - источник назначения прогресса Некоторые предположили, что gigasync, но github и сайт недоступны. Кто-нибудь может предложить способ передачи файлов? Цени любую помощь

4 ответа

Попробуйте xargs+rsync:

 find . -type f -print0 | xargs -J % -0 rsync -aP % user@host:some/dir/

Вы можете контролировать, сколько файлов передавать в качестве источника для каждого вызова rsync с помощью -n Например, чтобы скопировать 200 файлов на каждом rsync:

 find . -type f -print0 | xargs -n 200 -J % -0 rsync -aP % user@host:some/dir/

Если это слишком медленно, вы можете запустить несколько копий rsync параллельно с -P опция:

find . -type f -print0 | xargs -P 8 -n 200 -J % -0 rsync -aP % user@host:some/dir/

Это запустит 8 копий rsync параллельно.

Если это доверенная / безопасная сеть, и вы можете открыть порт на целевом хосте, хорошим способом воспроизвести дерево на другом компьютере является сочетание tar и netcat. Я не на терминале, поэтому не могу написать полную демонстрацию, но эта страница делает довольно хорошую работу:

http://toast.djw.org.uk/tarpipe.html

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

Если у вас есть ZFS, вы можете использовать репликацию на уровне ZFS для отправки файловой системы в новое место назначения.

Если это не вариант, рассмотрите UDR+rsync, подробно здесь: Передача большого количества маленьких файлов

Не указав серверную ОС - вы рассматривали robocopy? Это на основе Windows, хотя. Поддерживает многопоточность, повторные попытки и ограничение пропускной способности. UNC к UNC способен. RoboCopy документы

Быстрый Google Rsync показывает Unix / Windows... может быть, вы используете Windows.

Другие вопросы по тегам