я tar
ing, а затем сжать кучу файлов и каталогов на моем Ubuntu Server VPS для резервного копирования. У него всего 1 ГБ ОЗУ и 128 МБ подкачки (я не могу добавить больше - OVH используют OpenVZ в качестве программного обеспечения для виртуализации), и каждый раз tar
запускает, он использует тонну памяти для своего буфера, в результате чего все остальное выгружается - даже при использовании nice -n 10
.
Есть ли способ заставить tar
использовать небольшой буфер и уменьшить использование памяти? Меня беспокоит, что как только размер резервной копии станет определенного, мой сервер выйдет из строя, потому что tar
не хватит памяти для его буфера.
Я использую bzip2
для сжатия, и я уже ограничил использование памяти с помощью -4
вариант.
Редактировать: Вот что htop
похоже, когда у меня было tar
работает какое-то время:
Изменить 2: Вот команда tar, которую я использую:
nice -n 20 tar --exclude "*node_modules*" --exclude "*.git/*" --exclude "/srv/www-mail/rainloop/v*" -cf archive.tar /home /var/log /var/mail /srv /etc
На самом деле ваше изображение показывает как раз обратное.
Как вы можете видеть в столбце RES, tar
потребление памяти довольно низкое. Вы используете RAM появиться увеличиваться просто потому, что Linux активно кэширует данные, прочитанные командой tar. Это, в свою очередь, вызывает нехватку памяти и обратную запись грязных страниц (в основном, система очищает свой кэш записи, чтобы приспособиться к большему кэшированию чтения) и, возможно, полезные данные удаляются из кеша ввода-вывода.
К сожалению, кажется, что tar
сам по себе не может быть проинструктирован использовать O_DIRECT или POSIX_FADVISE (оба из которых могут использоваться для «обхода» кеша). Итак, используя tar
здесь нет настоящего решения ...