123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- .\" 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
- ..
- .TH "BORG-PRUNE" 1 "2023-09-14" "" "borg backup tool"
- .SH NAME
- borg-prune \- Prune repository archives according to specified rules
- .SH SYNOPSIS
- .sp
- borg [common options] prune [options]
- .SH DESCRIPTION
- .sp
- The prune command prunes a repository by deleting all archives not matching
- 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
- certain number of historic backups. This retention policy is commonly referred to as
- \fI\%GFS\fP
- (Grandfather\-father\-son) backup rotation scheme.
- .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
- comparing archive counts against the retention limits (\fB\-\-keep\-X\fP).
- .sp
- If you use \-\-match\-archives (\-a), then only archives that match the pattern are
- 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
- contents. These need to be distinguished by specifying matching globs.
- .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
- data set that matches only the respective archives using the \-\-match\-archives
- (\-a) option.
- .sp
- 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
- to keep all archives that were created within the past 48 hours.
- \(dq1m\(dq is taken to mean \(dq31d\(dq. The archives kept with this option do not
- 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.
- As an example, \fB\-\-keep\-daily 7\fP means to keep the latest backup on each day,
- 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
- 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
- aging until it is replaced by a newer archive that meets the retention criteria.
- .sp
- The \fB\-\-keep\-last N\fP option is doing the same as \fB\-\-keep\-secondly N\fP (and it will
- keep the last N archives under the assumption that you do not create more than one
- backup archive in the same second).
- .sp
- When using \fB\-\-stats\fP, you will get some statistics about how much data was
- deleted \- the \(dqDeleted data\(dq deduplicated size there is most interesting as
- that is how much your repository will shrink.
- Please note that the \(dqAll archives\(dq stats refer to the state after pruning.
- .sp
- You can influence how the \fB\-\-list\fP output is formatted by using the \fB\-\-short\fP
- option (less wide output) or by giving a custom format using \fB\-\-format\fP (see
- the \fBborg rlist\fP description for more details about the format string).
- .SH OPTIONS
- .sp
- See \fIborg\-common(1)\fP for common options of Borg commands.
- .SS options
- .INDENT 0.0
- .TP
- .B \-n\fP,\fB \-\-dry\-run
- do not change repository
- .TP
- .B \-\-force
- force pruning of corrupted archives, use \fB\-\-force \-\-force\fP in case \fB\-\-force\fP does not work.
- .TP
- .B \-s\fP,\fB \-\-stats
- print statistics for the deleted archive
- .TP
- .B \-\-list
- output verbose list of archives it keeps/prunes
- .TP
- .B \-\-short
- use a less wide archive part format
- .TP
- .B \-\-list\-pruned
- output verbose list of archives it prunes
- .TP
- .B \-\-list\-kept
- output verbose list of archives it keeps
- .TP
- .BI \-\-format \ FORMAT
- specify format for the archive part (default: \(dq{archive:<36} {time} [{id}]\(dq)
- .TP
- .BI \-\-keep\-within \ INTERVAL
- keep all archives within this time interval
- .TP
- .B \-\-keep\-last\fP,\fB \-\-keep\-secondly
- number of secondly archives to keep
- .TP
- .B \-\-keep\-minutely
- number of minutely archives to keep
- .TP
- .B \-H\fP,\fB \-\-keep\-hourly
- number of hourly archives to keep
- .TP
- .B \-d\fP,\fB \-\-keep\-daily
- number of daily archives to keep
- .TP
- .B \-w\fP,\fB \-\-keep\-weekly
- number of weekly archives to keep
- .TP
- .B \-m\fP,\fB \-\-keep\-monthly
- number of monthly archives to keep
- .TP
- .B \-y\fP,\fB \-\-keep\-yearly
- number of yearly archives to keep
- .TP
- .BI \-c \ SECONDS\fR,\fB \ \-\-checkpoint\-interval \ SECONDS
- write checkpoint every SECONDS seconds (Default: 1800)
- .UNINDENT
- .SS Archive filters
- .INDENT 0.0
- .TP
- .BI \-a \ PATTERN\fR,\fB \ \-\-match\-archives \ PATTERN
- only consider archive names matching the pattern. see \(dqborg help match\-archives\(dq.
- .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.
- .UNINDENT
- .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
- you restrict its operation to a subset of the archives using \fB\-a\fP / \fB\-\-match\-archives\fP\&.
- When using \fB\-a\fP, be careful to choose a good pattern \- e.g. do not use a
- prefix \(dqfoo\(dq if you do not also want to match \(dqfoobar\(dq.
- .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.
- $ borg prune \-v \-\-list \-\-dry\-run \-\-keep\-daily=7 \-\-keep\-weekly=4
- # Same as above but only apply to archive names starting with the hostname
- # of the machine followed by a \(dq\-\(dq character:
- $ borg prune \-v \-\-list \-\-keep\-daily=7 \-\-keep\-weekly=4 \-a \(aqsh:{hostname}\-*\(aq
- # actually free disk space:
- $ borg compact
- # Keep 7 end of day, 4 additional end of week archives,
- # and an end of month archive for every month:
- $ borg prune \-v \-\-list \-\-keep\-daily=7 \-\-keep\-weekly=4 \-\-keep\-monthly=\-1
- # Keep all backups in the last 10 days, 4 additional end of week archives,
- # and an end of month archive for every month:
- $ borg prune \-v \-\-list \-\-keep\-within=10d \-\-keep\-weekly=4 \-\-keep\-monthly=\-1
- .ft P
- .fi
- .UNINDENT
- .UNINDENT
- .sp
- There is also a visualized prune example in \fBdocs/misc/prune\-example.txt\fP\&.
- .SH SEE ALSO
- .sp
- \fIborg\-common(1)\fP, \fIborg\-compact(1)\fP
- .SH AUTHOR
- The Borg Collective
- .\" Generated by docutils manpage writer.
- .
|