2017-02-05 13:22:06 +00:00
|
|
|
.\" Man page generated from reStructuredText.
|
|
|
|
.
|
|
|
|
.
|
|
|
|
.nr rst2man-indent-level 0
|
|
|
|
.
|
|
|
|
.de1 rstReportMargin
|
|
|
|
\\$1 \\n[an-margin]
|
|
|
|
level \\n[rst2man-indent-level]
|
|
|
|
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
-
|
|
|
|
\\n[rst2man-indent0]
|
|
|
|
\\n[rst2man-indent1]
|
|
|
|
\\n[rst2man-indent2]
|
|
|
|
..
|
|
|
|
.de1 INDENT
|
|
|
|
.\" .rstReportMargin pre:
|
|
|
|
. RS \\$1
|
|
|
|
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
|
|
|
. nr rst2man-indent-level +1
|
|
|
|
.\" .rstReportMargin post:
|
|
|
|
..
|
|
|
|
.de UNINDENT
|
|
|
|
. RE
|
|
|
|
.\" indent \\n[an-margin]
|
|
|
|
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
.nr rst2man-indent-level -1
|
|
|
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
|
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
|
|
..
|
2023-02-26 20:30:54 +00:00
|
|
|
.TH "BORG-PRUNE" 1 "2023-02-26" "" "borg backup tool"
|
2022-06-23 23:19:19 +00:00
|
|
|
.SH NAME
|
|
|
|
borg-prune \- Prune repository archives according to specified rules
|
2017-02-05 13:22:06 +00:00
|
|
|
.SH SYNOPSIS
|
|
|
|
.sp
|
2022-06-23 23:19:19 +00:00
|
|
|
borg [common options] prune [options]
|
2017-02-05 13:22:06 +00:00
|
|
|
.SH DESCRIPTION
|
|
|
|
.sp
|
|
|
|
The prune command prunes a repository by deleting all archives not matching
|
2018-07-12 20:00:19 +00:00
|
|
|
any of the specified retention options.
|
|
|
|
.sp
|
|
|
|
Important: Repository disk space is \fBnot\fP freed until you run \fBborg compact\fP\&.
|
|
|
|
.sp
|
|
|
|
This command is normally used by automated backup scripts wanting to keep a
|
2022-01-23 14:53:42 +00:00
|
|
|
certain number of historic backups. This retention policy is commonly referred to as
|
|
|
|
\fI\%GFS\fP
|
|
|
|
(Grandfather\-father\-son) backup rotation scheme.
|
2017-02-05 13:22:06 +00:00
|
|
|
.sp
|
|
|
|
Also, prune automatically removes checkpoint archives (incomplete archives left
|
|
|
|
behind by interrupted backup runs) except if the checkpoint is the latest
|
|
|
|
archive (and thus still needed). Checkpoint archives are not considered when
|
2017-06-18 10:13:28 +00:00
|
|
|
comparing archive counts against the retention limits (\fB\-\-keep\-X\fP).
|
2017-02-05 13:22:06 +00:00
|
|
|
.sp
|
2022-10-02 13:51:17 +00:00
|
|
|
If you use \-\-match\-archives (\-a), then only archives that match the pattern are
|
2017-02-05 13:22:06 +00:00
|
|
|
considered for deletion and only those archives count towards the totals
|
|
|
|
specified by the rules.
|
|
|
|
Otherwise, \fIall\fP archives in the repository are candidates for deletion!
|
|
|
|
There is no automatic distinction between archives representing different
|
2022-09-10 14:03:27 +00:00
|
|
|
contents. These need to be distinguished by specifying matching globs.
|
2017-02-05 13:22:06 +00:00
|
|
|
.sp
|
|
|
|
If you have multiple sequences of archives with different data sets (e.g.
|
|
|
|
from different machines) in one shared repository, use one prune call per
|
2022-10-02 13:51:17 +00:00
|
|
|
data set that matches only the respective archives using the \-\-match\-archives
|
2022-09-10 14:03:27 +00:00
|
|
|
(\-a) option.
|
2017-02-05 13:22:06 +00:00
|
|
|
.sp
|
2022-09-10 14:03:27 +00:00
|
|
|
The \fB\-\-keep\-within\fP option takes an argument of the form \(dq<int><char>\(dq,
|
|
|
|
where char is \(dqH\(dq, \(dqd\(dq, \(dqw\(dq, \(dqm\(dq, \(dqy\(dq. For example, \fB\-\-keep\-within 2d\fP means
|
2017-02-05 13:22:06 +00:00
|
|
|
to keep all archives that were created within the past 48 hours.
|
2022-09-10 14:03:27 +00:00
|
|
|
\(dq1m\(dq is taken to mean \(dq31d\(dq. The archives kept with this option do not
|
2017-02-05 13:22:06 +00:00
|
|
|
count towards the totals specified by any other options.
|
|
|
|
.sp
|
|
|
|
A good procedure is to thin out more and more the older your backups get.
|
2017-06-18 10:13:28 +00:00
|
|
|
As an example, \fB\-\-keep\-daily 7\fP means to keep the latest backup on each day,
|
2017-02-05 13:22:06 +00:00
|
|
|
up to 7 most recent days with backups (days without backups do not count).
|
|
|
|
The rules are applied from secondly to yearly, and backups selected by previous
|
|
|
|
rules do not count towards those of later rules. The time that each backup
|
2023-02-26 20:30:54 +00:00
|
|
|
starts is used for pruning purposes. Dates and times are interpreted in the local
|
|
|
|
timezone of the system where borg prune runs, and weeks go from Monday to Sunday.
|
|
|
|
Specifying a negative number of archives to keep means that there is no limit.
|
|
|
|
As of borg 1.2.0, borg will retain the oldest archive if any of the secondly,
|
|
|
|
minutely, hourly, daily, weekly, monthly, or yearly rules was not otherwise able to
|
|
|
|
meet its retention target. This enables the first chronological archive to continue
|
2021-02-06 00:32:54 +00:00
|
|
|
aging until it is replaced by a newer archive that meets the retention criteria.
|
2017-02-05 13:22:06 +00:00
|
|
|
.sp
|
2017-06-18 10:13:28 +00:00
|
|
|
The \fB\-\-keep\-last N\fP option is doing the same as \fB\-\-keep\-secondly N\fP (and it will
|
2017-02-05 13:22:06 +00:00
|
|
|
keep the last N archives under the assumption that you do not create more than one
|
|
|
|
backup archive in the same second).
|
2017-11-25 13:38:04 +00:00
|
|
|
.sp
|
|
|
|
When using \fB\-\-stats\fP, you will get some statistics about how much data was
|
2022-09-10 14:03:27 +00:00
|
|
|
deleted \- the \(dqDeleted data\(dq deduplicated size there is most interesting as
|
2017-11-25 13:38:04 +00:00
|
|
|
that is how much your repository will shrink.
|
2022-09-10 14:03:27 +00:00
|
|
|
Please note that the \(dqAll archives\(dq stats refer to the state after pruning.
|
2017-02-05 13:22:06 +00:00
|
|
|
.SH OPTIONS
|
|
|
|
.sp
|
|
|
|
See \fIborg\-common(1)\fP for common options of Borg commands.
|
2022-11-26 21:23:46 +00:00
|
|
|
.SS options
|
2017-02-05 13:22:06 +00:00
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-n\fP,\fB \-\-dry\-run
|
2017-02-05 13:22:06 +00:00
|
|
|
do not change repository
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-\-force
|
2020-10-04 18:33:08 +00:00
|
|
|
force pruning of corrupted archives, use \fB\-\-force \-\-force\fP in case \fB\-\-force\fP does not work.
|
2017-02-05 13:22:06 +00:00
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-s\fP,\fB \-\-stats
|
2017-02-05 13:22:06 +00:00
|
|
|
print statistics for the deleted archive
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-\-list
|
2017-02-05 13:22:06 +00:00
|
|
|
output verbose list of archives it keeps/prunes
|
|
|
|
.TP
|
2017-11-25 13:38:04 +00:00
|
|
|
.BI \-\-keep\-within \ INTERVAL
|
2017-02-05 13:22:06 +00:00
|
|
|
keep all archives within this time interval
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-\-keep\-last\fP,\fB \-\-keep\-secondly
|
2017-02-05 13:22:06 +00:00
|
|
|
number of secondly archives to keep
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-\-keep\-minutely
|
2017-02-05 13:22:06 +00:00
|
|
|
number of minutely archives to keep
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-H\fP,\fB \-\-keep\-hourly
|
2017-02-05 13:22:06 +00:00
|
|
|
number of hourly archives to keep
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-d\fP,\fB \-\-keep\-daily
|
2017-02-05 13:22:06 +00:00
|
|
|
number of daily archives to keep
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-w\fP,\fB \-\-keep\-weekly
|
2017-02-05 13:22:06 +00:00
|
|
|
number of weekly archives to keep
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-m\fP,\fB \-\-keep\-monthly
|
2017-02-05 13:22:06 +00:00
|
|
|
number of monthly archives to keep
|
|
|
|
.TP
|
2022-06-23 23:19:19 +00:00
|
|
|
.B \-y\fP,\fB \-\-keep\-yearly
|
2017-02-05 13:22:06 +00:00
|
|
|
number of yearly archives to keep
|
|
|
|
.TP
|
2022-08-03 20:19:12 +00:00
|
|
|
.BI \-c \ SECONDS\fR,\fB \ \-\-checkpoint\-interval \ SECONDS
|
|
|
|
write checkpoint every SECONDS seconds (Default: 1800)
|
2017-02-05 13:22:06 +00:00
|
|
|
.UNINDENT
|
2017-11-25 13:38:04 +00:00
|
|
|
.SS Archive filters
|
2017-06-18 10:13:28 +00:00
|
|
|
.INDENT 0.0
|
|
|
|
.TP
|
2022-10-02 13:51:17 +00:00
|
|
|
.BI \-a \ PATTERN\fR,\fB \ \-\-match\-archives \ PATTERN
|
|
|
|
only consider archive names matching the pattern. see \(dqborg help match\-archives\(dq.
|
2023-02-26 20:30:54 +00:00
|
|
|
.TP
|
|
|
|
.BI \-\-oldest \ TIMESPAN
|
|
|
|
consider archives between the oldest archive\(aqs timestamp and (oldest + TIMESPAN), e.g. 7d or 12m.
|
|
|
|
.TP
|
|
|
|
.BI \-\-newest \ TIMESPAN
|
|
|
|
consider archives between the newest archive\(aqs timestamp and (newest \- TIMESPAN), e.g. 7d or 12m.
|
|
|
|
.TP
|
|
|
|
.BI \-\-older \ TIMESPAN
|
|
|
|
consider archives older than (now \- TIMESPAN), e.g. 7d oder 12m.
|
|
|
|
.TP
|
|
|
|
.BI \-\-newer \ TIMESPAN
|
|
|
|
consider archives newer than (now \- TIMESPAN), e.g. 7d or 12m.
|
2017-06-18 10:13:28 +00:00
|
|
|
.UNINDENT
|
2017-02-05 13:22:06 +00:00
|
|
|
.SH EXAMPLES
|
|
|
|
.sp
|
|
|
|
Be careful, prune is a potentially dangerous command, it will remove backup
|
|
|
|
archives.
|
|
|
|
.sp
|
|
|
|
The default of prune is to apply to \fBall archives in the repository\fP unless
|
2022-07-03 23:21:50 +00:00
|
|
|
you restrict its operation to a subset of the archives using \fB\-a\fP / \fB\-\-glob\-archives\fP\&.
|
|
|
|
When using \fB\-a\fP, be careful to choose a good pattern \- e.g. do not use a
|
2022-09-10 14:03:27 +00:00
|
|
|
prefix \(dqfoo\(dq if you do not also want to match \(dqfoobar\(dq.
|
2017-02-05 13:22:06 +00:00
|
|
|
.sp
|
|
|
|
It is strongly recommended to always run \fBprune \-v \-\-list \-\-dry\-run ...\fP
|
|
|
|
first so you will see what it would do without it actually doing anything.
|
|
|
|
.INDENT 0.0
|
|
|
|
.INDENT 3.5
|
|
|
|
.sp
|
|
|
|
.nf
|
|
|
|
.ft C
|
|
|
|
# Keep 7 end of day and 4 additional end of week archives.
|
|
|
|
# Do a dry\-run without actually deleting anything.
|
2022-06-23 23:19:19 +00:00
|
|
|
$ borg prune \-v \-\-list \-\-dry\-run \-\-keep\-daily=7 \-\-keep\-weekly=4
|
2017-02-05 13:22:06 +00:00
|
|
|
|
|
|
|
# Same as above but only apply to archive names starting with the hostname
|
2022-09-10 14:03:27 +00:00
|
|
|
# of the machine followed by a \(dq\-\(dq character:
|
2022-07-03 23:21:50 +00:00
|
|
|
$ borg prune \-v \-\-list \-\-keep\-daily=7 \-\-keep\-weekly=4 \-a \(aq{hostname}\-*\(aq
|
2018-07-12 20:00:19 +00:00
|
|
|
# actually free disk space:
|
2022-06-23 23:19:19 +00:00
|
|
|
$ borg compact
|
2017-02-05 13:22:06 +00:00
|
|
|
|
|
|
|
# Keep 7 end of day, 4 additional end of week archives,
|
|
|
|
# and an end of month archive for every month:
|
2022-06-23 23:19:19 +00:00
|
|
|
$ borg prune \-v \-\-list \-\-keep\-daily=7 \-\-keep\-weekly=4 \-\-keep\-monthly=\-1
|
2017-02-05 13:22:06 +00:00
|
|
|
|
|
|
|
# Keep all backups in the last 10 days, 4 additional end of week archives,
|
|
|
|
# and an end of month archive for every month:
|
2022-06-23 23:19:19 +00:00
|
|
|
$ borg prune \-v \-\-list \-\-keep\-within=10d \-\-keep\-weekly=4 \-\-keep\-monthly=\-1
|
2017-11-25 13:38:04 +00:00
|
|
|
.ft P
|
|
|
|
.fi
|
|
|
|
.UNINDENT
|
|
|
|
.UNINDENT
|
|
|
|
.sp
|
2018-07-12 20:00:19 +00:00
|
|
|
There is also a visualized prune example in \fBdocs/misc/prune\-example.txt\fP\&.
|
2017-02-05 13:22:06 +00:00
|
|
|
.SH SEE ALSO
|
|
|
|
.sp
|
2018-07-12 20:00:19 +00:00
|
|
|
\fIborg\-common(1)\fP, \fIborg\-compact(1)\fP
|
2017-02-05 13:22:06 +00:00
|
|
|
.SH AUTHOR
|
|
|
|
The Borg Collective
|
|
|
|
.\" Generated by docutils manpage writer.
|
|
|
|
.
|