Контролювати швидкість стиснення gzip під час архівування файлів за допомогою tar?


3

У мене є сценарій, який періодично створює резервну копію каталогу за допомогою команди " tar -czvf [ім'я] [каталог] ", але моя проблема полягає в тому, що сценарій останнім часом сильно напружує сервер (Minecraft SMP) і, як правило, відстає. гравців, як це резервне копіювання, що останнім часом займає майже 5 хвилин.

Тож мені потрібно знати, чи існує спосіб контролю швидкості стиснення GZip одночасно, коли він архівує та створює резервну копію файлів?

Я розумію, що спочатку можу орієнтувати файли, а потім GZip їх окремо з іншою швидкістю стиснення, але це не буде працювати, оскільки він називає файли з поточним часом сервера, який іноді змінюється між командами.

Будь-яке розуміння? Дякую заздалегідь.


1
це не питання програмування; це може бути краще на енергоспоживачах або на сайтах stackexchange linux / unix.
jcomeau_ictx

3
Прошу вибачення, я розмістив його лише тут, тому що він був частиною сценарію оболонки .. Я зрозумів свою проблему, проте, найпростішим виправленням було поставити " GZIP = - [рівень стиснення] " безпосередньо перед командою tar так: GZIP=-[compression level] tar -czvf [name].tar.gz [directory]

Відповіді:


2

Робити це в два етапи, ймовірно, більш портативно. Якщо вам потрібна мітка часу, спочатку збережіть її:

filename=/what/ever/backup-$(date +%Y%m%d%H%M%S).tar
tar cvf $filename ...
gzip -1 $filename

Я б також запропонував вам заглянути niceі в ionice. Вони можуть допомогти вам зменшити вплив резервних копій на чутливість сервера.


Я фактично вирішив це іншим способом, використовуючи, GZIP=-[compression level] tar -czvf [name].tar.gz [directory]в якому я використав 1 для рівня стиснення, але я обов'язково спробую ваш метод спробувати зробити імена резервного копіювання більш рівномірними і, сподіваюся, зменшити відставання ще більше, змінивши пріоритети, що є щось, що ніколи раніше не переходило до тями. Дякую тонну.

1

Можливо, трохи пізно, але це може допомогти іншим ...

Якщо ви регулярно створюєте резервні копії подібних даних, слід спершу створити лише копію (а не стискати її, тому в основному створювати лише файл tar) і згодом стискати ще більше резервних копій. У випадку сервера Minecraft ви, ймовірно, робите кілька резервних копій щодня. Ви можете планувати стиснення цих резервних копій разом із сильним алгоритмом, як щодня або близько того, запускаючи його, коли на сервері не так багато людей. Затримка буде довшою, але справа в тому, що отриманий архів буде дійсно малим (адже більшість світових файлів взагалі не змінюються між резервними копіями). І якщо у вас є деяка запасна потужність на деяких ядрах (що досить вірогідно), компресія використовуватиме це (і спричинятиме менший відставання для решти серверів), можливо, підвищуючи продуктивність під час резервного копіювання.


0

Я часто роблю щось подібне, тому, коли процес дьогтю завершено, мені не потрібно пам'ятати, щоб gzip, як це все робиться в одному рядку:

tar cvf - $nameOfDirOrFileToBeBackedUp | gzip -$compressionLevel > $backupLocation/$nameOfDirOrFileToBeBackedUp.tar.gz

Цей метод працює на старих версіях tar, які не підтримують gzip (Solaris 10 все ще не працює).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.