Привет всем в мой серверный 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