Я столкнулся с ситуацией, когда неправильная конфигурация сервера приложений привела к созданию наборов данных размером около 5 ТБ, где каждый каталог содержит огромное количество небольших файлов. Мы находимся в процессе передачи файлов и меняем приложение, но rsync не может передать данные. Это не удается даже локально между локальными дисками. Мне удалось скопировать только 3.5G за ночь! Я попытался изменить переключатели rsync, но все равно не повезло. Вот что в настоящее время работает на сервере без каких-либо индикаторов прогресса: rsync -avhWc --no-compress --progress source destination Некоторые предлагали gigasync, но github и сайт недоступны. Кто-нибудь может предложить способ передачи файлов? Цени любую помощь
Попробуйте 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
Обязательно используйте сжатие. В лучшем случае вы можете передавать данные с наименьшей пропускной способностью из трех возможных узких мест - чтение в источнике, сеть, запись в целевые разрешения.
без указания ОС сервера - рассматривали ли вы robocopy? Хотя его Windows основана. Поддерживает потоки, повторные попытки и ограничение полосы пропускания. Поддержка UNC в UNC. Документы RoboCopy
быстрый google из rsync показывает unix / windows ... возможно, вы используете окна.
Если у вас есть ZFS, вы можете использовать репликацию на уровне ZFS для отправки файловой системы в новое место назначения.
Если это не вариант, рассмотрите UDR + rsync, подробно описанный здесь: Передача большого количества небольших файлов