
Я планирую переместить каталог linux o/sa, который смонтирован на SAN (offboard), на внешнее хранилище для резервного копирования. Размер каталога составляет 14TB
.
У меня есть опыт перемещения файлов с помощью rsync, но я никогда не делал этого с такими большими каталогами/файлами, как сейчас.
Каталоги организованы по иерархии год/месяц/день/час и поддерживают необработанные журналы для анализа.
Проблема
Итак, с учетом вышесказанного, из-за ограничений ресурсов я не могу переместить все 14 ТБ на внешнее/резервное хранилище. Резервное пространство, которое у меня есть в настоящее время, составляет максимум 8 ТБ. Так есть ли команда или переключатель/параметр, который я могу указать rsync копировать только файлы указанного размера, т. е. только ТБ.
ПРИМЕЧАНИЕ Меня не волнует характер файла, важен лишь его размер, и я не хочу перемещать какие-либо данные.
решение1
Вы не можете остановить rsync, когда он скопировал определенное количество байт, указав предел. Вы можете запустить его в обычном режиме
rsync -a /src/ /dest
и когда /dest заполнится, он просто остановится с ошибкой
rsync: write failed on "...": No space left on device (28)
Вы могли бы что-то сделать со сценарием
find /src -printf "%p %s\n" >filelist_size
Затем используйте что-то вроде awk, чтобы прочитать filelist_size
и вывести имя файла, filelist
если сумма размеров файлов ниже некоторого порогового значения.
Затем вы можете использовать files-from=filelist
аргумент для rsync.
Возможно, проще написать это на Python.