๋ชฉ์ฐจ
- ๋ฐฑ์ ํ์ง ์์ผ๋ฉด ์ธ์ ๊ฐ ๋ฐ๋์ ํํํ๋ค
- ๋ฌด์์ ๋ฐฑ์ ํด์ผ ํ๋๊ฐ?
- rsync๋ ๋ฌด์์ธ๊ฐ?
- rsync๋ก ๋ก์ปฌ ๋ฐฑ์ ํ๊ธฐ
- rsync๋ก ์๊ฒฉ ์๋ฒ์ ๋ฐฑ์ ํ๊ธฐ
- cron์ผ๋ก ๋ฐฑ์ ์๋ํํ๊ธฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ์๋ํ
- ๋ฐฑ์ ๋ณด์กด ๊ธฐ๊ฐ ๊ด๋ฆฌํ๊ธฐ
- ์ ๋ฆฌ ๋ฐ ๋ค์ ๋จ๊ณ
1. ๋ฐฑ์ ํ์ง ์์ผ๋ฉด ์ธ์ ๊ฐ ๋ฐ๋์ ํํํ๋ค
์๋ฒ ์ด์์๋ค ์ฌ์ด์๋ ์ด๋ฐ ๋ง์ด ์์ต๋๋ค. "๋ฐฑ์ ์ ํ๋ ์ฌ๋๊ณผ, ์์ง ๋ฐ์ดํฐ๋ฅผ ์์ด๋ณธ ์ ์๋ ์ฌ๋๋ง ์๋ค"๊ณ ์.
๋์คํฌ ๊ณ ์ฅ, ์ค์๋ก ์ธํ ํ์ผ ์ญ์ , ๋์ฌ์จ์ด ๊ฐ์ผ, ์๋ฒ ์ ๊ณต์ ์ฒด์ ์ฅ์ ๋ฑ ์์์น ๋ชปํ ์ด์ ๋ก ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ ์ผ์ ์ธ์ ๋ ์ผ์ด๋ ์ ์์ต๋๋ค. ์ด๋ฐ ์ํฉ์์ ์ ์ผํ ํด๊ฒฐ์ฑ ์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ๋ฐฑ์ ์ ๋๋ค.
2. ๋ฌด์์ ๋ฐฑ์ ํด์ผ ํ๋๊ฐ?
๋ฐ๋์ ๋ฐฑ์ ํด์ผ ํ ํญ๋ชฉ์ผ๋ก๋ ์น ์๋น์ค์ ์ ๋ก๋ ํ์ผ(/var/www/html ๋ฑ), ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ์ดํฐ, ํ๊ฒฝ ์ค์ ํ์ผ(/etc ๋๋ ํ ๋ฆฌ ์ฃผ์ ์ค์ ), ์ ํ๋ฆฌ์ผ์ด์ ์์ค ์ฝ๋(GitHub ์ฐ๋์ด ์๋ ๊ฒฝ์ฐ), SSL ์ธ์ฆ์ ํ์ผ์ด ์์ต๋๋ค.
๋ณด์ ์ ๋ฌธ๊ฐ๋ค์ด ๊ถ์ฅํ๋ 3-2-1 ๊ท์น์ ๋ฐ์ดํฐ ์ฌ๋ณธ 3๊ฐ ์ ์ง, 2๊ฐ์ง ์๋ก ๋ค๋ฅธ ์ ์ฅ ๋งค์ฒด ์ฌ์ฉ, 1๊ฐ๋ ์ธ๋ถ(์คํ์ฌ์ดํธ)์ ๋ณด๊ดํ๋ ๋ฐฉ์์ ๋๋ค. ์๋ฅผ ๋ค์ด ์๋ณธ ์๋ฒ, ๋ค๋ฅธ ์๋ฒ์ ๋ฐฑ์ , ํด๋ผ์ฐ๋ ์คํ ๋ฆฌ์ง(S3 ๋ฑ) ์ธ ๊ณณ์ ๋ณด๊ดํ๋ ์์ ๋๋ค.
3. rsync๋ ๋ฌด์์ธ๊ฐ?
**rsync(Remote Sync)**๋ ํ์ผ๊ณผ ๋๋ ํ ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๋๊ธฐํํ๊ณ ๋ณต์ฌํ๋ ๋ฆฌ๋ ์ค ๋๊ตฌ์ ๋๋ค. ์ ์ฒด ํ์ผ์ ๋งค๋ฒ ๋ณต์ฌํ๋ ๊ฒ์ด ์๋๋ผ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ ์กํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ ๋๋ค. SSH๋ฅผ ํตํด ์๊ฒฉ ์๋ฒ๋ก ์์ ํ๊ฒ ์ ์กํ๋ฉฐ, ๋์ฉ๋ ํ์ผ ์ ์ก์ด ์ค๋จ๋์ ๋ ์ด์ด์ ์ ์กํ๋ ๊ธฐ๋ฅ๋ ์ง์ํฉ๋๋ค.
4. rsync๋ก ๋ก์ปฌ ๋ฐฑ์ ํ๊ธฐ
๊ฐ์ ์๋ฒ ๋ด์์ ํน์ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ค๋ฅธ ์์น๋ก ๋ฐฑ์ ํ๋ ๊ธฐ๋ณธ ํํ์ ๋๋ค.
rsync -av ์๋ณธ๊ฒฝ๋ก ๋ชฉ์ ์ง๊ฒฝ๋ก
/var/www/html ๋๋ ํ ๋ฆฌ๋ฅผ /backup/www๋ก ๋ฐฑ์ ํ๋ ์์์ ๋๋ค.
rsync -av /var/www/html/ /backup/www/
-a๋ ๊ถํ·์์ ์·ํ์์คํฌํ ๋ฑ ๋ชจ๋ ์์ฑ์ ์ ์งํ๋ ์์นด์ด๋ธ ๋ชจ๋์ด๊ณ , -v๋ ์งํ ์ํฉ์ ํ๋ฉด์ ์ถ๋ ฅํฉ๋๋ค. ์๋ณธ์์ ์ญ์ ๋ ํ์ผ์ ๋ฐฑ์ ๋๋ ํ ๋ฆฌ์์๋ ์ญ์ ํ๋ ค๋ฉด --delete ์ต์ ์ ์ถ๊ฐํฉ๋๋ค.
rsync -av --delete /var/www/html/ /backup/www/
5. rsync๋ก ์๊ฒฉ ์๋ฒ์ ๋ฐฑ์ ํ๊ธฐ
๋ค๋ฅธ ์๋ฒ๋ก ๋ฐฑ์ ์ ์ ์กํ ๋๋ SSH๋ฅผ ํตํด rsync๋ฅผ ์ฌ์ฉํฉ๋๋ค.
rsync -avz -e ssh /var/www/html/ ์ฌ์ฉ์๋ช
@๋ฐฑ์
์๋ฒIP:/backup/www/
-z๋ ์ ์ก ์ค ๋ฐ์ดํฐ๋ฅผ ์์ถํด ์๋๋ฅผ ๋์ ๋๋ค. SSH ํค ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ -e ์ต์ ์ ํค ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
rsync -avz -e "ssh -i ~/.ssh/backup_key.pem" /var/www/html/ ubuntu@๋ฐฑ์
์๋ฒIP:/backup/www/
6. cron์ผ๋ก ๋ฐฑ์ ์๋ํํ๊ธฐ
rsync ๋ช ๋ น์ด๋ฅผ cron์ ๋ฑ๋กํ๋ฉด ์ ๊ธฐ์ ์ผ๋ก ์๋ ๋ฐฑ์ ์ด ์คํ๋ฉ๋๋ค. ๋จผ์ ๋ฐฑ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ญ๋๋ค.
nano /home/ubuntu/scripts/backup.sh
์คํฌ๋ฆฝํธ ๋ด์ฉ์ ์์ฑํฉ๋๋ค.
#!/bin/bash
DATE=$(date +%Y%m%d)
rsync -avz /var/www/html/ /backup/www_$DATE/
echo "Backup completed: $DATE"
์คํฌ๋ฆฝํธ์ ์คํ ๊ถํ์ ๋ถ์ฌํ๊ณ crontab์ ๋ฑ๋กํฉ๋๋ค.
chmod +x /home/ubuntu/scripts/backup.sh
crontab -e
๋งค์ผ ์๋ฒฝ 3์์ ์คํํ๋๋ก ์๋ ์ค์ ์ถ๊ฐํฉ๋๋ค.
0 3 * * * /home/ubuntu/scripts/backup.sh >> /var/log/backup.log 2>&1
7. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ์๋ํ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ์ผ ๋ฐฑ์ ๊ณผ ๋ณ๋๋ก ์งํํด์ผ ํฉ๋๋ค. MySQL ๋ฐฑ์ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ง๋ค๊ณ ์๋ ๋ด์ฉ์ ์์ฑํฉ๋๋ค.
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
mysqldump -u root -p๋น๋ฐ๋ฒํธ --all-databases > /backup/db_$DATE.sql
gzip /backup/db_$DATE.sql
๋น๋ฐ๋ฒํธ๋ฅผ ๋ช ๋ น์ด์ ์ง์ ์ฐ๋ ๋์ ~/.my.cnf ํ์ผ์ ์๊ฒฉ์ฆ๋ช ์ ์ ์ฅํ๋ ๊ฒ์ด ๋ณด์์ ๋ ์์ ํฉ๋๋ค.
[client]
user=root
password=๋น๋ฐ๋ฒํธ
์ด๋ ๊ฒ ์ค์ ํ๋ฉด ์ดํ mysqldump --all-databases์ฒ๋ผ ๋น๋ฐ๋ฒํธ ์์ด ์คํํ ์ ์์ต๋๋ค.
8. ๋ฐฑ์ ๋ณด์กด ๊ธฐ๊ฐ ๊ด๋ฆฌํ๊ธฐ
๋งค์ผ ๋ฐฑ์ ์ ๋ง๋ค๋ฉด ์๊ฐ์ด ์ง๋ ์๋ก ๋์คํฌ๊ฐ ๊ฐ๋ ์ฐน๋๋ค. 30์ผ ์ด์ ๋ ๋ฐฑ์ ํ์ผ์ ์๋ ์ญ์ ํ๋ ๋ช ๋ น์ด๋ฅผ cron์ ๋ฑ๋กํฉ๋๋ค.
0 4 * * * find /backup -name "*.sql.gz" -mtime +30 -delete
9. ์ ๋ฆฌ ๋ฐ ๋ค์ ๋จ๊ณ
์ค๋ ๋ฐฐ์ด ํต์ฌ์ ์ ๋ฆฌํฉ๋๋ค.
- rsync๋ ๋ณ๊ฒฝ๋ ํ์ผ๋ง ์ ์กํ๋ ํจ์จ์ ์ธ ๋ฐฑ์ ๋๊ตฌ์ ๋๋ค.
- rsync์ cron์ ์กฐํฉํ๋ฉด ์ ๊ธฐ ์๋ ๋ฐฑ์ ์์คํ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
- ํ์ผ ๋ฐฑ์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ์ ๋ณ๋๋ก ์งํํฉ๋๋ค.
- 3-2-1 ๊ท์น์ ๋ฐ๋ผ 3๊ณณ ์ด์์ ๋ฐฑ์ ์ ๋ณด๊ดํ๋ ๊ฒ์ด ์ด์์ ์ ๋๋ค.
- ์ค๋๋ ๋ฐฑ์ ์ ์๋ ์ญ์ ์ ์ฑ ์ ์ค์ ํด ๋์คํฌ ๋ญ๋น๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๋ค์ ๊ธ์์๋ ๋ด๋ถ ๋คํธ์ํฌ์ ์ธ๋ถ ๋คํธ์ํฌ์ ์ฐจ์ด๋ฅผ ์์๋ณด๊ฒ ์ต๋๋ค.