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