ããã¯ç§ãæžããããã¯ã¢ããã¹ã¯ãªããã®ããã¥ã¢ã«èšäºã§ãã ãã®ã¹ã¯ãªããã¯ãLinuxçšã®Pythonã§æžãããŠããŸãã ããããã人ã«ã¯ããã©ã«ãã®äžã§ãé¡ãããŸãã
ç¹åŸŽ
- ãã©ã«ããŒã®å·®å/å®å šã³ããŒãäœæãã
- BTRFSãã¡ã€ã«ã·ã¹ãã ããå·®å/å®å šã³ããŒãäœæãã
- LVMããªã¥ãŒã ã®å·®å/ãã«ã³ããŒãäœæãã
- BTRFSã¹ãããã·ã§ããã®äœæ
- ããã¯ã¢ãã/ã¹ãããã·ã§ããã®ããŒããŒã·ã§ã³
- ããã¯ã¢ããã®é²è¡ç¶æ³ãèšé²ãã
- ã¡ãŒã«ã¢ã©ãŒã
- ããã¯ã¢ããååŸã®ã¹ã¯ãªããäœæ
èšçœ®
/etc/apt/source.listã«ä»¥äžãè¿œå ããŸãã
deb http://repo.nixdi.com/ubuntu/ precise soft
ãããŠãã¿ãŒããã«ã§å®è¡ããŸãïŒ
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 74C7B31B5F4E1715 && apt-get update && apt-get install py4backup
ããã±ãŒãžã¯æ¬¡ã®ã³ãã³ãã§æŽæ°ãããŸãã
apt-get update && apt-get upgrade py4backup
ãŸãã¯
次ã®ã³ãã³ãã䜿çšããŠãããã±ãŒãžãæåã§ããŠã³ããŒãããŸãã
wget http://repo.nixdi.com/ubuntu/py4backup_latest.deb
ãããŠãããã€ã³ã¹ããŒã«ããŸãïŒ
dpkg -i ./py4backup_latest.deb
ãŸãã¯
Ubuntu / Debian以å€ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®å ŽåïŒ
git clone https://github.com/larrabee/py4backup
ãããŠãdddãã¡ã€ã«ãšpy4backupãã¡ã€ã«ããã€ããªãã¡ã€ã«ïŒéåžžã¯/ usr / binïŒãå«ãŸãããã£ã¬ã¯ããªãpy4backup_lib.pyãã¡ã€ã«ãpythonã©ã€ãã©ãªãã£ã¬ã¯ããªã«ã³ããŒããŸãã ãŸããäŸåé¢ä¿ãæåã§è¿œå ããå¿ èŠããããŸãã python 3.xãbtrfs-toolsïŒbtrfs-progsïŒãlvm2ãrsyncãå¿ èŠã§ãã examples /ãã©ã«ããŒã«ã¯ãæ§æãã¡ã€ã«ã®äŸããããŸãã / etc / py4backup /ã«ã³ããŒããå¿ èŠããããŸã
ã«ã¹ã¿ãã€ãº
ã€ã³ã¹ããŒã«åŸããµã³ãã«ããæ§æãã¡ã€ã«ãã³ããŒããå¿ èŠããããŸãã ãããè¡ãã«ã¯ã次ãå®è¡ããŸãã
mv /etc/py4backup/py4backup.conf.example /etc/py4backup/py4backup.conf mv /etc/py4backup/jobs.conf.example /etc/py4backup/jobs.conf
ãããŠãpy4backup.confãã¡ã€ã«ãéããŠãããã¹ããšãã£ã¿ãŒã§ç·šéããŸãã
ããŒã«ãã©ã¡ãŒã¿ã®å ŽåãTrue / Falseãyes / noããŸãã¯1/0ã䜿çšã§ããŸãã
ãã©ã¡ãŒã¿ããã®å€ããåé¢ããã«ã¯ãèšå·ã=ããŸãã¯ãïŒãã䜿çšããŸãã
åãã©ã¡ãŒã¿ãŒã¯ãç¬èªã®ã»ã¯ã·ã§ã³ã«ããå¿ èŠããããŸãã ã»ã¯ã·ã§ã³åã¯ãè§ãã£ãïŒ '[]'ïŒã§èšå®ããããã©ã¡ãŒã¿ãŒã®åã«èšè¿°ãããŸãã
ã»ã¯ã·ã§ã³å ã®ãã©ã¡ãŒã¿ãŒã®é åºã¯éèŠã§ã¯ãããŸããã æ§æãã¡ã€ã«ã§ãã©ã¡ãŒã¿ãŒãæå®ãããŠããªãå Žåãæšæºå€ã䜿çšãããŸãã
èšå®ãã¡ã€ã«ã®äŸïŒ
[MAIL] send_mail_reports = True login = login@test.com passwd = password sendto = recipient@test.com server = mail.test.com port = 25 tls = True [DD] bs = 4M ddd_bs = 4096 ddd_hash = md5 [LOGGING] logpath = /var/log/py4backup.log enable_logging = True log_with_time = True traceback = False command_output = True [OTHER] temp_snap_name = py4backup_temp_snap host_desc = My Description pathenv = /sbin:/usr/sbin
ãã©ã¡ãŒã¿ãŒãããã«è©³ããèããŠã¿ãŸãããã
[ MAIL ]ïŒããã¯ãé»åã¡ãŒã«éç¥èšå®ãå®çŸ©ãããå Žæã§ãã
send_mail_reportsïŒã¿ã¹ã¯å®äºåŸã®é»åã¡ãŒã«ã¬ããŒãã®éä¿¡ãæå¹/ç¡å¹ã«ããŸãã
loginïŒsmtpãµãŒããŒã«å ¥ãããã®ãã°ã€ã³ã
passwdïŒsmtpãµãŒããŒã«å ¥ãããã®ãã¹ã¯ãŒãã
sendtoïŒéç¥ã®åä¿¡è ã ã¹ããŒã¹ã䜿çšããŠè€æ°ã®ã¢ãã¬ã¹ãå ¥åã§ããŸãã
serverïŒsmtpãµãŒããŒã®ãã¡ã€ã³åãŸãã¯IPã¢ãã¬ã¹ã
portïŒsmtpãµãŒããŒã®ããŒãã
tlsïŒTLSæå·åã®äœ¿çšãæå¹/ç¡å¹ã«ããŸãã
[ DD ]ïŒDDããã³DDDããã°ã©ã ã䜿çšããŠããã¯ã¢ãããäœæããããã®ãªãã·ã§ã³ãããã«ç€ºããŸãã
bsïŒDDããã°ã©ã ã®ãããã¯ãµã€ãºïŒLVMããªã¥ãŒã ã®å®å šãªã³ããŒãäœæããããã«äœ¿çšïŒã ãµã€ãºã¯ããã€ãããããã€ãïŒkïŒãããã³ã¡ã¬ãã€ãïŒMïŒã§æå®ã§ããŸãã ã³ããŒã®äœæé床ã«åœ±é¿ããŸãã æé©å€ã¯32Mã§ãã
ddd_bsïŒDDDããã°ã©ã ã®ãããã¯ãµã€ãºïŒLVMããªã¥ãŒã ã®å·®åã³ããŒã®äœæã«äœ¿çšïŒã ãµã€ãºã¯ãã€ãåäœã§æå®ã§ããŸãã ãµã€ãºã倧ããã»ã©ãå·®åã³ããŒã«å¿ èŠãªã¹ããŒã¹ã¯å¢ããŸãããäœæãããé床ã¯éããªããŸãã æé©å€ã¯4096ã§ãã
ddd_hashïŒãããã¯ããã·ã¥ã¢ã«ãŽãªãºã ã md5ãcrc32ãããã³Noneããéžæã§ããŸãã MD5ã¯crc32ãããããã»ããµãŒãå€ãããŒãããããå€ãã®ã¹ããŒã¹ãå æããŸãããmd5ã䜿çšããå Žåãè¡çªã®å¯èœæ§ã¯ã¯ããã«äœããªããŸãã
ãªãã¯å°åæã®éé¡ã®äœæãç¡å¹ã«ããŸãã ããã»ããµã®ããã¯ã¢ããæéããµã€ãºãããã³è² è·ã¯æå°éã§ãããããã¯ã¢ãããç ŽæããŠããå Žåããã®ããšã¯ããããŸããã 䜿çšã¯æšå¥šãããŠããŸããã
[ãã®ã³ã°]ïŒãžã§ããã®ã³ã°ãèšå®ããŸãã
logpathïŒãã°ãžã®ãã¹ã éæšæºã®ãã°ã䜿çšããå Žåã¯ãå¿ ãlogrotateèšå®ãå€æŽããŠãã ããã
enable_loggingïŒãã®ã³ã°ãæå¹/ç¡å¹ã«ããŸãã
log_with_timeïŒåãã°ãšã³ããªãžã®æ¥ä»ãšæå»ã®è¿œå ãæå¹/ç¡å¹ã«ããŸãã
ãã¬ãŒã¹ããã¯ïŒãšã©ãŒçºçæã®ãã°ãžã®ãã¬ãŒã¹ããã¯ã®è¿œå ãæå¹/ç¡å¹ã«ããŸãã ãããã°ã«åœ¹ç«ã¡ãŸãã
command_outputïŒãã°ãžã®ã³ã³ãœãŒã«åºåã®è¿œå ãæå¹/ç¡å¹ã«ããŸãã ãããã°ã«åœ¹ç«ã¡ãŸãã
[ OTHER ]ïŒä»ã®ã»ã¯ã·ã§ã³ã«å«ãŸããŠããªãèšå®ã
temp_snap_nameïŒäžæã¹ãããã·ã§ããã®ååã BTRFSãã¡ã€ã«ã·ã¹ãã ã«LVMããªã¥ãŒã ãŸãã¯ãã©ã«ããŒ/ãã¡ã€ã«ã®ã³ããŒãäœæãããšãã«äœ¿çšãããŸãã äžå¿ èŠã«å€æŽããªãããšããå§ãããŸãã
host_descïŒãã¹ãã®ããã¹ã説æã ãã®ãã©ã¡ãŒã¿ãŒã®å€ã¯ããã°ãã¡ã€ã«ãšé»åã¡ãŒã«ã¬ããŒãã«è¿œå ãããŸãã
pathenvïŒãã®ãã©ã¡ãŒã¿ãŒã®å€ã¯ã$ PATHå€æ°ã«è¿œå ãããŸãïŒæ€èšŒã«åæ Œããå ŽåïŒã è€æ°ã®ãã©ã«ããŒãè¿œå ããå¿ èŠãããå Žåã¯ãã³ãã³ïŒ 'ïŒ'ïŒã§åºåãå¿ èŠããããŸããããšãã°ãUbuntuã§ã¯ãcronãä»ããŠpy4backupãå®è¡ãããšãã«LVMããªã¥ãŒã ã®ã³ããŒãäœæããã«ã¯ã$ PATHå€æ°ã«/ sbinãã©ã«ããŒãè¿œå ããå¿ èŠããããŸãã ãã®å Žåããã¹ã¯æåŸã®ã¹ã©ãã·ã¥ïŒ '/'ïŒãªãã§ç€ºãããŸã
ããã·ã§ã³
äžè¬çãªæ å ±
ã¿ã¹ã¯ã®ãªã¹ãã¯ãã¡ã€ã«/etc/py4backup/jobs.confã«ãããŸã
ã¿ã¹ã¯ã®äŸïŒ
[mail-diff] type = file-diff sopath = server:/opt/ snpath = dpath = /mnt/backup_dest/ dayexp = 30 prescript = bash /root/script1.sh postscript = bash /root/script2.sh include = test test2 exclude = tests*
ã©ãã§ïŒ
[xxx]ïŒãžã§ãã®äžæã®ååã
typeïŒãžã§ãã®ã¿ã€ãã 以äžã®è©³çŽ°ãåç §ããŠãã ããã
sopathïŒããã¯ã¢ãããœãŒã¹ã ã¿ã€ãfile-fullãfile-diffã§ã¯ããªã¢ãŒããã¹ãããœãŒã¹ãšããŠæå®ã§ããŸãã
snpathïŒã¹ãããã·ã§ãããäœæããå Žæã ã¿ã€ãbtrfs-fullãbtrfs-diffãããã³btrfs-snapã§ã®ã¿äœ¿çš
dpathïŒããã¯ã¢ããå ã ã¿ã€ãbtrfs-fullãbtrfs-diffãfile-fullãfile-diffã§ã¯ããªã¢ãŒããã¹ããå®å ãšããŠæå®ã§ããŸãã
dayexpïŒå€ãããã¯ã¢ãããåé€ããæ¥æ°ã -1ã«èšå®ãããšãããã¯ã¢ããã¯åé€ãããŸããã
prescriptïŒããã¯ã¢ããã®åã«å®è¡ãããã¹ã¯ãªããã ãã€ãããã€ãã©ã€ã³ãããã³ãã®ä»ã®bashæŒç®åã¯æ©èœããŸããã è€éãªã³ãã³ããå®è¡ããå¿ èŠãããå Žåã¯ãããããã¹ã¯ãªãããšããŠä¿åããŠå®è¡ããŸãã
postscriptïŒããã¯ã¢ããåŸã«å®è¡ãããã¹ã¯ãªããã æ®ãã¯prescriptãã©ã¡ãŒã¿ãŒã«äŒŒãŠããŸãã
includeïŒããã¯ã¢ããã«å«ãããã®ã 詳现ã«ã€ããŠã¯ãããã¯ã¢ããã¿ã€ãã®èª¬æãåç §ããŠãã ããã
excludeïŒããã¯ã¢ããããé€å€ãããã®ã 詳现ã«ã€ããŠã¯ãããã¯ã¢ããã¿ã€ãã®èª¬æãåç §ããŠãã ããã
泚æïŒ ãã¹ãŠã®ãã¹ã¯ã/ãã§çµããå¿ èŠããããŸãã
ããã¯ã¢ããã®çš®é¡
åãžã§ãã§ãtypeãã©ã¡ãŒã¿ãŒã¯ããã¯ã¢ããã®ã¿ã€ããæå®ããŸãã ãã®ãã©ã¡ãŒã¿ãŒã¯ãã«ãããã¿ãŒã³ã«åœ±é¿ããŸãã ããã€ãã®ãã©ã¡ãŒã¿ãŒãã³ããŒããŠæ©èœãããŸãã
py4backupã«ã¯7çš®é¡ã®ããã¯ã¢ããããããŸãã
- ãã¡ã€ã«ããã£ã±ã
- ãã¡ã€ã«å·®å
- btrfs-full
- btrfs-diff
- btrfs-snap
- lvm-full
- lvm-diff
ããèŠãŠã¿ãŸãããã
ãã¡ã€ã«ããã£ã±ã
rsyncã䜿çšããŠããã¯ã¢ããããŸãã æ·±ãããŠã³ãããããã¹ãŠã®ãã©ã«ããŒãå«ããsopathã§æå®ããããã©ã«ããŒã®ããã¯ã¢ãããäœæãããŸãã
æ©èœïŒ
å€æ°sopathããã³dpathã§ã¯ãããŒã«ã«ãã©ã«ããŒã ãã§ãªãããªã¢ãŒããã¹ããæå®ã§ããŸãã äŸïŒ
sopath = root@192.168.0.1ïŒ/ home / admin /ãŸãã¯dpath = serverïŒ/ home / adminã 2çªç®ã®ã±ãŒã¹ã§ã¯ãã/ .ssh / configãã¡ã€ã«ã«æå¹ãªãšã³ããªãå¿ èŠã§ãã éµèªèšŒã䜿çšãããŸãïŒè¿œå æ å ±ã«ã€ããŠã¯ãwikiã®é åžwikiãåç §ããŠãã ããïŒã
sopathãšdpathããªã¢ãŒããã¹ãã§åæã«æå®ããããšã¯ã§ããŸããã
includeããã³excludeã§æå®ãããå€ã¯ããªãã·ã§ã³--include =ããã³--exclude =ãšããŠrsyncã«æž¡ãããŸãã è€æ°ã®å€ãã¹ããŒã¹ã§åºåã£ãŠæå®ã§ããŸãã
ãã¡ã€ã«å·®å
ãœãŒã¹ïŒsopathïŒãšå®å ãã©ã«ããŒïŒdpathïŒã§èŠã€ãã£ãæåŸã®å®å šã³ããŒããå·®åããã¯ã¢ãããäœæããŸãã å®å šãªã³ããŒãèŠã€ãããªãå Žåããžã§ãã¯å€±æããŸãã
ãã©ã¡ãŒã¿ã®ãªã¹ãã¯ãã¿ã€ããfile-fullãã«äŒŒãŠããŸãã
btrfs-full
ãã®ã¿ã€ãã¯ãfile-fullãã¿ã€ãã«äŒŒãŠããŸãããããã¯ã¢ãããäœæããåã«ãäºçŽãã£ã¬ã¯ããªã®ã¹ãããã·ã§ãããäœæãããã¹ãããã·ã§ããããã³ããŒããã§ã«ååŸãããŠããŸãã
ãã®ã¿ã€ãã®ããã¯ã¢ããã®å Žåãsnpathãã©ã¡ãŒã¿ãŒãæå®ããå¿ èŠããããŸãã ãœãŒã¹ãã©ã«ããŒïŒsopathïŒã®äžæçãªã¹ãããã·ã§ããã¯ãsnpathã§æå®ããããã©ã«ããŒã«äœæãããŸãã ããã«ãããã§æå®ããããã¹ã¯ãsopathã§æå®ããããã©ã«ããŒãšåããã¡ã€ã«ã·ã¹ãã äžã«ããå¿ èŠããããŸãã ãã®ãµãããªã¥ãŒã ãã¡ã€ã«ã·ã¹ãã ã®å 容ã®ã¿ãã³ããŒãããããšã«æ³šæããŠãã ããã ããŠã³ãããããã¹ãŠã®ãã©ã«ããŒãšãµãããªã¥ãŒã ã¯ç¡èŠãããŸãã ä»ã®ãã©ã¡ãŒã¿ãŒã®ãªã¹ãã¯ãã¿ã€ã 'file-full'ã«äŒŒãŠããŸãã
btrfs-diff
ãã®ã¿ã€ãã®ã«ããã§ã æåã«ããœãŒã¹ãã©ã«ããŒïŒsopathïŒããã¹ãããã·ã§ãããååŸããã次ã«ã¹ãããã·ã§ãããšå®å ãã©ã«ããŒïŒdpathïŒã§èŠã€ãã£ãæåŸã®å®å šã³ããŒããå·®åã³ããŒãäœæãããŸãã å®å šãªã³ããŒãèŠã€ãããªãå Žåããžã§ãã¯å€±æããŸãã
ãbtrfs-fullãã¿ã€ããšåæ§ã«ãã¹ãããã·ã§ãããã©ã«ããŒïŒsnpathïŒããœãŒã¹ãã©ã«ããŒïŒsopathïŒãšåããã¡ã€ã«ã·ã¹ãã äžã«ããå¿ èŠããããŸãã
ãã®ãµãããªã¥ãŒã ãã¡ã€ã«ã·ã¹ãã ã®å 容ã®ã¿ãã³ããŒãããããšã«æ³šæããŠãã ããã ããŠã³ãããããã¹ãŠã®ãã©ã«ããŒãšãµãããªã¥ãŒã ã¯ç¡èŠãããŸãã ä»ã®ãã©ã¡ãŒã¿ãŒã®ãªã¹ãã¯ããfile-fullãã¿ã€ãã«äŒŒãŠããŸã
btrfs-snap
ãã®ã¿ã€ãã¯ãsopathã§æå®ããããœãŒã¹ãã©ã«ããŒããsnpathã§æå®ãããã¹ãããã·ã§ãããã©ã«ããŒãžã®ã¹ãããã·ã§ãããäœæããŸãã
ãã®ã¿ã€ãã§ã¯ãexcludeãincludeãdpathãã©ã¡ãŒã¿ãŒã¯æ©èœããŸããã ãbtrfs-fullãã¿ã€ãã®å Žåãšåæ§ã«ãã¹ãããã·ã§ããã®ãã©ã«ããŒïŒsnpathïŒããœãŒã¹ãã©ã«ããŒïŒsopathïŒãšåããã¡ã€ã«ã·ã¹ãã äžã«ããå¿ èŠããããŸãã
ãã®ãµãããªã¥ãŒã ãã¡ã€ã«ã·ã¹ãã ã®å 容ã®ã¿ãã³ããŒãããããšã«æ³šæããŠãã ããã ããŠã³ãããããã¹ãŠã®ãã©ã«ããŒãšãµãããªã¥ãŒã ã¯ç¡èŠãããŸãã
lvm-full
ãã®ã¿ã€ãã¯ãLVMããªã¥ãŒã ã®å®å šãªã³ããŒãäœæããããã«èšèšãããŠããŸãã ãã®ã¿ã€ãã®ããã€ãã®æ©èœãæ€èšããŠãã ããã sopathãã©ã¡ãŒã¿ãŒã¯ãè«çããªã¥ãŒã ã°ã«ãŒãïŒVGïŒãžã®ãã¹ãæå®ããŸãã äŸïŒ
sopath = / dev / main_vg /
ããã©ã«ãã§ã¯ãã¹ã¯ãªããã¯ãã®VGã«ãããã¹ãŠã®ããªã¥ãŒã ã®ã³ããŒãäœæããŸãã
dpathãã©ã¡ãŒã¿ãŒã¯ãããã¯ã¢ããå ãæå®ããŸãã ããã¯ã¢ããå ãšããŠãªã¢ãŒããã¹ããæå®ããããšã¯ã§ããŸããã å¿ èŠãªããªã¥ãŒã ã®ã¿ã®ã³ããŒãäœæããã«ã¯ãincludeãã©ã¡ãŒã¿ãŒãšexcludeãã©ã¡ãŒã¿ãŒã䜿çšã§ããŸãã
excludeãã©ã¡ãŒã¿ãŒã¯ãããã¯ã¢ããããé€å€ããããªã¥ãŒã ãæå®ããŸãã ããã«ãã³ãŒãã¯ãŒãallãåãå ¥ããŸããã€ãŸãããã¹ãŠã®ããªã¥ãŒã ãé€å€ããå¿ èŠããããŸãã
includeãã©ã¡ãŒã¿ãŒã¯ãããã¯ã¢ããã«å«ããããªã¥ãŒã ãæå®ããŸãã é€å€ãããåªå ãããŸãã äŸïŒ
exclude = all include = mail root
ã¡ãŒã«ãšã«ãŒãããªã¥ãŒã ã®ã¿ãããã¯ã¢ããããŸãã ãŸãã次ã®äŸã§ã¯ãã¡ãŒã«ããªã¥ãŒã ãé€ããã¹ãŠã®ããªã¥ãŒã ã®ã³ããŒãäœæããŸãã
exclude = mail
lvm-diff
æåŸã®ïŒããŒãžã§ã³1.5ã®ïŒããã¯ã¢ããã¿ã€ãã¯ãLVMããªã¥ãŒã ã®å·®åã³ããŒãäœæããããã«èšèšãããŠããŸãã
ã¹ã¯ãªããã¯ãå®å ãã©ã«ããŒïŒdpathïŒã§æåŸã®å®å šããã¯ã¢ãããæ¢ãããããèŠã€ãã£ãå ŽåãçŸåšã®ç¶æ ã®ã¹ãããã·ã§ãããšã®å·®åã³ããŒãäœæããŸãã ãã®å Žåã2 * -diff.ddããã³* -diff.ddmãã¡ã€ã«ãå®å ãã©ã«ããŒã«è¡šç€ºãããŸããããããã¯äž¡æ¹ãšãå埩ã«å¿ èŠã§ãã
ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒã¯ãlvm-fullã¿ã€ãã«äŒŒãŠããŸãã
æã¡äžã
å®è¡ã«å¿ èŠãªã¿ã¹ã¯ã®å®è¡ã¯éåžžã«ç°¡åã§ãã
âjobsïŒãŸãã¯-jïŒã¹ã€ãããæå®ãããã®åŸã«å¿ èŠãªãžã§ãã®ååãæå®ããå¿ èŠããããŸãã äŸïŒ
py4backup --jobs backup_data backup_home backup_media
æå®ããããã¹ãŠã®ã¿ã¹ã¯ã¯ã--jobsãã©ã¡ãŒã¿ãŒã§æå®ãããé åºã§é çªã«å®è¡ãããŸãã cronçµç±ã§ã¹ã¯ãªãããå®è¡ããããšãã§ããŸãããcronã§å²ãŸããå€æ°ã¯ãŠãŒã¶ãŒã®å€æ°ãšç°ãªãå Žåããããæ§æãã¡ã€ã«ã®pathenvå€æ°ã§ãŠãŒãã£ãªãã£rmãddãrsyncãbtrfsãlvcreateãlvremoveãžã®ãã¹ãæå®ããå¿ èŠãããå Žåãããããšã«æ³šæããŠãã ããã
å埩
ã ãããç§ãã¡ã¯æãèå³æ·±ãããšã«ãªããŸãã ããã¯ã¢ããèªäœã«è²»çšã¯ããããŸããããããã¯ã¢ããããã°ãã埩å ããæ©èœã¯ãããŸããã ãã®ã»ã¯ã·ã§ã³ã§ã¯ãã¹ã¯ãªããã«ãã£ãŠäœæãããããã¯ã¢ããããã®å žåçãªãªã«ããªã±ãŒã¹ã«ã€ããŠèª¬æããŸãã
ãã¡ã€ã«ã®ããã¯ã¢ãã
以äžã¯ãbtrfs-fullãbtrfs-diffãfile-fullãfile-diffãªã©ã®ãžã§ãã«ãã£ãŠäœæãããå®å šããã¯ã¢ãããšå·®åããã¯ã¢ããã®äž¡æ¹ã«é©çšãããŸãã ããã¯ã¢ããã埩å ããã«ã¯ã-aAXã¹ã€ããã䜿çšããrsyncãå¿ èŠã§ãã äŸïŒ
rsync -aAX /mnt/backup/home/2014-06-21-full/ /home/
ãŸãã¯
rsync -aAX /mnt/backup/home/2014-06-22-diff/ /home/
ã©ã¡ãã®å Žåããå®å ãã©ã«ããŒã«ããŒã¿ã®å®å šãªã³ããŒãå±ããããã«äœ¿çšã§ããŸãã
ã¹ãããã·ã§ããå埩
btrfs-snapã¿ã€ãã§äœæãããã¹ãããã·ã§ããã¯ãããã€ãã®æ¹æ³ã§åŸ©å ã§ããŸãã
- rsyncããŒã¿ã®ã³ããŒã«ãããã¡ã€ã«ããã¯ã¢ããã®ããã«ïŒé·ãããŠé¢çœããªãïŒ
- 埩å ããå¿ èŠããããã©ã«ãã®ä»£ããã«ãã¹ãããã·ã§ãããããŠã³ãããã ãã®æ¹æ³ã以äžã§æ€èšããŸãã
ããã©ã«ãã§ã¯ãã¹ãããã·ã§ããã¯èªã¿åãå°çšã¢ãŒãã§äœæãããŸãã ãããã£ãŠããã®ã¹ãããã·ã§ããã«çŽæ¥æžã蟌ãããšã¯ã§ããŸããã äŸãèããŠã¿ãŸãããã
BTRFSã¯ã«ãŒããã¡ã€ã«ã·ã¹ãã ãšããŠäœ¿çšãããŸãã ã¹ã¯ãªããã䜿çšããŠã/ homeãã©ã«ããŒã®ã¹ãããã·ã§ãããäœæããã/ snapshots_homeã«è¿œå ãããŸãã ãããŠä»ãã¹ãããã·ã§ãããã/ããŒã ãã©ã«ããŒã埩å ããå¿ èŠããããŸãã
æåã®ã¹ãããã¯ã/ããŒã ãã©ã«ããŒã解æŸããããšã§ãïŒååãå€æŽãŸãã¯åé€ããŸãïŒã
次ã«ãå¿ èŠãªã¹ãããã·ã§ãããéžæãïŒ2014-06-19ã®ã¹ãããã·ã§ããã«ããŠãã ããïŒãããããã¹ãããã·ã§ãããäœæããŸãïŒã¯ããã¯ããã¹ãããã·ã§ããã®ã¹ãããã·ã§ããïŒïŒ
btrfs subvolume snapshot /snapshots_home/2014-06-19 /home
ãããã£ãŠãæåã«ããŒã¿ãæžã蟌ã¿å¯èœã«ããã»ãã¥ãªãã£ã§ä¿è·ããŸããã ããŒããŒã·ã§ã³ã«ããã¹ã¯ãªããã2014-06-19ããã¹ãããã·ã§ãããåé€ããŠããæ°ããäœæãããã¹ãããã·ã§ããã¯ãã®ãŸãŸæ®ããŸãã
å®å šãªLVMããã¯ã¢ããã®å埩
ããã¯ãã¹ãŠéåžžã«ç°¡åã§ãã
ããã¯ã¢ãã以äžã®æ°ããLVMããªã¥ãŒã ãäœæããddã䜿çšããŠããã¯ã¢ããããã®ããªã¥ãŒã ã«ã³ããŒããå¿ èŠããããŸãã
äŸïŒ
dd if=/backups/2014-06-19-old_volume-full of=/dev/main_vg/new_volume bs=32M
å·®åLVMããã¯ã¢ããã埩å ãã
ãã®å埩ã«ã¯ãpy4backupã«ãã³ãã«ãããŠããdddãŠãŒãã£ãªãã£ã䜿çšããå¿ èŠããããŸãã
埩å ããã«ã¯ãârestoreãªãã·ã§ã³ãæå®ããå¿ èŠããããŸããâsã¹ã€ããã¯ãã¡ã€ã«ãžã®ãã¹ãªãã§ãârã¹ã€ããã¯å埩ã®å ŽæïŒãããã¯ããã€ã¹ãŸãã¯ãã¡ã€ã«ïŒãæå®ããŸãã dddã¯å®å šããã¯ã¢ãããžã®ãã¹ãèšæ¶ããŠããŸããã移åããå Žåã¯ãæåã§æ°ãããã¹ãæå®ããå¿ èŠããããŸãã ããã¯ã-fã¹ã€ããã䜿çšããŠå®è¡ã§ããŸãã
äŸïŒ
/ backupãã©ã«ããŒã«ã¯ããã¯ã¢ãããå«ãŸããŠããŸãã
root@virtserver / # ls /backup/ 2014-06-18-volume-full 2014-06-19-volume-diff.dd 2014-06-19-volume-diff.ddm
ãããŠã2014-06-19ã®ããã¯ã¢ãããdevice / dev / main_vg / volumeã«åŸ©å ããŸããããè¡ãã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãïŒ
ddd --restore -s /backup/2014-06-19-volume-diff -r /dev/main_vg/volume
å®å šãªã³ããŒã/ ââbackup_olââd /ãã©ã«ããŒã«ç§»åããããšããŸãïŒ
ddd --restore -s /backup/2014-06-19-volume-diff -r /dev/main_vg/volume -f /backup_old/2014-06-18-volume-full
ãªã«ããªåŸãdddã¯ç Žæãããããã¯ã®ãªã¹ãã衚瀺ããç Žæãããããã¯ãååšãããã¡ã€ã«ã瀺ããŸãã full23ã¬ã³ãŒãã¯ãå®å šã³ããŒãã¡ã€ã«ã®ãããã¯çªå·23ã®æå·ã瀺ããdiff24ã¬ã³ãŒãã¯ãå·®åã³ããŒã®ãããã¯24ã®æå·ã瀺ããŸãã
ãã³ããšã³ã
ããã§ã¯ãã¹ã¯ãªããã䜿çšããããã®ããã€ãã®æçœã§ã¯ãªãç¬éãšãªãã·ã§ã³ã«ã€ããŠèª¬æããŸãã
- ãã©ã¡ãŒã¿ãŒãªãã§ã¹ã¯ãªãããå®è¡ãããšã䜿çšå¯èœãªã¿ã¹ã¯ã®ãªã¹ãã衚瀺ãããŸãã
- dddã¯ãpy4backupãšã¯å¥ã«äœ¿çšã§ããŸãã å®å
šã³ããŒãžã®ãã¹ã¯-fã¹ã€ããã§æå®ãããå€æŽããããã¡ã€ã«ãžã®ãã¹ã¯-sã¹ã€ããã§æå®ãããŸãã -rã¹ã€ããã¯ãå·®åã³ããŒãä¿åããå Žæã瀺ããŸãã äŸïŒ
ddd -f /backup/2014-06-18-volume-full -s /dev/main_vg/volume_snapshot -r /backup/diff_backup_name
- dddã«ãã£ãŠäœæãããå·®åã³ããŒããã§ãã¯ããããããã埩å ããªãå Žåã¯ãå®å ãšããŠ/ dev / nullãæå®ã§ããŸã
ãããã«
å 責äºé ïŒã¹ã¯ãªããã®äœæè ã¯ãããã°ã©ã ã®åäœãŸãã¯åäœåæ¢ã«ã€ããŠè²¬ä»»ãè² ãããããŒã¿ã®æ倱ãŸãã¯æ害ããããããŸãã
ã¹ã¯ãªããã«ãšã©ãŒãããïŒäž»ã«ãã€ããŒã§ã4å°ã®ãã¹ããã·ã³ã§å®å®ããŠåäœããŸãïŒããã°ã¬ããŒãã«æè¬ããŸãïŒç¹ã«ãã¬ãŒã¹ããã¯ãšã³ã³ãœãŒã«ã³ãã³ãåºåïŒã
ãã®ããã¥ã¢ã«ã¯ãããŒãžã§ã³1.5.3ã«é¢é£ããŠããŸãã
ã¡ãŒã«ãã¢ãã¬ã¹larrabee@nixdi.comããŸãã¯Habrã§ç§ã«é£çµ¡ã§ããŸãã
GithubãœãŒã¹ã³ãŒãã
ãªããžããªå ã®ããã±ãŒãžã
èªãã§ãããŠããããšããã³ã¡ã³ãã«æè¬ããŸãã