Оптимизировать пространство 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?

3 ответа

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

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

Другие вопросы по тегам