Размер вашего текстового файла x МБ, у вас нет 2 * x МБ, но я полагаю, у вас тоже недостаточно места для сжатия файла? Текстовые файлы часто сжимаются до десятой части исходного размера ...
У вас недостаточно места для хранения только строк ($ total- $ rmv), но что, если они сжаты? tail -n + $ rmv "$ filename" | gzip> "$ filename.tmp" && zcat "$ filename.tmp"> "$ filename"
Принимая это как абстрактную интеллектуальную проблему, я бы разрезал файл на куски, размер которых соответствовал бы памяти или доступным дисковое пространство, начиная с последнего фрагмента и затем усекая исходный файл.Я также мог сжать файл на месте, используя уловку dd conv = notrunc
.
Однако на практике я бы либо
скопировал файл по сети на сервер с достаточным объемом диска для хранения (только) строк ($ total- $ rmv), проверял, правильно ли я получил строки, удалите исходный файл и скопируйте обратно.
добавьте диск, так как он вам явно нужен.
Я думаю, вам нужно сначала разрешить ссылки, а затем запустить rsync для отдельных файлов. Таким образом, он может сохранить разрешенную структуру каталогов через -R
. Т.е. попробуйте это в Linux:
rsync -avRL --files-from=<(find ${BACKUP}/backup/symlinks/ -exec readlink -f {} \;) / /${BACKUP}/backup/data/
и это в Mac OS:
rsync -avRL --files-from=<(find ${BACKUP}/backup/symlinks/ -exec readlink {} \;) / /${BACKUP}/backup/data/
Предполагается, что команда find
выводит правильные абсолютные пути, т.е. что ${BACKUP}
является абсолютным каталогом.