View on GitHub

rsync-backup

versatile rsync based backup scripts with minimal dependencies

Download this project as a .zip file Download this project as a tar.gz file

BACKUP-SOURCES


NAME

backup-sources - create a new backup directory from backup sources

SYNOPSIS

backup-sources

[<RSYNC-OPTION>]...

backup-sources

<OPTION>...

DESCRIPTION

Read backup sources from configuration files and create a new backup directory from the backup sources using rsync(1). For details, see the Files section and backup-create(1).

The newly created backup directory is named according to the backup date and time and is a full backup directory containing direct (but possible filtered) copies of original files and directories. It can thus be accessed and restored directly.

OPTIONS

-h, --help[=<FORMAT>]

Show this help message and exit.

-V, --version

Show version information and exit.

Rsync options:
--verbose
, -v

increase verbosity

--info=FLAGS

fine-grained informational verbosity

--debug=FLAGS

fine-grained debug verbosity

--stderr=e|a|c

change stderr output mode (default: errors)

--quiet, -q

suppress non-error messages

--no-motd

suppress daemon-mode MOTD

--checksum, -c

skip based on checksum, not mod-time & size

--archive, -a

archive mode is -rlptgoD (no -A, -X, -U, -N, -H)

--no-OPTION

turn off an implied OPTION (e.g. --no-D)

--recursive, -r

recurse into directories

--relative, -R

use relative path names

--no-implied-dirs

don’t send implied dirs with --relative

--backup, -b

make backups (see --suffix & --backup-dir)

--backup-dir=DIR

make backups into hierarchy based in DIR

--suffix=SUFFIX

backup suffix (default ~ w/o --backup-dir)

--update, -u

skip files that are newer on the receiver

--inplace

update destination files in-place

--append

append data onto shorter files

--append-verify

​--append w/old data in file checksum

--dirs, -d

transfer directories without recursing

--old-dirs, --old-d

works like --dirs when talking to old rsync

--mkpath

create destination’s missing path components

--links, -l

copy symlinks as symlinks

--copy-links, -L

transform symlink into referent file/dir

--copy-unsafe-links

only "unsafe" symlinks are transformed

--safe-links

ignore symlinks that point outside the tree

--munge-links

munge symlinks to make them safe & unusable

--copy-dirlinks, -k

transform symlink to dir into referent dir

--keep-dirlinks, -K

treat symlinked dir on receiver as dir

--hard-links, -H

preserve hard links

--perms, -p

preserve permissions

--executability, -E

preserve executability

--chmod=CHMOD

affect file and/or directory permissions

--acls, -A

preserve ACLs (implies --perms)

--xattrs, -X

preserve extended attributes

--owner, -o

preserve owner (super-user only)

--group, -g

preserve group

--devices

preserve device files (super-user only)

--copy-devices

copy device contents as a regular file

--write-devices

write to devices as files (implies --inplace)

--specials

preserve special files

-D

same as --devices --specials

--times, -t

preserve modification times

--atimes, -U

preserve access (use) times

--open-noatime

avoid changing the atime on opened files

--crtimes, -N

preserve create times (newness)

--omit-dir-times, -O

omit directories from --times

--omit-link-times, -J

omit symlinks from --times

--super

receiver attempts super-user activities

--fake-super

store/recover privileged attrs using xattrs

--sparse, -S

turn sequences of nulls into sparse blocks

--preallocate

allocate dest files before writing them

--dry-run, -n

perform a trial run with no changes made

--whole-file, -W

copy files whole (w/o delta-xfer algorithm)

--checksum-choice=STR

choose the checksum algorithm (aka --cc)

--one-file-system, -x

don’t cross filesystem boundaries

--block-size=SIZE, -B

force a fixed checksum block-size

--rsh=COMMAND, -e

specify the remote shell to use

--rsync-path=PROGRAM

specify the rsync to run on remote machine

--existing

skip creating new files on receiver

--ignore-existing

skip updating files that exist on receiver

--remove-source-files

sender removes synchronized files (non-dir)

--del

an alias for --delete-during

--delete

delete extraneous files from dest dirs

--delete-before

receiver deletes before xfer, not during

--delete-during

receiver deletes during the transfer

--delete-delay

find deletions during, delete after

--delete-after

receiver deletes after transfer, not during

--delete-excluded

also delete excluded files from dest dirs

--ignore-missing-args

ignore missing source args without error

--delete-missing-args

delete missing source args from destination

--ignore-errors

delete even if there are I/O errors

--force

force deletion of dirs even if not empty

--max-delete=NUM

don’t delete more than NUM files

--max-size=SIZE

don’t transfer any file larger than SIZE

--min-size=SIZE

don’t transfer any file smaller than SIZE

--max-alloc=SIZE

change a limit relating to memory alloc

--partial

keep partially transferred files

--partial-dir=DIR

put a partially transferred file into DIR

--delay-updates

put all updated files into place at end

--prune-empty-dirs, -m

prune empty directory chains from file-list

--numeric-ids

don’t map uid/gid values by user/group name

--usermap=STRING

custom username mapping

--groupmap=STRING

custom groupname mapping

--chown=USER:GROUP

simple username/groupname mapping

--timeout=SECONDS

set I/O timeout in seconds

--contimeout=SECONDS

set daemon connection timeout in seconds

--ignore-times, -I

don’t skip files that match size and time

--size-only

skip files that match in size

--modify-window=NUM, -@

set the accuracy for mod-time comparisons

--temp-dir=DIR, -T

create temporary files in directory DIR

--fuzzy, -y

find similar file for basis if no dest file

--compare-dest=DIR

also compare destination files relative to DIR

--copy-dest=DIR

... and include copies of unchanged files

--link-dest=DIR

hardlink to files in DIR when unchanged

--compress, -z

compress file data during the transfer

--compress-choice=STR

choose the compression algorithm (aka --zc)

--compress-level=NUM

explicitly set compression level (aka --zl)

--skip-compress=LIST

skip compressing files with suffix in LIST

--cvs-exclude, -C

auto-ignore files in the same way CVS does

--filter=RULE, -f

add a file-filtering RULE

-F

same as --filter=’dir-merge /.rsync-filter’ repeated: --filter=’- .rsync-filter’

--exclude=PATTERN

exclude files matching PATTERN

--exclude-from=FILE

read exclude patterns from FILE

--include=PATTERN

don’t exclude files matching PATTERN

--include-from=FILE

read include patterns from FILE

--files-from=FILE

read list of source-file names from FILE

--from0, -0

all *-from/filter files are delimited by 0s

--old-args

disable the modern arg-protection idiom

--secluded-args, -s

use the protocol to safely send the args

--trust-sender

trust the remote sender’s file list

--copy-as=USER[:GROUP]

specify user & optional group for the copy

--address=ADDRESS

bind address for outgoing socket to daemon

--port=PORT

specify double-colon alternate port number

--sockopts=OPTIONS

specify custom TCP options

--blocking-io

use blocking I/O for the remote shell

--outbuf=N|L|B

set out buffering to None, Line, or Block

--stats

give some file-transfer stats

--8-bit-output, -8

leave high-bit chars unescaped in output

--human-readable, -h

output numbers in a human-readable format

--progress

show progress during transfer

-P

same as --partial --progress

--itemize-changes, -i

output a change-summary for all updates

--remote-option=OPT, -M

send OPTION to the remote side only

--out-format=FORMAT

output updates using the specified FORMAT

--log-file=FILE

log what we’re doing to the specified FILE

--log-file-format=FMT

log updates using the specified FMT

--password-file=FILE

read daemon-access password from FILE

--early-input=FILE

use FILE for daemon’s early exec input

--list-only

list the files instead of copying them

--bwlimit=RATE

limit socket I/O bandwidth

--stop-after=MINS

Stop rsync after MINS minutes have elapsed

--stop-at=y-m-dTh:m

Stop rsync at the specified point in time

--fsync

fsync every written file

--write-batch=FILE

write a batched update to FILE

--only-write-batch=FILE

like --write-batch but w/o updating dest

--read-batch=FILE

read a batched update from FILE

--protocol=NUM

force an older protocol version to be used

--iconv=CONVERT_SPEC

request charset conversion of filenames

--checksum-seed=NUM

set block/file checksum seed (advanced)

--ipv4, -4

prefer IPv4

--ipv6, -6

prefer IPv6

FILES

./<YEAR>

A yearly backup directory.

./<YEAR>[-]<MONTH>

A monthly backup directory.

./<YEAR>[-]W<WEEK>

A weekly backup directory.

./<YEAR>[-]<MONTH>[-]<DAY>

A daily backup directory.

./<YEAR>[-]W<WEEK>[-]<DAY>

A daily backup directory.

./<YEAR>[-]<MONTH>[-]<DAY>T<HOUR>

An hourly backup directory.

./<YEAR>[-]W<WEEK>[-]<DAY>T<HOUR>

An hourly backup directory.

./<YEAR>[-]<MONTH>[-]<DAY>T<HOUR>[:]<MINUTE>

A minutely backup directory.

./<YEAR>[-]W<WEEK>[-]<DAY>T<HOUR>[:]<MINUTE>

A minutely backup directory.

./<YEAR>[-]<MONTH>[-]<DAY>T<HOUR>[:]<MINUTE>[:]<SECOND>

A secondly backup directory.

./<YEAR>[-]W<WEEK>[-]<DAY>T<HOUR>[:]<MINUTE>[:]<SECOND>

A secondly backup directory.

./latest

A symbolic link to the latest backup directory.

./conf/backup-src-base

An optional configuration file containing the backup source base directory to be used to augment the backup sources specified in the conf/backup-src-list configuration file if the conf/backup-src-prefix configuration file does not exist. The file must contain a line having the following form:

<BASE-DIR>[/.[/]]

Empty lines and comment lines (starting with a "#") are allowed, too.

./conf/backup-src-host

An optional configuration file containing the backup source host to be used to augment the backup sources specified in the conf/backup-src-list configuration file if the conf/backup-src-prefix configuration file does not exist. The file must contain a line having the following form:

<HOST>

Empty lines and comment lines (starting with a "#") are allowed, too.

./conf/backup-src-list

A configuration file containing the backup sources to be copied to a newly created backup directory when creating a new backup. The file must contain operand lines having any the following forms:

<SRC>

A local source to be copied to a newly created backup directory.

<BASE-DIR>/./[<SRC>]

A local source to be copied to a newly created backup directory without the base directory.

[<USER>@]<HOST>:<SRC>

A remote shell source to be copied to a newly created backup directory.

[<USER>@]<HOST>:<BASE-DIR>/./[<SRC>]

A remote shell source to be copied to a newly created backup directory without the base directory.

[<USER>@]<HOST>::<MODULE>[/[<SRC>]]

An rsync daemon source to be copied to a newly created backup directory.

[<USER>@]<HOST>::<MODULE>/<BASE-DIR>/./[<SRC>]

An rsync daemon source to be copied to a newly created backup directory without the base directory.

rsync://[<USER>@]<HOST>[:<PORT>]/<MODULE>[/[<SRC>]]

An rsync daemon source to be copied to a newly created backup directory.

rsync://[<USER>@]<HOST>[:<PORT>]/<MODULE>/<BASE-DIR>/./[<SRC>]

An rsync daemon source to be copied to a newly created backup directory without the base directory.

These operands will be passed to the backup-create(1) tool. Empty lines and comment lines (starting with a "#") are allowed, too.

./conf/backup-src-list.d

An optional directory containing configuration files similar to the ./conf/backup-src-list configuration file containing the backup sources to be copied to a newly created backup directory when creating a new backup. The names of the files must consist of only characters matching the pattern [[:alnum:]_.-].

./conf/backup-src-module

An optional configuration file containing the backup source module to be used to augment the backup source host specified in the conf/backup-src-host configuration file and the backup sources specified in the conf/backup-src-list configuration file if the conf/backup-src-prefix configuration file does not exist. The file must contain a line having the following form:

<MODULE>

Empty lines and comment lines (starting with a "#") are allowed, too.

./conf/backup-src-port

An optional configuration file containing the backup source port to be used to augment the backup source host specified in the conf/backup-src-host configuration file, the backup source module specified in the conf/backup-src-module configuration file and the backup sources specified in the conf/backup-src-list configuration file if the conf/backup-src-prefix configuration file does not exist. The file must contain a line having the following form:

<PORT>

Empty lines and comment lines (starting with a "#") are allowed, too.

./conf/backup-src-prefix

An optional configuration file containing the backup source prefix to be used to augment the backup sources specified in the conf/backup-src-list configuration file. The file must contain a line having one of the following forms:

<BASE-DIR>[/.[/]]

A local base directory.

[<USER>@]<HOST>:[<BASE-DIR>[/.[/]]]

A remote shell host and an optional base directory.

[<USER>@]<HOST>::[<MODULE>[/<BASE-DIR>[/.[/]]]]

An rsync daemon host and an optional module and base directory.

<USER>@

A remote shell or an rsync daemon user.

rsync://[<USER>@]<HOST>[:<PORT>][/<MODULE>[/<BASE-DIR>[/.[/]]]]

An rsync daemon host and an optional module and base directory.

Empty lines and comment lines (starting with a "#") are allowed, too.

./conf/backup-src-user

An optional configuration file containing the backup source user to be used to augment the backup source host specified in the conf/backup-src-host configuration file and the backup sources specified in the conf/backup-src-list configuration file if the conf/backup-src-prefix configuration file does not exist. The file must contain a line having the following form:

<USER>

Empty lines and comment lines (starting with a "#") are allowed, too.

./conf/create-config

An optional configuration file used by backup-create-rsync(1) used by backup-create(1) containing long option names (without leading slashes) and optional option arguments to be passed to rsync(1) when creating a new backup directory.

./conf/create-config.d

An optional directory used by backup-create-rsync(1) used by backup-create(1) containing configuration files similar to the ./conf/create-config configuration file containing long option names (without leading slashes) and optional option arguments to be passed to rsync(1) when creating a new backup directory. The names of the files must consist of only characters matching the pattern [[:alnum:]_.-].

./conf/rsh

An optional script to be used as a remote shell instead of the plain ssh(1). This script can be used for setting identity files and proxy commands, for instance.

./conf/rsync-config

An optional configuration file used by backup-rsync(1) used by backup-copy-rsync(1) and backup-create-rsync(1) used by backup-copy(1) and backup-create(1) used by backup-mirror-sources(1) and backup-sources(1) containing long option names (without leading slashes) and optional option arguments to be passed to rsync(1).

./conf/rsync-config.d

An optional directory used by backup-rsync(1) used by backup-copy-rsync(1) and backup-create-rsync(1) used by backup-copy(1) and backup-create(1) used by backup-mirror-sources(1) and backup-sources(1) containing configuration files similar to the ./conf/rsync-config configuration file containing long option names (without leading slashes) and optional option arguments to be passed to rsync(1). The names of the files must consist of only characters matching the pattern [[:alnum:]_.-].

./conf/tag-formats

An optional configuration file used by backup-create(1) containing date formats to be used when constructing a backup directory name for a new backup. Empty lines and comment lines (starting with a "#") are allowed, too. Each date format is tried in turn in order specified until a non-existing backup directory is found.

./tmp/

A temporary directory to be used for creating a new backup directory.

./tools/backup-create

Used for creating a new backup directory from backup sources using rsync(1).

<SOURCE-DIRECTORY>/.backup-filter

An optional per-directory rsync(1) filter merge-file which can be used for excluding files from backups. Empty lines and comment lines (starting with a "#") are allowed, too.

COPYRIGHT

Copyright © 2010 - 2024 Eero Häkkinen <Eero+rsync-backup@Häkkinen.fi>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

SEE ALSO

backup(1), backup-create(1), backup-help(1)

rsync(1), ssh(1)
Home page