如何使用rsnapshot创建快速和可靠的备份

rsync. 可能是最常见的解决方案 备份Linux,因为它非常快,并增加增量 备份(在两个版本之间传输“仅差异” 文件),它在网络备份中非常有用。

但是,同步(同步)文件夹到备份设备,是 远非被认为是“备份”,因为它不会保持老 文件的版本。如上所述,用rsync解决了问题 the famous article 易于自动快照式备份 Linux and Rsync,由Mike Rubel。

rsnapshot. 使用rsync和此功能提供此功能 perl:

  • 基于设置(间隔)它创建文件夹(快照) 像每日,每日,每日,每日等等每周,每周,每周.1,每周2等 (保持每日备份7天,4周,六个月等)
  • 它用 硬盘链接 (必须得到支持 操作系统)对于未更改的文件 时间,为了消耗较少的磁盘空间
  • 它提供了一个非常友好的界面,其中包含所有文件 使用文件管理器使用快照(使还原 与任何其他备份解决方案相比,令人难以置信的简单)
  • 更改文件再次保存(不保存差异)。 从这个角度来看,它可以被视为差异备份 解决方案。但是,如果您丢失了快照,则下一个 包含丢失快照的硬链接,实际上是无用的 (增量备份解决方案中的典型情况)
  • 它简单,快速可靠

您不能使用带有rsnapshot的Amazon S3(或类似服务)。 这是一个显着的限制。在这种情况下,您可以使用 表里不一.

磁盘使用情况

确定rsnapshot中文件占用的实际空间 tree, using du (disk usage) as following:

du -csh /backup/rsnapshot/*

结果是:

254G    /store/backup_athena/rsnapshot/daily.0
26G       /store/backup_athena/rsnapshot/daily.1
18G       /store/backup_athena/rsnapshot/daily.10
494M    /store/backup_athena/rsnapshot/daily.11
643M    /store/backup_athena/rsnapshot/daily.12
545M    /store/backup_athena/rsnapshot/daily.13
9.5G    /store/backup_athena/rsnapshot/daily.2
9.3G    /store/backup_athena/rsnapshot/daily.3
9.4G    /store/backup_athena/rsnapshot/daily.4
9.5G    /store/backup_athena/rsnapshot/daily.5
728M    /store/backup_athena/rsnapshot/daily.6
646M    /store/backup_athena/rsnapshot/daily.7
761M    /store/backup_athena/rsnapshot/daily.8
561M    /store/backup_athena/rsnapshot/daily.9
40G       /store/backup_athena/rsnapshot/monthly.0
709M    /store/backup_athena/rsnapshot/weekly.0
718M    /store/backup_athena/rsnapshot/weekly.1
1.5G    /store/backup_athena/rsnapshot/weekly.2
382G    total

每日1文件夹包含每日的所有文件.0 难的 links and some even.

However, using du as following:

du -csh /backup/rsnapshot/daily.1

你会得到:

254G    /store/backup_athena/rsnapshot/daily.1
254G    total

安装rsnapshot.

debian / ubuntu.

sudo apt-get install rsnapshot

Redhat / Fedora.

yum install rsnapshot

archlinux.

pacman -S rsnapshot

配置RSNAPSHOT.

警告: 在 rsnapshot..conf. 参数及其值必须由选项卡分隔(例如cmd_cp→ / bin / cp)和没有空格。

实际上,基本设置是:

  • snapshot_root. 备份的磁盘上的位置 保存(快照树)
  • 间隔 保留了多少快照
  • 备份 哪些文件将备份

编辑配置文件:

nano /etc/rsnapshot.conf

配置(使用您自己的值):

#################################################
# rsnapshot.conf - rsnapshot configuration file #
#################################################
#                                               #
# PLEASE BE AWARE OF THE FOLLOWING RULE:        #
#                                               #
# This file requires tabs between elements      #
#                                               #
#################################################

#######################
# CONFIG FILE VERSION #
#######################

config_version  1.2

###########################
# SNAPSHOT ROOT DIRECTORY #
###########################

# All snapshots will be stored under this root directory.
#
snapshot_root   /store/rsnapshot/

# If no_create_root is enabled, rsnapshot will not automatically create the
# snapshot_root directory. This is particularly useful if you are backing
# up to removable media, such as a FireWire or USB drive.
#
no_create_root  1


#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################

#
# Please note that 'interval' directive is
# a deprecated alias for 'retain'
# so, instead of:
#
##interval      hourly  6
#interval       daily   14
#interval       weekly  4
#interval       monthly 6

#
# it is better to use:
#
#retain hourly  6
retain  daily   14
retain  weekly  4
retain  monthly 6


############################################
#              GLOBAL OPTIONS              #
# All are optional, with sensible defaults #
############################################

# Verbose level, 1 through 5.
# 1     Quiet           Print fatal errors only
# 2     Default         Print errors and warnings only
# 3     Verbose         Show equivalent shell commands being executed
# 4     Extra Verbose   Show extra verbose information
# 5     Debug mode      Everything
#
verbose     4

# Same as "verbose" above, but controls the amount of data sent to the
# logfile, if one is being used. The default is 3.
# If you want the rsync output, you have to set it to 4
#
loglevel    5

# If you enable this, data will be written to the file you specify. The
# amount of data written is controlled by the "loglevel" parameter.
#
logfile    /var/log/rsnapshot.log


###############################
### BACKUP POINTS / SCRIPTS ###
###############################

# LOCALHOST
backup  /home/  .
backup  /etc/   .
backup  /data/  .

...

排除文件

请阅读 rsync.文档 for:

--exclude=PATTERN       exclude files matching PATTERN
--exclude-from=FILE     read exclude patterns from FILE

您可以使用包含所有排除模式的文件:

############################################
#              GLOBAL OPTIONS              #
# All are optional, with sensible defaults #
############################################

# The include_file and exclude_file parameters, if enabled, simply get
# passed directly to rsync. Please look up the --include-from and
# --exclude-from options in the rsync man page for more details.
#

exclude_file   /path/to/exclude/file

但是,您可以为每个备份点定义排除排除。 Here is an example:

###############################
### BACKUP POINTS / SCRIPTS ###
###############################

backup  /etc/ ./  exclude=mtab
backup  /data/  ./ exclude=data/.Trash-1000,exclude=data/lost+found

远程rsnapshot备份

使用偏远股份并不是一个好主意 桑巴 或者 CIFS.。 rsnapshot不起作用 正确(rsync无法在这种情况下创建硬链接)。然而, you may use NFS. 挂载远程份额。

但是,常见的情况是使用 s for remote rsnapshot备份,使用 帐户。你必须使用 RSA密钥身份验证(在大多数情况下没有密码)。在 不受信任的网络没有暴露 account, use a 备份 用户具有高级权限(例如, modify sudoers file to permit rsync. command without 此用户的密码)。

你不能设置 snapshot_root. to a remote SSH 小路。换句话说,您无法将备份推向远程服务器。 您可以从远程服务器本地提取它们。

解释 cmd_ssh.rsnapshot..conf.

#################################
# EXTERNAL PROGRAM DEPENDENCIES #
#################################

# Uncomment this to enable remote ssh backups over rsync.
#
cmd_ssh /usr/bin/ssh

这是备份点的一个例子

###############################
### BACKUP POINTS / SCRIPTS ###
###############################

backup  [email protected]:/etc/ my-remote1/
backup  [email protected]:/data/    my-remote1/ exclude=data/.Trash-1000,exclude=data/lost+found

检查设置

用:

rsnapshot. configtest

如果没有错误

Syntax OK

干跑(测试)

rsnapshot. -t daily

运行rsnapshot.

要运行rsnapshot使用:

rsnapshot. hourly

或者

rsnapshot. daily

或者

rsnapshot. weekly

或者

rsnapshot. monthly

或上述组合。

可以调用这些命令

  • 通过脚本(与工作站更兼容)或
  • 通过Cron作业(与服务器更兼容,因为它们运行 continuously)

脚本示例

以下脚本执行:

  • rsnapshot. daily whenever called
  • rsnapshot. weekly 第一次完成完成 每日备份(基于rdaily间隔),然后每7次 which is executed
  • rsnapshot. monthly 首次完成完成 每日和每周备份(基于RDAILY和RWEEKLY 间隔)然后执行每30次执行

每当执行时,它会增加柜台 rsnapshot_counter文件。

脚本代码 - 麻省理工学院执照

#!/usr/bin/env bash

# parameters
rdaily=14
rweekly=4
rsnapshot_counter="/root/scripts/rsnapshot_counter"

# create rsnapshot counter if not exist
if [ ! -f $rsnapshot_counter ]; then echo "0" > $rsnapshot_counter; fi

# increase counter
rc=`cat $rsnapshot_counter`
rc=$(expr $rc + 1)
echo $rc > $rsnapshot_counter

# check for weekly intervals
tmp1=$(expr $rc - $rdaily)
if [ $tmp1 -ge 0 ]; then week_limit=$(expr $tmp1 % 7); else week_limit=-1; fi

# check for monthly intervals
tmp2=$(expr $rweekly - 1)
tmp3=$(expr $tmp2 \* 7)
tmp4=$(expr $tmp1 - $tmp3)
if [ $tmp4 -ge 0 ]; then month_limit=$(expr $tmp4 % 30); else month_limit=-1; fi

# run rsnapshot
rsnapshot daily
if [ $week_limit -eq 0 ]; then rsnapshot weekly; fi
if [ $month_limit -eq 0 ]; then rsnapshot monthly; fi

Cron工作示例

作为root,创建​​一个cron作业:

nano /etc/cron.d/rsnapshot

你可以使用

0 */4         * * *           root    /usr/bin/rsnapshot hourly
30 3          * * *           root    /usr/bin/rsnapshot daily
0  3          * * 1           root    /usr/bin/rsnapshot weekly
30 2          1 * *           root    /usr/bin/rsnapshot monthly

这些设置执行:

  • 每小时每小时rsnapshot每四个小时(从00:00开始)
  • 每天每天rsnapshot在3:30
  • 每周03:00周一每周rsnapshot
  • rsnapshot.每月每月1天在02:30每月

欢迎您的意见!

MediSign  -  ehr用于小医疗实践

EHR用于小医疗实践

病历。约会。电子发票。

每月9美元