原创

【快照】RedHat 使用Rsnapshot打快照

前言

最近搭建了仿真环境,在每次上线前需要在仿真上测试一次后再部署到生产。为此进行备份,方便后续的操作。

需要使用root权限安装

步骤

下载代码

因为是仿真环境,没有外网,所以需要下载代码到本地,本地再传到服务器上,下载地址:Rsnapshot git

安装

1.进入到目录中

$ cd /tmp/rsnapshot-master

2.授予执行权限

$ chmod +x *.sh

3. 执行生成脚本

$ ./autogen.sh
fatal: Not a git repository (or any of the parent directories): .git
**********
fatal: Not a git repository (or any of the parent directories): .git
configure.ac:2: installing './install-sh'
configure.ac:2: installing './missing'

4.执行configure

$ ./configure --sysconfdir=/etc
checking for a BSD-compatible install... /bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make sets $(MAKE)... (cached) yes
checking for perl... /bin/perl
checking for rsync... /bin/rsync
checking for cp... /bin/cp
checking for rm... /bin/rm
checking for ssh... /bin/ssh
checking for lvcreate... /sbin/lvcreate
checking for lvremove... /sbin/lvremove
checking for mount... /bin/mount
checking for umount... /bin/umount
checking for logger... /bin/logger
checking for du... /bin/du
checking for true... /bin/true
checking for false... /bin/false
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating rsnapshot
config.status: creating rsnapshot-diff
config.status: creating rsnapshot.conf.default
config.status: creating t/backup_exec/backup_exec.t
config.status: creating t/backup_exec/conf/backup_exec.conf
config.status: creating t/backup_exec/conf/backup_exec_fail.conf
config.status: creating t/backup_script/backup_script.t
config.status: creating t/backup_script/conf/backup_script.conf
config.status: creating t/backup_script/conf/backup_script_duplicate_dest_1.conf
config.status: creating t/backup_script/conf/backup_script_duplicate_dest_2.conf
config.status: creating t/cmd-post_pre-exec/cmd-post_pre-exec.t
config.status: creating t/cmd-post_pre-exec/conf/pre-false-post-false.conf
config.status: creating t/cmd-post_pre-exec/conf/pre-false-post-true.conf
config.status: creating t/cmd-post_pre-exec/conf/pre-true-post-false.conf
config.status: creating t/cmd-post_pre-exec/conf/pre-true-post-true.conf
config.status: creating t/configtest/conf/configtest.conf
config.status: creating t/configtest/configtest.t
config.status: creating t/gnu_cp/conf/gnu_cp.conf
config.status: creating t/gnu_cp/gnu_cp.t
config.status: creating t/link-dest_-t_when_only_one_snapshot/conf/link-dest_-t_when_only_one_snapshot.conf
config.status: creating t/link-dest_-t_when_only_one_snapshot/link-dest_-t_when_only_one_snapshot.t
config.status: creating t/long_and_short_args/conf/long_and_short_args.conf
config.status: creating t/long_and_short_args/conf/long_and_short_args_inline.conf
config.status: creating t/long_and_short_args/long_and_short_args.t
config.status: creating t/native_cp_al/conf/native_cp_al.conf
config.status: creating t/native_cp_al/native_cp_al.t
config.status: creating t/numtries/conf/numtries_fail_negative.conf
config.status: creating t/numtries/conf/numtries_fail_notanumber.conf
config.status: creating t/numtries/conf/numtries_fail_zero.conf
config.status: creating t/numtries/conf/numtries_ok.conf
config.status: creating t/numtries/numtries.t
config.status: creating t/relative_delete_bugfix/conf/relative_delete_bugfix.conf
config.status: creating t/relative_delete_bugfix/relative_delete_bugfix.t
config.status: creating t/rsnapshot_meta/rsnapshot_meta.t
config.status: creating t/rsync/conf/rsync.conf
config.status: creating t/rsync/rsync.t
config.status: creating t/rsync-exitcode/conf/rsync-exitcode-bad.conf
config.status: creating t/rsync-exitcode/conf/rsync-exitcode-good.conf
config.status: creating t/rsync-exitcode/rsync-exitcode.t
config.status: creating t/snapshot_root_with_space/conf/snapshot_root_with_space.conf
config.status: creating t/snapshot_root_with_space/snapshot_root_with_space.t
config.status: creating t/ssh_args/conf/ssh_args.conf
config.status: creating t/ssh_args/conf/ssh_args_inline.conf
config.status: creating t/ssh_args/ssh_args.t
config.status: creating t/SysWrap.pm

Now type  "make test"    to run the regression test suite.
Then type "make install" to install the program.

After rsnapshot is installed, don't forget to copy /rsnapshot.conf.default to /rsnapshot.conf

5.执行install

$ make install
pod2man -c 'rsnapshot-tools' -n 'rsnapshot' -r 'rsnapshot-tools' rsnapshot > rsnapshot.1
pod2man -c 'rsnapshot-tools' -n 'rsnapshot-diff' -r 'rsnapshot-tools' rsnapshot-diff > rsnapshot-diff.1
make[1]: Entering directory `/tmp/rsnapshot-master' /bin/mkdir -p '/usr/local/bin' /bin/install -c rsnapshot rsnapshot-diff '/usr/local/bin' /bin/mkdir -p '/etc' /bin/install -c -m 644 rsnapshot.conf.default '/etc' /bin/mkdir -p '/usr/local/share/man/man1' /bin/install -c -m 644 rsnapshot.1 rsnapshot-diff.1 '/usr/local/share/man/man1' make[1]: Leaving directory `/tmp/rsnapshot-master'

6.拷贝配置

$ cp /etc/rsnapshot.conf.default /etc/rsnapshot.conf

配置

默认的/etc/rsnapshot.conf,备份路径为/.snapshots/
备份的目录为:

backup  /home/          localhost/
backup  /etc/           localhost/
backup  /usr/local/     localhost/

按照需要调整

验证配置

 $ /usr/local/bin/rsnapshot configtest
 Syntax OK

测试打快照

$ rsnapshot -t alpha

echo 77877 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /.snapshots/ 
mkdir -m 0755 -p /.snapshots/alpha.0/ 
/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /home/crh/ /.snapshots/alpha.0/crh/ 
touch /.snapshots/alpha.0/

打一个快照

$ rsnapshot alpha

现在 /.snapshots/alpha.0这里就能看到你备份的数据了

兼容性问题

1. cp

请注意,如果cmd_cp被启用(并指向更高版本的gnu cp),并且GNU cp 是5.9版本或更高版本的,在使用rsnapshot 1.2.3及以下版本时将会出现问题,自rsnapshot 1.2.9以来,这不再是一个问题,因为它在运行cp时剥离了尾部的斜线。

如果您使用rsync 2.5.7 或更高版本,您可能需要在 rsnapshot.conf 文件中启用link_dest参数。

如果你运行的是Linux,但没有上述问题,你应该在rsnapshot.conf中启用cmd_cp参数(尤其是在你没有启用link_dest的情况下)。

请注意,目前 link_dest 不能很好地处理远程备份的主机(远程主机不可用link_dest的时候)。具体来说,如果远程主机link_dest 不可用,则该机器将没有最新备份,并且当它可用时将需要完全重新同步。应该使用其他方法,将保留最后一个良好的快照,从而避免重新同步的需要。我们希望在未来简化这一点。

帮助

如果需要使用帮助,可以使用man rsnapshots显示帮助信息

rsnapshot(1)                                                                                   rsnapshot-tools                                                                                  rsnapshot(1)

NAME
       rsnapshot - remote filesystem snapshot utility

SYNOPSIS
       rsnapshot [-vtxqVD] [-c cfgfile] [command] [args]

DESCRIPTION
       rsnapshot is a filesystem snapshot utility. It can take incremental snapshots of local and remote filesystems for any number of machines.

       Local filesystem snapshots are handled with rsync(1). Secure remote connections are handled with rsync over ssh(1), while anonymous rsync connections simply use an rsync server. Both remote and
       local transfers depend on rsync.

       rsnapshot saves much more disk space than you might imagine. The amount of space required is roughly the size of one full backup, plus a copy of each additional file that is changed. rsnapshot
       makes extensive use of hard links, so if the file doesn''t change, the next snapshot is simply a hard link to the exact same file.

       rsnapshot will typically be invoked as root by a cron job, or series of cron jobs. It is possible, however, to run as any arbitrary user with an alternate configuration file.

       All important options are specified in a configuration file, which is located by default at /etc/rsnapshot.conf. An alternate file can be specified on the command line. There are also additional
       options which can be passed on the command line.

       The command line options are as follows:

           -v verbose, show shell commands being executed

           -t test, show shell commands that would be executed

           -c path to alternate config file

           -x one filesystem, don''t cross partitions within each backup point

           -q quiet, suppress non-fatal warnings

           -V same as -v, but with more detail

           -D a firehose of diagnostic information

CONFIGURATION
       /etc/rsnapshot.conf is the default configuration file. All parameters in this file must be separated by tabs. /etc/rsnapshot.conf.default can be used as a reference.

       It is recommended that you copy /etc/rsnapshot.conf.default to /etc/rsnapshot.conf, and then modify /etc/rsnapshot.conf to suit your needs.

       Long lines may be split over several lines.  "Continuation" lines must begin with a space or a tab character.  Continuation lines will have all leading and trailing whitespace stripped off, and
       then be appended with an intervening tab character to the previous line when the configuration file is parsed.

       Here is a list of allowed parameters:

           config_version     Config file version (required). Default is 1.2

           snapshot_root      Local filesystem path to save all snapshots

           include_conf       Include another file in the configuration at this point.

               This is recursive, but you may need to be careful about paths when specifying which file to include.  We check to see if the file you have specified is readable, and will yell an error if
               it isn''t.  We recommend using a full path.  As a special case, include_conf''s value may be enclosed in `backticks` in which case it will be executed and whatever it spits to STDOUT will be
               included in the configuration.  Note that shell meta-characters may be interpreted.

           no_create_root     If set to 1, rsnapshot won''t create snapshot_root directory

           cmd_rsync          Full path to rsync (required)

           cmd_ssh            Full path to ssh (optional)

           cmd_cp             Full path to cp  (optional, but must be GNU version)

               If you are using Linux, you should uncomment cmd_cp. If you are using a platform which does not have GNU cp, you should leave cmd_cp commented out.

               With GNU cp, rsnapshot can take care of both normal files and special files (such as FIFOs, sockets, and block/character devices) in one pass.

               If cmd_cp is disabled, rsnapshot will use its own built-in function, native_cp_al() to backup up regular files and directories. This will then be followed up by a separate call to rsync, to
               move the special files over (assuming there are any).

           cmd_rm             Full path to rm (optional)

           cmd_logger         Full path to logger (optional, for syslog support)

           cmd_du             Full path to du (optional, for disk usage reports)

           cmd_rsnapshot_diff Full path to rsnapshot-diff (optional)

           cmd_preexec

               Full path (plus any arguments) to preexec script (optional).  This script will run immediately before each backup operation (but not any rotations). If the execution fails, rsnapshot will
               stop immediately.

           cmd_postexec

               Full path (plus any arguments) to postexec script (optional).  This script will run immediately after each backup operation (but not any rotations). If the execution fails, rsnapshot will
               stop immediately.

           linux_lvm_cmd_lvcreate

           linux_lvm_cmd_lvremove

           linux_lvm_cmd_mount

           linux_lvm_cmd_umount

               Paths to lvcreate, lvremove, mount and umount commands, for use with Linux LVMs.  You may include options to the commands also.  The lvcreate, lvremove, mount and umount commands are
               required for managing snapshots of LVM volumes and are otherwise optional.

           retain             [name]   [number]

               "name" refers to the name of this backup level (e.g., alpha, beta, so also called the ''interval''). "number" is the number of snapshots for this type of interval that will be retained.  The
               value of "name" will be the command passed to rsnapshot to perform this type of backup.

               A deprecated alias for ''retain'' is ''interval''.

               Example: retain alpha 6

               [root@localhost]# rsnapshot alpha

               For this example, every time this is run, the following will happen:

               <snapshot_root>/alpha.5/ will be deleted, if it exists.

               <snapshot_root>/alpha.{1,2,3,4} will all be rotated +1, if they exist.

               <snapshot_root>/alpha.0/ will be copied to <snapshot_root>/alpha.1/ using hard links.

               Each backup point (explained below) will then be rsynced to the corresponding directories in <snapshot_root>/alpha.0/

               Backup levels must be specified in the config file in order, from most frequent to least frequent. The first entry is the one which will be synced with the backup points. The subsequent
               backup levels (e.g., beta, gamma, etc) simply rotate, with each higher backup level pulling from the one below it for its .0 directory.

               Example:

                   retain  alpha 6

                   retain  beta  7

                   retain  gamma 4

               beta.0/ will be moved from alpha.5/, and gamma.0/ will be moved from beta.6/

               alpha.0/ will be rsynced directly from the filesystem.

           link_dest           1

               If your version of rsync supports --link-dest (2.5.7 or newer), you can enable this to let rsync handle some things that GNU cp or the built-in subroutines would otherwise do. Enabling this
               makes rsnapshot take a slightly more complicated code branch, but it''s the best way to support special files on non-Linux systems.

           sync_first          1

               sync_first changes the behaviour of rsnapshot. When this is enabled, all calls to rsnapshot with various backup levels simply rotate files. All backups are handled by calling rsnapshot with
               the "sync" argument. The synced files are stored in a ".sync" directory under the snapshot_root.

               This allows better recovery in the event that rsnapshot is interrupted in the middle of a sync operation, since the sync step and rotation steps are separated. This also means that you can
               easily run "rsnapshot sync" on the command line without fear of forcing all the other directories to rotate up.  This benefit comes at the cost of one more snapshot worth of disk space.
               The default is 0 (off).

           verbose             2

               The amount of information to print out when the program is run. Allowed values are 1 through 5. The default is 2.

                   1        Quiet            Show fatal errors only
                   2        Default          Show warnings and errors
                   3        Verbose          Show equivalent shell commands being executed
                   4        Extra Verbose    Same as verbose, but with more detail
                   5        Debug            All kinds of information

           loglevel            3

               This number means the same thing as verbose above, but it determines how much data is written to the logfile, if one is being written.

           logfile             /var/log/rsnapshot

               Full filesystem path to the rsnapshot log file. If this is defined, a log file will be written, with the amount of data being controlled by loglevel. If this is commented out, no log file
               will be written.

           include             [file-name-pattern]

               This gets passed directly to rsync using the --include directive. This parameter can be specified as many times as needed, with one pattern defined per line. See the rsync(1) man page for
               the syntax.

           exclude             [file-name-pattern]

               This gets passed directly to rsync using the --exclude directive. This parameter can be specified as many times as needed, with one pattern defined per line. See the rsync(1) man page for
               the syntax.

           include_file        /path/to/include/file

               This gets passed directly to rsync using the --include-from directive. See the rsync(1) man page for the syntax.

           exclude_file        /path/to/exclude/file

               This gets passed directly to rsync using the --exclude-from directive. See the rsync(1) man page for the syntax.

           rsync_short_args    -a

               List of short arguments to pass to rsync. If not specified, "-a" is the default. Please note that these must be all next to each other.  For example, "-az" is valid, while "-a -z" is not.

               "-a" is rsync''s "archive mode" which tells it to copy as much of the filesystem metadata as it can for each file.  This specifically does *not* include information about hard links, as that
               would greatly increase rsync''s memory usage and slow it down.  If you need to preserve hard links in your backups, then add "H" to this.

           rsync_long_args     --delete --numeric-ids --relative --delete-excluded

               List of long arguments to pass to rsync.  The default values are
                   --delete --numeric-ids --relative --delete-excluded This means that the directory structure in each backup point destination will match that in the backup point source.

               Quotes are permitted in rsync_long_args, eg --rsync-path="sudo /usr/bin/rsync". You may use either single ('') or double (") quotes, but nested quotes (including mixed nested quotes) are
               not permitted.  Similar quoting is also allowed in per-backup-point rsync_long_args.

           ssh_args    -p 22

               Arguments to be passed to ssh. If not specified, the default is none.

           du_args     -csh

               Arguments to be passed to du. If not specified, the default is -csh.  GNU du supports -csh, BSD du supports -csk, Solaris du doesn''t support -c at all. The GNU version is recommended, since
               it offers the most features.

           lockfile    /var/run/rsnapshot.pid

           stop_on_stale_lockfile   0

               Lockfile to use when rsnapshot is run. This prevents a second invocation from clobbering the first one. If not specified, no lock file is used.  Make sure to use a directory that is not
               world writeable for security reasons.  Use of a lock file is strongly recommended.

               If a lockfile exists when rsnapshot starts, it will try to read the file and stop with an error if it can''t.  If it *can* read the file, it sees if a process exists with the PID noted in
               the file.  If it does, rsnapshot stops with an error message.  If there is no process with that PID, then we assume that the lockfile is stale and ignore it *unless* stop_on_stale_lockfile
               is set to 1 in which case we stop.

               stop_on_stale_lockfile defaults to 0.

           one_fs    1

               Prevents rsync from crossing filesystem partitions. Setting this to a value of 1 enables this feature. 0 turns it off. This parameter is optional.  The default is 0 (off).

           use_lazy_deletes    1

               Changes default behavior of rsnapshot and does not initially remove the oldest snapshot. Instead it moves that directory to _delete.[processid] and continues as normal. Once the backup has
               been completed, the lockfile will be removed before rsnapshot starts deleting the directory.

               Enabling this means that snapshots get taken sooner (since the delete doesn''t come first), and any other rsnapshot processes are allowed to start while the final delete is happening. This
               benefit comes at the cost of using more disk space. The default is 0 (off).

               The details of how this works have changed in rsnapshot version 1.3.1.  Originally you could only ever have one .delete directory per backup level.  Now you can have many, so if your next
               (eg) alpha backup kicks off while the previous one is still doing a lazy delete you may temporarily have extra _delete directories hanging around.

           linux_lvm_snapshotsize    2G

               LVM snapshot(s) size (lvcreate --size option).

           linux_lvm_snapshotname  rsnapshot

               Name to be used when creating the LVM logical volume snapshot(s) (lvcreate --name option).

           linux_lvm_vgpath         /dev

               Path to the LVM Volume Groups.

           linux_lvm_mountpath      /mnt/lvm-snapshot

               Mount point to use to temporarily mount the snapshot(s).

           backup  /etc/                       localhost/

           backup  root@example.com:/etc/      example.com/

           backup  rsync://example.com/path2/  example.com/

           backup  /var/                       localhost/      one_fs=1

           backup  lvm://vg0/home/path2/       lvm-vg0/

           backup_script   /usr/local/bin/backup_pgsql.sh    pgsql_backup/

               Examples:

               backup   /etc/        localhost/

                   Backs up /etc/ to <snapshot_root>/<retain>.0/localhost/etc/ using rsync on the local filesystem

               backup   /usr/local/  localhost/

                   Backs up /usr/local/ to <snapshot_root>/<retain>.0/localhost/usr/local/ using rsync on the local filesystem

               backup   root@example.com:/etc/       example.com/

                   Backs up root@example.com:/etc/ to <snapshot_root>/<retain>.0/example.com/etc/ using rsync over ssh

               backup   example.com:/etc/       example.com/

                   Same thing but let ssh choose the remote username (as specified in ~/.ssh/config, otherwise the same as the local username)

               backup   root@example.com:/usr/local/ example.com/

                   Backs up root@example.com:/usr/local/ to <snapshot_root>/<retain>.0/example.com/usr/local/ using rsync over ssh

               backup   rsync://example.com/pub/      example.com/pub/

                   Backs up rsync://example.com/pub/ to <snapshot_root>/<retain>.0/example.com/pub/ using an anonymous rsync server. Please note that unlike backing up local paths and using rsync over
                   ssh, rsync servers have "modules", which are top level directories that are exported. Therefore, the module should also be specified in the destination path, as shown in the example
                   above (the pub/ directory at the end).

               backup   /var/     localhost/   one_fs=1

                   This is the same as the other examples, but notice the fourth column.  This is how you specify per-backup-point options to over-ride global settings.  This extra parameter can take
                   several options, separated by commas.

                   It is most useful when specifying per-backup rsync excludes thus:

                   backup  root@somehost:/  somehost   +rsync_long_args=--exclude=/var/spool/

                   Note the + sign.  That tells rsync_long_args to add to the list of arguments to pass to rsync instead of replacing the list. The + sign is only supported for rsnapshot''s rsync_long_args
                   and rsync_short_args.

               backup  lvm://vg0/home/path2/       lvm-vg0/

                   Backs up the LVM logical volume called home, of volume group vg0, to <snapshot_root>/<retain>.0/lvm-vg0/. Will create, mount, backup, unmount and remove an LVM snapshot for each lvm://
                   entry.

               backup_script      /usr/local/bin/backup_database.sh   db_backup/

                   In this example, we specify a script or program to run. This script should simply create files and/or directories in its current working directory. rsnapshot will then take that output
                   and move it into the directory specified in the third column.

                   Please note that whatever is in the destination directory will be completely deleted and recreated. For this reason, rsnapshot prevents you from specifying a destination directory for a
                   backup_script that will clobber other backups.

                   So in this example, say the backup_database.sh script simply runs a command like:

                       #!/bin/sh

                       mysqldump -uusername mydatabase > mydatabase.sql

                       chmod u=r,go= mydatabase.sql  # r-------- (0400)

                   rsnapshot will take the generated "mydatabase.sql" file and move it into the <snapshot_root>/<retain>.0/db_backup/ directory. On subsequent runs, rsnapshot checks the differences
                   between the files created against the previous files. If the backup script generates the same output on the next run, the files will be hard linked against the previous ones, and no
                   additional disk space will be taken up.

               backup_exec      ssh root@1.2.3.4 "du -sh /.offsite_backup"                     optional

               backup_exec      rsync -az /.snapshots/daily.0 root@1.2.3.4:/.offsite_backup/   required

               backup_exec      /bin/true/

                   backup_exec simply runs the command listed. The second argument is not required and defaults to a value of ''optional''. It specifies the importance that the command return 0. Valid
                   values are ''optional'' and ''required''. If the command is specified as optional, a non-zero exit status from the command will result in a warning message being output. If the command is
                   specified as ''required'', a non-zero exit status from the command will result in an error message being output and rsnapshot itself will exit with a non-zero exit status.

           Remember that tabs must separate all elements, and that there must be a trailing slash on the end of every directory.

           A hash mark (#) on the beginning of a line is treated as a comment.

           Putting it all together (an example file):

               # THIS IS A COMMENT, REMEMBER TABS MUST SEPARATE ALL ELEMENTS

               config_version  1.2

               snapshot_root   /.snapshots/

               cmd_rsync           /usr/bin/rsync
               cmd_ssh             /usr/bin/ssh
               #cmd_cp             /bin/cp
               cmd_rm              /bin/rm
               cmd_logger          /usr/bin/logger
               cmd_du              /usr/bin/du

               linux_lvm_cmd_lvcreate        /sbin/lvcreate
               linux_lvm_cmd_lvremove        /sbin/lvremove
               linux_lvm_cmd_mount           /bin/mount
               linux_lvm_cmd_umount          /bin/umount

               linux_lvm_snapshotsize    2G
               linux_lvm_snapshotname    rsnapshot
               linux_lvm_vgpath          /dev
               linux_lvm_mountpath       /mnt/lvm-snapshot

               retain              alpha  6
               retain              beta   7
               retain              gamma  7
               retain              delta 3

               backup              /etc/                     localhost/
               backup              /home/                    localhost/
               backup_script       /usr/local/bin/backup_mysql.sh  mysql_backup/

               backup              root@foo.com:/etc/        foo.com/
               backup              root@foo.com:/home/       foo.com/
               backup              root@mail.foo.com:/home/  mail.foo.com/
               backup              rsync://example.com/pub/  example.com/pub/
               backup              lvm://vg0/xen-home/       lvm-vg0/xen-home/
               backup_exec         echo "backup finished!"

USAGE
       rsnapshot can be used by any user, but for system-wide backups you will probably want to run it as root.

       Since backups usually get neglected if human intervention is required, the preferred way is to run it from cron.

       When you are first setting up your backups, you will probably also want to run it from the command line once or twice to get a feel for what it''s doing.

       Here is an example crontab entry, assuming that backup levels alpha, beta, gamma and delta have been defined in /etc/rsnapshot.conf

           0 */4 * * *         /usr/local/bin/rsnapshot alpha

           50 23 * * *         /usr/local/bin/rsnapshot beta

           40 23 * * 6         /usr/local/bin/rsnapshot gamma

           30 23 1 * *         /usr/local/bin/rsnapshot delta

       This example will do the following:

           6 alpha backups a day (once every 4 hours, at 0,4,8,12,16,20)

           1 beta backup every day, at 11:50PM

           1 gamma backup every week, at 11:40PM, on Saturdays (6th day of week)

           1 delta backup every month, at 11:30PM on the 1st day of the month

       It is usually a good idea to schedule the larger backup levels to run a bit before the lower ones. For example, in the crontab above, notice that "beta" runs 10 minutes before "alpha".  The main
       reason for this is that the beta rotate will pull out the oldest alpha and make that the youngest beta (which means that the next alpha rotate will not need to delete the oldest alpha), which is
       more efficient.  A secondary reason is that it is harder to predict how long the lowest backup level will take, since it needs to actually do an rsync of the source as well as the rotate that all
       backups do.

       If rsnapshot takes longer than 10 minutes to do the "beta" rotate (which usually includes deleting the oldest beta snapshot), then you should increase the time between the backup levels.  Otherwise
       (assuming you have set the lockfile parameter, as is recommended) your alpha snapshot will fail sometimes because the beta still has the lock.

       Remember that these are just the times that the program runs.  To set the number of backups stored, set the retain numbers in /etc/rsnapshot.conf

       To check the disk space used by rsnapshot, you can call it with the "du" argument.

       For example:

           rsnapshot du

       This will show you exactly how much disk space is taken up in the snapshot root. This feature requires the UNIX du command to be installed on your system, for it to support the "-csh" command line
       arguments, and to be in your path. You can also override your path settings and the flags passed to du using the cmd_du and du_args parameters.

       It is also possible to pass a relative file path as a second argument, to get a report on a particular file or subdirectory.

           rsnapshot du localhost/home/

       The GNU version of "du" is preferred. The BSD version works well also, but does not support the -h flag (use -k instead, to see the totals in kilobytes). Other versions of "du", such as Solaris,
       may not work at all.

       To check the differences between two directories, call rsnapshot with the "diff" argument, followed by two backup levels or directory paths.

       For example:

           rsnapshot diff beta.0 beta.1

           rsnapshot diff beta.0/localhost/etc beta.1/localhost/etc

           rsnapshot diff /.snapshots/beta.0 /.snapshots/beta.1

       This will call the rsnapshot-diff program, which will scan both directories looking for differences (based on hard links).

       rsnapshot sync

           When sync_first is enabled, rsnapshot must first be called with the sync argument, followed by the other usual cron entries. The sync should happen as the lowest, most frequent backup level,
           and right before. For example:

               0 */4 * * *         /usr/local/bin/rsnapshot sync && /usr/local/bin/rsnapshot alpha

               50 23 * * *         /usr/local/bin/rsnapshot beta

               40 23 1,8,15,22 * * /usr/local/bin/rsnapshot gamma

               30 23 1 * *         /usr/local/bin/rsnapshot delta

           The sync operation simply runs rsync and all backup scripts. In this scenario, all calls simply rotate directories, even the lowest backup level.

       rsnapshot sync [dest]

           When sync_first is enabled, all sync behaviour happens during an additional sync step (see above). When using the sync argument, it is also possible to specify a backup point destination as an
           optional parameter. If this is done, only backup points sharing that destination path will be synced.

           For example, let''s say that example.com is a destination path shared by one or more of your backup points.

               rsnapshot sync example.com

           This command will only sync the files that normally get backed up into example.com.  It will NOT get any other backup points with slightly different values (like example.com/etc/, for example).
           In order to sync example.com/etc, you would need to run rsnapshot again, using example.com/etc as the optional parameter.

       rsnapshot configtest

           Do a quick sanity check to make sure everything is ready to go.

EXIT VALUES
           0  All operations completed successfully

           1  A fatal error occurred

           2  Some warnings occurred, but the backup still finished

FILES
       /etc/rsnapshot.conf

SEE ALSO
       rsync(1), ssh(1), logger(1), sshd(1), ssh-keygen(1), perl(1), cp(1), du(1), crontab(1)

DIAGNOSTICS
       Use the -t flag to see what commands would have been executed. This will show you the commands rsnapshot would try to run. There are a few minor differences (for example, not showing an attempt to
       remove the lockfile because it wasn''t really created in the test), but should give you a very good idea what will happen.

       Using the -v, -V, and -D flags will print increasingly more information to STDOUT.

       Make sure you don''t have spaces in the config file that you think are actually tabs.

       Much other weird behavior can probably be attributed to plain old file system permissions and ssh authentication issues.

BUGS
       Please report bugs (and other comments) to the rsnapshot-discuss mailing list:

       http://lists.sourceforge.net/lists/listinfo/rsnapshot-discuss

NOTES
       Make sure your /etc/rsnapshot.conf file has all elements separated by tabs.  See /etc/rsnapshot.conf.default for a working example file.

       Make sure you put a trailing slash on the end of all directory references.  If you don''t, you may have extra directories created in your snapshots.  For more information on how the trailing slash
       is handled, see the rsync(1) manpage.

       Make sure to make the snapshot directory chmod 700 and owned by root (assuming backups are made by the root user). If the snapshot directory is readable by other users, they will be able to modify
       the snapshots containing their files, thus destroying the integrity of the snapshots.

       If you would like regular users to be able to restore their own backups, there are a number of ways this can be accomplished. One such scenario would be:

       Set snapshot_root to /.private/.snapshots in /etc/rsnapshot.conf

       Set the file permissions on these directories as follows:

           drwx------ /.private

           drwxr-xr-x    /.private/.snapshots

       Export the /.private/.snapshots directory over read-only NFS, a read-only Samba share, etc.

       See the rsnapshot HOWTO for more information on making backups accessible to non-privileged users.

       For ssh to work unattended through cron, you will probably want to use public key logins. Create an ssh key with no passphrase for root, and install the public key on each machine you want to
       backup. If you are backing up system files from remote machines, this probably means unattended root logins. Another possibility is to create a second user on the machine just for backups. Give the
       user a different name such as "rsnapshot", but keep the UID and GID set to 0, to give root privileges. However, make logins more restrictive, either through ssh configuration, or using an alternate
       shell.

       BE CAREFUL! If the private key is obtained by an attacker, they will have free run of all the systems involved. If you are unclear on how to do this, see ssh(1), sshd(1), and ssh-keygen(1).

       Backup scripts are run as the same user that rsnapshot is running as.  Typically this is root. Make sure that all of your backup scripts are only writable by root, and that they don''t call any
       other programs that aren''t owned by root. If you fail to do this, anyone who can write to the backup script or any program it calls can fully take over the machine. Of course, this is not a
       situation unique to rsnapshot.

       By default, rsync transfers are done using the --numeric-ids option. This means that user names and group names are ignored during transfers, but the UID/GID information is kept intact. The
       assumption is that the backups will be restored in the same environment they came from. Without this option, restoring backups for multiple heterogeneous servers would be unmanageable. If you are
       archiving snapshots with GNU tar, you may want to use the --numeric-owner parameter. Also, keep a copy of the archived system''s /etc/passwd and /etc/group files handy for the UID/GID to name
       mapping.

       If you remove backup points in the config file, the previously archived files under those points will permanently stay in the snapshots directory unless you remove the files yourself. If you want
       to conserve disk space, you will need to go into the <snapshot_root> directory and manually remove the files from the smallest backup level''s ".0" directory.

       For example, if you were previously backing up /home/ with a destination of localhost/, and alpha is your smallest backup level, you would need to do the following to reclaim that disk space:

           rm -rf <snapshot_root>/alpha.0/localhost/home/

       Please note that the other snapshots previously made of /home/ will still be using that disk space, but since the files are flushed out of alpha.0/, they will no longer be copied to the subsequent
       directories, and will thus be removed in due time as the rotations happen.

AUTHORS
       Mike Rubel - http://www.mikerubel.org/computers/rsync_snapshots/

       - Created the original shell scripts on which this project is based

       Nathan Rosenquist (nathan@rsnapshot.org)

       - Primary author and original maintainer of rsnapshot.

       David Cantrell (david@cantrell.org.uk)

       - Previous maintainer of rsnapshot
       - Wrote the rsnapshot-diff utility
       - Improved how use_lazy_deletes work so slow deletes don''t screw up the next backup at that backup level.

       David Keegel <djk@cybersource.com.au>

       - Previous rsnapshot maintainer
       - Fixed race condition in lock file creation, improved error reporting
       - Allowed remote ssh directory paths starting with "~/" as well as "/"
       - Fixed a number of other bugs and buglets

       Benedikt Heine <benedikt@heine.rocks>

       - Current rsnapshot maintainer

       Carl Wilhelm Soderstrom (chrome@real-time.com)

       - Created the RPM .spec file which allowed the RPM package to be built, among other things.

       Ted Zlatanov (tzz@lifelogs.com)

       - Added the one_fs feature, autoconf support, good advice, and much more.

       Ralf van Dooren (r.vdooren@snow.nl)

       - Added and maintains the rsnapshot entry in the FreeBSD ports tree.

       SlapAyoda

       - Provided access to his computer museum for software testing.

       Carl Boe (boe@demog.berkeley.edu)

       - Found several subtle bugs and provided fixes for them.

       Shane Leibling (shane@cryptio.net)

       - Fixed a compatibility bug in utils/backup_smb_share.sh

       Christoph Wegscheider (christoph.wegscheider@wegi.net)

       - Added (and previously maintained) the Debian rsnapshot package.

       Bharat Mediratta (bharat@menalto.com)

       - Improved the exclusion rules to avoid backing up the snapshot root (among other things).

       Peter Palfrader (weasel@debian.org)

       - Enhanced error reporting to include command line options.

       Nicolas Kaiser (nikai@nikai.net)

       - Fixed typos in program and man page

       Chris Petersen - (http://www.forevermore.net/)

           Added cwrsync permanent-share support

       Robert Jackson (RobertJ@promedicalinc.com)

           Added use_lazy_deletes feature

       Justin Grote (justin@grote.name)

           Improved rsync error reporting code

       Anthony Ettinger (apwebdesign@yahoo.com)

           Wrote the utils/mysqlbackup.pl script

       Sherman Boyd

           Wrote utils/random_file_verify.sh script

       William Bear (bear@umn.edu)

           Wrote the utils/rsnapreport.pl script (pretty summary of rsync stats)

       Eric Anderson (anderson@centtech.com)

           Improvements to utils/rsnapreport.pl.

       Alan Batie (alan@batie.org)

           Bug fixes for include_conf

       Dieter Bloms (dieter@bloms.de)

           Multi-line configuration options

       Henning Moll (newsScott@gmx.de)

           stop_on_stale_lockfile

       Ben Low (ben@bdlow.net)

           Linux LVM snapshot support

COPYRIGHT
       Copyright (C) 2003-2005 Nathan Rosenquist

       Portions Copyright (C) 2002-2007 Mike Rubel, Carl Wilhelm Soderstrom, Ted Zlatanov, Carl Boe, Shane Liebling, Bharat Mediratta, Peter Palfrader, Nicolas Kaiser, David Cantrell, Chris Petersen,
       Robert Jackson, Justin Grote, David Keegel, Alan Batie, Dieter Bloms, Henning Moll, Ben Low, Anthony Ettinger

       This man page is distributed under the same license as rsnapshot: the GPL (see below).

       This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the
       License, or (at your option) any later version.

       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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
       02110-1301 USA

rsnapshot-tools                                                                                  2023-03-28                                                                                     rsnapshot(1)

参考

RSnapshot ReadMe
Rsnapshot INSTALL

本文来自:【快照】RedHat 使用Rsnapshot打快照-小码农,转载请保留本条链接,感谢!

温馨提示:
本文最后更新于 2023年03月29日,已超过 395 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我
正文到此结束
本文目录