2

У меня есть каталог ~ 200.000 .npy файлов с общим размером ~ 100 ГБ. Все файлы хранятся непосредственно под основным каталогом (то есть нет подкаталогов). Мне нужно перенести каталог, и я хотел бы сделать это, сначала сжав его в меньшее количество файлов gzip, которые я затем передал, используя ssh. Я попытался сразу сжать весь каталог, что заставило мой сервер зависнуть, потребовав полной перезагрузки.

Как я могу легко сжать каталог файлов, скажем, в 1000 .gz файлов, которые затем легко перенести и разархивировать?

Я бы предпочел сделать это таким образом, чтобы максимальное потребление ресурсов на сервере в любой точке (в первую очередь, RAM/IO) не зависело от характеристик каталога (общий размер / количество файлов). Я надеюсь, что мне удастся найти метод, который я смогу использовать с еще большими каталогами, не останавливая мой сервер. Решение должно быть предпочтительно с использованием Bash или Python. Спасибо!

1 ответ1

2

Похоже, это хорошо подходит для rsync . Он будет прозрачно сжимать содержимое, и ему можно будет ограничить использование полосы пропускания, что служит как для предотвращения засорения сети, так и для предотвращения высокой нагрузки ввода-вывода на исходном сервере:

rsync -az --bwlimit=1m directory server:/destination/

-a указывает rsync скопировать метаданные файла, такие как время создания, -z означает использовать сжатие, а --bwlimit ограничивает полосу пропускания, используемую в сети.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .