Назад | Перейти на главную страницу

оптимизировать пространство rdiff-backup

Привет всем в мой серверный Linux с Ubuntu10 в etc / crontab У меня есть это:

0 0 * * * user rdiff-backup -v9 user@111.111.111.111::/var/www/ /mnt/server1/www
0 1 * * * user rdiff-backup -v9 user@222.222.222.222::/var/www/ /mnt/server2/www
0 2 * * * user rdiff-backup -v9 user@333.333.333.333::/var/www/ /mnt/server3/www

На сервере, например, есть жесткий диск размером 2 ТБ, и с моей резервной копией я занял около 1 ТБ.
Я делал резервную копию каждую ночь, теперь, если в течение года или более эта резервная копия работает, пространство на моем жестком диске, я думаю, уменьшится, потому что rdiff-backup создает историю измененного файла.
Можно ли ограничить в моем crontab, чтобы ограничить историю и управлять пространством жесткого диска? Что-то вроде: «после 30 версии отменить самую старую».
можно сделать это в моем файле crontab?

Поскольку ваши задания cron запускаются каждый день, и вы хотите сохранить 30 версий, это то же самое, что и удаление всех инкрементных резервных копий старше 30 дней.

Это возможно с помощью rdiff-backup, используя --remove-older-than опция с указанием 30D или 1M. Нельзя совмещать --remove-older-than с резервным копированием или восстановлением данных одной командой. Вам нужно будет добавить строки в ваш crontab.

Еще одно предостережение: --remove-older-than отказывается удалять несколько приращений одновременно, если вы не укажете --force вариант. Вы можете попробовать запустить его вручную с помощью --force а затем пусть задания cron удаляют одно приращение каждый день. Это может вызвать проблемы, если задания cron не запускаются по какой-либо причине (например, не работает сервер). Я бы включил --force опция в заданиях cron.

Ваш новый crontab может выглядеть примерно так:

0 0 * * * user rdiff-backup -v9 user@111.111.111.111::/var/www/ /mnt/server1/www
0 1 * * * user rdiff-backup -v9 user@222.222.222.222::/var/www/ /mnt/server2/www
0 2 * * * user rdiff-backup -v9 user@333.333.333.333::/var/www/ /mnt/server3/www
0 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server1/www
20 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server2/www
40 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server3/www

Вы должны решить, удаляете ли вы старые приращения перед созданием новой резервной копии или в какое время запускаете какое задание.

Для ясности: будет удалена только информация, необходимая для восстановления до состояния инкрементного резервного копирования ранее, чем 30 дней назад, а не старые данные, которые все еще присутствуют прямо сейчас или в более поздней инкрементной резервной копии.


Для получения дополнительной информации о --remove-older-than вариант вы можете прочитать страница руководства:

--remove-older-than time_spec
          Remove the incremental backup  information  in  the  destination
          directory  that  has  been  around  longer  than the given time.
          time_spec can be either an absolute time, like "2002-01-04",  or
          a  time  interval.   The time interval is an integer followed by
          the character s, m, h, D, W, M, or Y, indicating  seconds,  min-
          utes,  hours,  days,  weeks, months, or years respectively, or a
          number of these concatenated.  For example, 32m  means  32  min-
          utes,  and 3W2D10h7s means 3 weeks, 2 days, 10 hours, and 7 sec-
          onds.  In this context, a month means 30 days,  a  year  is  365
          days, and a day is always 86400 seconds.

          rdiff-backup  cannot remove-older-than and back up or restore in
          a single session.  In order  to  both  backup  a  directory  and
          remove old files in it, you must run rdiff-backup twice.

          By  default,  rdiff-backup will only delete information from one
          session at a time.  To remove two or more sessions at  the  same
          time,  supply  the --force option (rdiff-backup will tell you if
          --force is required).

          Note that snapshots of deleted files are covered by this  opera-
          tion.  Thus if you deleted a file two weeks ago, backed up imme-
          diately afterwards, and then  ran  rdiff-backup  with  --remove-
          older-than  10D  today,  no  trace  of  that  file would remain.
          Finally, file selection options such as --include and  --exclude
          don't affect --remove-older-than.

Вы могли бы попробовать

rdiff-backup --remove-older-than 1M /mnt/server1/www

Вам нужно добавить еще одну строку в ваш crontab, чтобы сообщить rdiff-backup, что нужно удалить файлы.

Из http://www.nongnu.org/rdiff-backup/examples.html:

В этом разделе предполагается, что rdiff-backup использовался в прошлом для резервного копирования на host.net::/remote-dir, но все команды также работали бы локально, если бы имя хоста было опущено.

Эта команда удаляет всю информацию о версиях файлов, которые не были актуальными в течение 2 недель:

rdiff-backup --remove-старший-чем 2W host.net::/remote-dir Обратите внимание, что существующий файл, который не изменялся в течение года, все равно будет сохранен. Но файл, который был удален 15 дней назад, не может быть восстановлен после выполнения этой команды. Как и при восстановлении, есть множество способов указать время. Приведенный ниже 20B указывает rdiff-backup сохранять информацию только из последних 20 сеансов rdiff-backup. (Синтаксис nnB доступен только в версиях после 0.13.1.)

rdiff-backup --remove-старше-20B host.net::/remote-dir