제가 관리하는 백업 시스템이 처음부터 제대로 설정되지 않아서 이렇게 느린 것이 아닐까 싶습니다.
백업 대상: rsnapshot을 사용하여 NAS 스토리지(Terastation Buffalo NAS)에서 1GB 스위치를 통해 Ubuntu 시스템으로 매일 증분 백업을 수행했습니다.
질문: RSnapshopt는 하루 9시간씩 약 160GB의 데이터를 비교하는데 꽤 긴 시간처럼 느껴지지만 어떻게 될지 모르겠습니다.
세부 사항: rsnapshot은 cron에 의해 매일 호출됩니다.
rsnapshot.conf 파일이 기본 템플릿으로 나타납니다.
#######################
# CONFIG FILE VERSION #
#######################
config_version 1.2
###########################
# SNAPSHOT ROOT DIRECTORY #
###########################
# All snapshots will be stored under this root directory.
#
snapshot_root /srv/backups/
# 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
#################################
# EXTERNAL PROGRAM DEPENDENCIES #
#################################
# LINUX USERS: Be sure to uncomment "cmd_cp". This gives you extra features.
# EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility.
#
# See the README file or the man page for more details.
#
cmd_cp /bin/cp
# uncomment this to use the rm program instead of the built-in perl routine.
#
cmd_rm /bin/rm
# rsync must be enabled for anything to work. This is the only command that
# must be enabled.
#
cmd_rsync /usr/bin/rsync
# Comment this out to disable syslog support.
#
cmd_logger /usr/bin/logger
# Uncomment this to specify the path to "du" for disk usage checks.
# If you have an older version of "du", you may also want to check the
# "du_args" parameter below.
#
#cmd_du /usr/bin/du
# Uncomment this to specify the path to rsnapshot-diff.
#
cmd_rsnapshot_diff /usr/bin/rsnapshot-diff
#########################################
# BACKUP INTERVALS #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc. #
#########################################
interval daily 7
interval weekly 4
interval monthly 3
############################################
# 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 2
# Same as "verbose" above, but controls the amount of data sent to the
# logfile, if one is being used. The default is 3.
#
loglevel 3
# 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
# If enabled, rsnapshot will write a lockfile to prevent two instances
# from running simultaneously (and messing up the snapshot_root).
# If you enable this, make sure the lockfile directory is not world
# writable. Otherwise anyone can prevent the program from running.
#
lockfile /var/run/rsnapshot.pid
# Default rsync args. All rsync commands have at least these options set.
#
#rsync_short_args -a
#rsync_long_args --delete --numeric-ids --relative --delete-excluded
# Default arguments for the "du" program (for disk space reporting).
# The GNU version of "du" is preferred. See the man page for more details.
# If your version of "du" doesn't support the -h flag, try -k flag instead.
#
#du_args -csh
# 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.
#
#include_file /path/to/include/file
#exclude_file /path/to/exclude/file
# If your version of rsync supports --link-dest, consider enable this.
# This is the best way to support special files (FIFOs, etc) cross-platform.
# The default is 0 (off).
#
#link_dest 0
# When sync_first is enabled, it changes the default behaviour of rsnapshot.
# Normally, when rsnapshot is called with its lowest interval
# (i.e.: "rsnapshot hourly"), it will sync files AND rotate the lowest
# intervals. With sync_first enabled, "rsnapshot sync" handles the file sync,
# and all interval calls simply rotate files. See the man page for more
# details. The default is 0 (off).
#
#sync_first 0
# If enabled, rsnapshot will move the oldest directory for each interval
# to [interval_name].delete, then it will remove the lockfile and delete
# that directory just before it exits. The default is 0 (off).
#
#use_lazy_deletes 0
###############################
### BACKUP POINTS / SCRIPTS ###
###############################
# LOCALHOST
backup_script /usr/local/bin/backup_smb_share_All.sh All/
모든 backup_script "backup_smb_share_All.sh"에는 기본적으로 다음이 포함됩니다.
smbclient <hostname>/<share> -U<username>%<password> -Tc - 2>/dev/null | tar xf -
참고: 스크립트에 사용자 이름과 비밀번호를 하드코딩하는 것이 나쁜 습관이라는 것을 알고 있습니다.
이 스크립트에 대한 나의 이해는 다소 모호하지만 주로 로그인하고 "Tar" 설정을 구성하는 것 같습니다. 데이터를 복사하는 것 같은데 위 줄에서는 어떻게 구성되어 있는지 모르겠습니다.
로그(/var/logs/rsnapshot)를 보면 다음과 같은 일이 발생합니다.
[05/Jan/2015:02:43:47] mkdir -m 0755 -p /srv/backups/tmp/
[05/Jan/2015:02:43:47] cd /srv/backups/tmp/
[05/Jan/2015:02:43:47] /usr/local/bin/backup_smb_share_All.sh
[05/Jan/2015:04:44:15] cd /root/
[05/Jan/2015:04:44:15] sync_if_different("/srv/backups/tmp/", "/srv/backups/daily.0/All/")
[05/Jan/2015:13:43:25] /bin/rm -rf /srv/backups/tmp/
- 백업 스크립트가 합리적입니까?
- 보기에 병목 현상은 "sync_if_ Different"인데 이것이 Ubuntu 서버의 성능 제한일까요?
- 이러한 시스템에서 이 모든 것이 예상된 것입니까?