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.