엊그제 갑자기 집에 있는 시스템 전체를 그대로 백업하고 싶다는 생각이 들었습니다.
이런 저런 방법을 찾아보다가 rear라는 것을 찾았습니다.
지금껏 모르고 있었다니.. ^^;
이건 리눅스에서 사용하는 것으로 잘 만들어진 것 같습니다.
부팅을 할 수 있는 rescue iso 파일이 만들어지고
시스템을 그대로 압축한 backup tar.gz 파일이 만들어집니다.
복구할 때는 rescue iso를 usb에 구워서 부팅해서 backup.tar.gz를 불러와서 새로운 디스크에 풀고 grub 등 작업을 자동으로 해 줍니다.
처음 설치하고 간단한 config을 해보니, NFS로, 또는 다른 디스크로 잘 백업되는 것 처럼 보였습니다.
그런데 gzip을 사용해서 tar로 묶으니 엄청 느립니다.
pigz로 여러 코어를 쓰게 했습니다.
config 파일에
BACKUP_PROG_COMPRESS_OPTIONS=( --use-compress-program='pigz --best')
을 넣어줬더니 코어 수 대로 병렬로 압축이 진행됩니다.
cron에 4시간 마다 백업하게 했습니다.
한 번 테스트 해보고자 virtualbox로 가상머신 하나 만들고 rescue iso로 부팅하고 recover를 했더니 에러가 나는군요.
portmap/rpcbind 등을 확인하는 과정에서 에러가 납니다.
그래서
/usr/share/rear/verify/NETFS/default/050_start_required_nfs_daemons.sh
안을 에디트했습니다.
# newer Linux distros usse rpcbind instead of portmap
에서부터
# NFS v4 related daemons:~~~~~
여기까지 다 날려버렸지요.
이 에러는 벗어났는데 또 문제가 생기는군요.
gzip이 아니고 pigz를 쓴 게 문제네요.
rescue iso 안에 pigz 실행파일이 없습니다.
이거 때문에 계속 구글링을 해봤지만 내용이 없습니다.
그래서 rear의 쉘을 이래저래 뒤져보니
PROGS 라는 변수 안에 rescue에 들어가는 실행 바이너리들이 기록되어 있는 것 같더군요.
그렇다면 이 변수 안에 pigz를 넣어주면 되겠군요.
다시 rear config 파일을 수정합니다. (/etc/rear/local.conf )
PROGS=( "${PROGS[@]}" /usr/bin/pigz )
이 라인을 추가했더니 잘 되는군요.
정말 오류 없이 동작하는지, 도커 등 특별한 시스템이 있을 경우는 어떤지 등등 아직 확인 안 된 부분은 있습니다.
하지만 간단하게 테스트해 본 결과 복잡하지 않은 시스템은 잘 동작합니다.
리눅스 쓰시는 분들은 이 프로그램으로 중요한 시스템과 파일들을 잘 보호해 주세요.
1. ºÎÆ®·Î´õ¿¡¼ ¸®´ª½º Ä¿³ÎÀ» ¸Þ¸ð¸®¿¡ ·ÎµåÇÏ°í ±âµ¿½ÃÅ´.
2. ±âµ¿µÈ ¸®´ª½º Ä¿³ÎÀº Çϵå¿þ¾î Ãʱâȸ¦ ÁøÇà.
3. ÃʱâÈ°¡ ´Ù ³¡³ª¸é ¸®´ª½º Ä¿³ÎÀº Ä¿³Î ÆĶó¹ÌÅÍ¿¡ ÁöÁ¤µÈ ÆÄƼ¼ÇÀ» ·çÆ®·Î ¸¶¿îÆ® (¿©±â¼ ½ÇÆÐÇϸé VFS: Unable to mount ¾î¼±¸Àú¼±¸ ÇÏ´Â ¸Þ½ÃÁö ¶ß°í ¸ØÃç¹ö¸³´Ï´Ù. ±×³É Àü¿ø »°´Ù°¡ ´Ù½Ã ³¢´Â¼ö¹Û¿¡.)
4. ·çÆ® ¸¶¿îÆ® ¼º°øÇÏ¸é ¸¶¿îÆ®ÇÑ ÆÄƼ¼Ç¿¡¼ /sbin/init ½ÇÇà
5. /sbin/initÀº ºÎÆýºÅ©¸³Æ® ½ÇÇà (¿äÁòÀº init ´ë½Å systemd¸¦ ¾²´Âµ¥, À̶§´Â systemd°¡ initÀÇ ¿ªÇÒ ¼öÇà)
6. ºÎÆýºÅ©¸³Æ®´Â ½ÃÀÛÇÒ¶§ ¿Ã¶ó°¡±â·Î µÇ¾î ÀÖ´Â °¢Á¾ ¼¹ö ´ë¸ó ¼ºñ½º ·Îµå, ³×Æ®¿öÅ©/½Ã°è µî ȯ°æ ¼³Á¤ -> ¿©±â¼ºÎÅÍ ¹èÆ÷ÆǸ¶´Ù ´Ù¸¨´Ï´Ù.
7. ºÎÆýºÅ©¸³Æ®°¡ ·ÎµåÇÒ °ÍµéÀ» ¸ðµÎ ·ÎµåÇϸé À¯Àú°¡ ¾µ Áغñ°¡ ¿Ï·áµÇ°í ·Î±×ÀΠȸéÀÌ ³ªÅ¸³²
À§´Â initramfs ¾È¾´ ½Ã½ºÅÛÀ» °æ¿ì°í, ´ëºÎºÐÀÇ ¹èº¸ÆǵéÀº ¿©·¯ Çϵå¿þ¾î ´ëÀÀ µîÀÇ ¹®Á¦·Î initramfs ¾²°í ÀÖ½À´Ï´Ù.
initramfs ½è´Ù¸é 3¹ø~4¹ø °úÁ¤ÀÌ º¹ÀâÇØÁö°í ±×³É tar cpf, tar xpf·Î ¹é¾÷º¹¿øÇϸé À̺κп¡¼ ¹®Á¦°¡ ÅÍÁöÁÒ.
initramfs¸¦ »ç¿ëÇÏ°Ô µÇ¸é 3¹ø ·çÆ® ¸¶¿îÆ®ÇÒ¶§ ÁøÂ¥ Çϵåµð½ºÅ© ÆÄƼ¼Ç ´ë½Å initramfs¶ó´Â À̹ÌÁö¸¦ ·ÎµåÇÏ°í ·¥µð½ºÅ©·Î ¸¶¿îÆ®ÇÑ ´ÙÀ½ ÀÌ ¾ÈÀÇ /sbin/initÀ» ½ÇÇàÇÕ´Ï´Ù. ±×·¯¸é ·¥µð½ºÅ© ¾ÈÀÇ init ÇÁ·Î¼¼½º´Â ÀåÄ¡ °Ë»öÇÏ°í ÇÊ¿äÇÑ ¸ðµâÀ» ·ÎµåÇؼ Ä¿³Î¿¡ ÀνĽÃÄÑÁÖ°í ³ª¼ ·çÆ® ÆÄƼ¼Ç ¸¶¿îÆ®¸¦ ½ÃµµÇÏ°í ¼º°øÇϸé 4¹øÀ¸·Î ³Ñ¾î°¡ÁÒ. ¹èÆ÷ÆÇ È¸»ç¿¡¼ ¹èÆ÷ÆÇ Á¦ÀÛÇÒ ¶§ ¿©·¯ µå¶óÀ̹ö ´Ù ´ëÀÀµÇ°Ô ÇÒ·Á°í ÀÌ·¸°Ô ÇѰǵ¥ initramfsµµ ¼ÒÇüÈµÈ º°°³ ¸®´ª½º ½Ã½ºÅÛÀ̶ó ±îº¸¸é º¹ÀâÇÕ´Ï´Ù.
ÀÏ´Ü ¼³Ä¡ÇÒ¶§ ·çÆ® ÆÄÀϽýºÅÛÀ» LVM µîÀ¸·Î ÀâÁö ¸»°í Çϵåµð½ºÅ© ÆÄƼ¼Ç ±×´ë·Î Àâµµ·Ï ÇÏ°í¿ä(·çÆ®±îÁö LVM Àâ´Â ¹èÆ÷ÆÇÀ̸é Àý´ë ¾ÈµË´Ï´Ù)
¼³Ä¡ÇÑ ÈÄ¿¡ Ä¿³ÎÀ» initramfs ¾È¾²°í, ½Ã½ºÅÛ¿¡ ¸Â°Ô Çؼ ÀçÄÄÆÄÀÏÇÏ°í ºÎÆ®·Î´õ µî·ÏÇؼ ºÎÆà ¼º°øÇÏ½Ã¸é ¿Ã·ÁÁֽŠ³»¿ë´ë·Î ¸¶À½²¯ ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
tar cpf, tar xpf¸¸À¸·Îµµ ´Ù µË´Ï´Ù. (º¹¿ø½Ã tar xpf ÇØÁ¦ÈÄ Ä¿³Î ºÎÆ®·Î´õ µî·Ï, /etc/fstab Á¶Á¤, ½º¿Ò ÆÄƼ¼Ç Á¶Á¤ Á¤µµ¸¸ ÇÏ¸é ºÎÆÃÀº µË´Ï´Ù. ÀÌÈĴ ȯ°æÁ¶Á¤)
¿Ö ·çÆ® ÆÄÀϽýºÅÛÀ» LVM, mdraid(¼ÒÇÁÆ®·¹À̵å), LUKS ¾ÏÈ£ÈÆÄƼ¼Ç ÇÏÁö ¸»¶ó°í ÇÏ³Ä¸é ·çÆ® ÆÄÀϽýºÅÛÀ» ÀÌ°÷¿¡ ¿Ã¸®¸é initramfs°¡ ÇʼöÀÔ´Ï´Ù. initramfs ´Ü°è¿¡¼ À̵é°ú °ü·ÃµÈ µå¶óÀ̹ö¸¦ ¿Ã·ÁÁְųª ¼³Á¤À» Àâ¾ÆÁÖ¾î¾ß Ä¿³ÎÀÌ ÀÌ µð½ºÅ©µéÀ» Á¦´ë·Î ÀνÄÇØ¾ß ÁøÂ¥ ·çÆ®¿¡ ´ëÇÑ ºÎÆðúÁ¤À» ÁøÇàÇÒ ¼ö ÀÖÀ¸´Ï±î¿ä.