Rsnapshot (Rsync Based) - Usa ka Local/Remote File System Backup Utility para sa Linux


Ang rsnapshot usa ka bukas nga gigikanan nga lokal/hilit nga filesystem backup utility nga gisulat sa Perl nga lengguwahe nga nagpahimulos sa gahum sa Rsync ug SSH nga programa sa paghimo, naka-iskedyul nga incremental backup sa Linux/Unix filesystems, samtang nagkuha lamang sa wanang sa usa ka bug-os nga backup ug mga kalainan. ug itago kana nga mga backup sa lokal nga drive sa lainlaing hard drive, usa ka external USB stick, usa ka NFS mounted drive o yano sa network sa lain nga makina pinaagi sa SSH.

Ipakita sa kini nga artikulo kung giunsa ang pag-install, pag-setup ug paggamit sa rsnapshot aron makamugna ang mga incremental nga oras-oras, adlaw-adlaw, sinemana ug binulan nga lokal nga pag-backup, ingon man mga hilit nga pag-backup. Aron mahimo ang tanan nga mga lakang sa kini nga artikulo, kinahanglan ka nga root user.

Lakang 1: Pag-instalar sa Rsnapshot Backup sa Linux

Ang pag-instalar sa rsnapshot gamit ang Yum ug APT mahimong magkalahi og gamay, kung naggamit ka sa Red Hat ug Debian based distributions.

Una kinahanglan nimo nga i-install ug i-enable ang third-party nga repository nga gitawag og EPEL. Palihug sundan ang link sa ubos aron ma-install ug ma-enable ubos sa imong RHEL/CentOS system. Ang mga tiggamit sa Fedora wala magkinahanglan og bisan unsang espesyal nga pag-configure sa repository.

  1. I-install ug I-enable ang EPEL Repository sa RHEL/CentOS 6/5/4

Sa higayon nga ma-setup na nimo ang mga butang, i-install ang rsnapshot gikan sa command line sama sa gipakita.

# yum install rsnapshot

Sa kasagaran, ang rsnapshot gilakip sa mga repositoryo sa Ubuntu, aron ma-install nimo kini gamit ang apt-get command sama sa gipakita.

# apt-get install rsnapshot

Lakang 2: Pag-set up sa SSH Password-less Login

Sa pag-backup sa hilit nga mga server sa Linux, ang imong rsnapshot backup server makahimo sa pagkonektar pinaagi sa SSH nga walay password. Aron mahimo kini, kinahanglan nimo nga maghimo usa ka SSH nga publiko ug pribado nga mga yawe aron mapamatud-an sa rsnapshot server. Palihug sundan ang link sa ubos aron makamugna og publiko ug pribado nga mga yawe sa imong rsnapshot backup server.

  1. Paghimo og SSH Passwordless Login Gamit ang SSH Keygen

Lakang 3: Pag-configure sa Rsnapshot

Karon kinahanglan nimo nga i-edit ug idugang ang pipila ka mga parameter sa rsnapshot configuration file. Ablihi ang rsnapshot.conf file gamit ang vi o nano editor.

# vi /etc/rsnapshot.conf

Sunod paghimo og backup nga direktoryo, diin gusto nimo nga tipigan ang tanan nimo nga mga backup. Sa akong kaso ang akong lokasyon sa backup nga direktoryo mao ang \/data/backup/. Pangitaa ug usba ang mosunod nga parameter aron mabutang ang backup nga lokasyon.

snapshot_root			 /data/backup/

I-uncomment usab ang linya nga cmd_ssh aron tugotan ang pagkuha sa hilit nga mga backup sa SSH. Sa pag-uncomment sa linya kuhaa ang # sa atubangan sa mosunod nga linya aron ang rsnapshot luwas nga mabalhin ang imong data ngadto sa backup server.

cmd_ssh			/usr/bin/ssh

Sunod, kinahanglan nimo nga magdesisyon kung pila ka mga daan nga backup ang gusto nimong tipigan, tungod kay ang rsnapshot wala’y ideya kung unsa ka sagad nimo gusto nga magkuha mga snapshot. Kinahanglan nimong ipiho kung pila ang datos nga itipig, idugang ang mga agwat nga itago, ug pila sa matag usa.

Aw, ang default nga mga setting igo na, apan sa gihapon gusto ko nga imong i-enable ang \bulanan nga agwat aron mahimo ka usab nga adunay mas taas nga termino nga pag-backup sa lugar. Palihog usba kini nga seksyon aron tan-awon sama sa ubos nga mga setting.

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

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Usa pa ka butang nga kinahanglan nimong usbon mao ang variable nga ssh_args. Kon imong giusab ang default SSH Port (22) ngadto sa laing butang, kinahanglan nimong ipiho kana nga port number sa imong remote backing up server.

ssh_args		-p 7851

Sa katapusan, idugang ang imong lokal ug hilit nga backup nga mga direktoryo nga gusto nimo i-backup.

Kung nakahukom ka nga i-backup ang imong mga direktoryo sa lokal sa parehas nga makina, ang backup nga entry mahimong ingon niini. Pananglitan, nagkuha ko og backup sa akong/tecmint ug/etc nga mga direktoryo.

backup		/tecmint/		localhost/
backup		/etc/			localhost/

Kung gusto nimo nga i-backup ang usa ka hilit nga mga direktoryo sa server, kinahanglan nimo isulti ang rsnapshot kung asa ang server ug kung unsang mga direktoryo ang gusto nimo i-backup. Dinhi ako nagkuha ug backup sa akong hilit nga server nga “/home” nga direktoryo ubos sa “/data/backup” nga direktoryo sa rsnapshot server.

backup		 [email :/home/ 		/data/backup/

Basaha usab:

  1. Unsaon Pag-backup/Pag-sync sa mga Direktoryo Gamit ang Rsync (Remote Sync) Tool
  2. Unsaon Pagbalhin sa mga File/Folder Gamit ang SCP Command

Dinhi, dili nako iapil ang tanan, ug dayon ipasabut lamang kung unsa ang gusto nakong i-back up. Aron mahimo kini, kinahanglan nimo nga maghimo usa ka dili iapil nga file.

# vi /data/backup/tecmint.exclude

Kuhaa una ang lista sa mga direktoryo nga gusto nimong i-back up ug idugang ( – * ) aron dili iapil ang tanan. I-backup lang niini ang imong gilista sa file. Ang akong exclude file morag susama sa ubos.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

Ang paggamit sa dili iapil nga kapilian sa file mahimong labi ka malisud tungod sa paggamit sa rsync recursion. Busa, ang akong sa ibabaw nga pananglitan tingali dili mao ang imong gipangita. Sunod idugang ang dili iapil ang file sa rsnapshot.conf file.

exclude_file    /data/backup/tecmint.exclude

Sa katapusan, hapit ka mahuman sa inisyal nga pag-configure. I-save ang /etc/rsnapshot.conf configuration file sa dili pa mobalhin. Adunay daghang mga kapilian sa pagpatin-aw, apan ania ang akong sample nga configuration file.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

Ang tanan nga mga kapilian sa ibabaw ug mga pagpatin-aw sa argumento mao ang mosunod:

  1. config_version 1.2 = Configuration file version
  2. snapshot_root = Backup Destination para tipigan ang mga snapshot
  3. cmd_cp = Dalan sa pagkopya sa sugo
  4. cmd_rm = Dalan sa pagtangtang sa sugo
  5. cmd_rsync = Dalan sa rsync
  6. cmd_ssh = Dalan sa SSH
  7. cmd_logger = Dalan sa shell command interface ngadto sa syslog
  8. cmd_du = Dalan sa sugo sa paggamit sa disk
  9. interval kada oras = Pila ka oras nga pag-backup ang ibutang.
  10. interval daily = Pila ka adlaw-adlaw nga pag-backup ang itago.
  11. interval kada semana = Pila ka sinemana nga pag-backup ang tipigan.
  12. interval monthly = Pila ka binulan nga backups ang tipigan.
  13. ssh_args = Opsyonal nga mga argumento sa SSH, sama sa lain nga pantalan (-p )
  14. verbose = Kaugalingong pagpatin-aw
  15. loglevel = Self-explanatory
  16. logfile = Dalan sa logfile
  17. exclude_file = Path sa exclude file (ipasabot sa dugang detalye)
  18. rsync_long_args = Taas nga argumento nga ipasa sa rsync
  19. lockfile = Self-explanatory
  20. backup = Bug-os nga dalan sa unsay i-back up nga gisundan sa relatibong agianan sa pagbutang.

Lakang 4: I-verify ang Rsnapshot Configuration

Kung nahuman na nimo ang imong tanan nga pag-configure, oras na aron mapamatud-an nga ang tanan molihok sama sa gipaabut. Pagdalagan ang mosunod nga sugo aron mapamatud-an nga ang imong configuration adunay husto nga syntax.

# rsnapshot configtest

Syntax OK

Kung husto ang pag-configure sa tanan, makadawat ka ug mensahe nga \Syntax OK. Kung makadawat ka ug bisan unsang mga mensahe sa sayup, kana nagpasabut nga kinahanglan nimo nga tul-iron ang mga sayup sa dili pa magpadagan sa rsnapshot.

Sunod, buhata ang usa ka pagsulay nga pagdagan sa usa sa mga snapshot aron masiguro nga nakamugna kami og husto nga mga resulta. Gikuha namon ang oras nga parameter aron mahimo ang usa ka pagsulay nga pagdagan gamit ang -t (pagsulay) nga argumento. Kini nga sugo sa ubos magpakita sa usa ka verbose nga lista sa mga butang nga buhaton niini, nga wala gyud kini buhaton.

# rsnapshot -t hourly
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Mubo nga sulat: Ang sugo sa ibabaw nagsulti sa rsnapshot sa paghimo og oras-oras nga backup. Kini sa tinuod nag-imprinta sa mga sugo nga kini himoon kon ato kining ipatuman.

Lakang 5: Manu-manong Pagpadagan sa Rsnapshot

Human sa pagmatuod sa imong mga resulta, mahimo nimong tangtangon ang \-t nga opsyon aron sa pagdagan sa sugo gayud.

# rsnapshot hourly

Ang sugo sa ibabaw magpadagan sa backup nga script uban sa tanang configuration nga among gidugang sa rsnapshot.conf file ug maghimo ug “backup” nga direktoryo ug dayon maghimo sa directory structure ubos niini nga nag-organisar sa among mga file. Human sa pagpadagan sa ibabaw nga sugo, mahimo nimong pamatud-an ang mga resulta pinaagi sa pag-adto sa backup nga direktoryo ug ilista ang istruktura sa direktoryo gamit ang ls -l command sama sa gipakita.

# cd /data/backup
# ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Lakang 6: Pag-automate sa Proseso

Aron ma-automate ang proseso, kinahanglan nimo nga mag-iskedyul sa rsnapshot nga ipadagan sa pipila ka mga agwat gikan sa Cron. Sa kasagaran, ang rsnapshot adunay cron file ubos sa /etc/cron.d/rsnapshot, kung wala kini paghimo og usa ug idugang ang mosunod nga mga linya niini.

Pinaagi sa default nga mga lagda gikomento, mao nga kinahanglan nimo nga tangtangon ang \# gikan sa atubangan sa seksyon sa pag-iskedyul aron mahimo kini nga mga kantidad.

# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.

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

Tugoti ako nga ipasabut sa eksakto, kung unsa ang gibuhat sa mga lagda sa ibabaw sa cron:

  1. Nagdagan matag 4 ka oras ug nagmugna og inoras nga direktoryo ubos sa /backup nga direktoryo.
  2. Modagan kada adlaw sa alas 3:30 sa buntag ug maghimo ug inadlaw nga direktoryo ubos sa /backup nga direktoryo.
  3. Midagan kada semana kada Lunes sa alas 3:00 sa buntag ug maghimo ug sinemana nga direktoryo ubos sa /backup nga direktoryo.
  4. Modagan matag binuwan sa alas 2:30 sa buntag ug maghimo og binuwan nga direktoryo ubos sa /backup nga direktoryo.

Aron mas masabtan kung giunsa ang mga lagda sa cron, gisugyot ko nga basahon nimo ang among artikulo nga naghulagway.

  1. 11 Mga Ehemplo sa Pag-iskedyul sa Cron

Lakang 7: Mga Ulat sa Rsnapshot

Ang rsnapshot naghatag usa ka maayo nga gamay nga pagreport sa Perl script nga nagpadala kanimo usa ka alerto sa email nga adunay tanan nga mga detalye kung unsa ang nahitabo sa panahon sa imong pag-backup sa data. Aron ma-setup kini nga script, kinahanglan nimo nga kopyahon ang script sa usa ka lugar sa ilawom sa /usr/local/bin ug himuon kini nga ma-executable.

# cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
# chmod +x /usr/local/bin/rsnapreport.pl

Sunod, idugang ang –stats parameter sa imong rsnapshot.conf nga file sa taas nga seksyon sa rsync nga mga argumento.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Karon usba ang mga lagda sa crontab nga gidugang sa sayo pa ug tawagan ang script sa rsnapreport.pl aron ipasa ang mga taho sa piho nga email address.

# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

Sa higayon nga imong nadugang sa ibabaw nga mga entries sa husto, ikaw makadawat og usa ka report sa imong e-mail address nga susama sa ubos.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Mga Reperensya nga Link

  1. rsnapshot homepage

Mao ra kana sa karon, kung adunay mga problema nga mahitabo sa panahon sa pag-install, ihulog ako usa ka komento. Hangtud unya magpabilin nga tuned sa TecMint alang sa mas makapaikag nga mga artikulo sa Open source nga kalibutan.