웹사이트 검색

Centos 6에서 Rsync를 사용하여 사이트의 오프사이트 백업을 만드는 방법


상태: 더 이상 사용되지 않음

이 문서에서는 더 이상 지원되지 않는 CentOS 버전에 대해 설명합니다. 현재 CentOS 6을 실행하는 서버를 운영 중인 경우 지원되는 버전의 CentOS로 업그레이드하거나 마이그레이션하는 것이 좋습니다.

이유:

대신 참조:

다음 DigitalOcean 튜토리얼은 rsync를 사용하여 로컬 디렉토리를 원격 디렉토리와 동기화하는 방법에 대한 일반적인 개요를 제공하므로 즉시 관심을 가질 수 있습니다.

  • Rsync를 사용하여 로컬 및 원격 디렉토리를 동기화하는 방법

소개

이 문서에서는 일반적인 웹 호스팅 시나리오에서 가장 일반적인 항목인 웹 사이트 파일 및 데이터베이스 데이터를 백업하는 빠른 방법을 제공합니다. 우리는 웹 사이트 폴더의 전체 일일 백업을 설정하고 이 데이터를 원격 서버에 복사합니다(이는 다른 VPS에서도 작동할 수 있음). 또한 증분 변경 사항을 복사하기 위해 rsync 예제를 설정합니다. 마지막으로 MySQL 데이터베이스의 백업을 잘 설정합니다. 설명된 절차에서는 몇 가지 간단한 Bash 명령, rsync 및 cron을 사용하여 백업을 예약합니다. 예를 들어 데이터에 따라 Wordpress를 설치할 수 있습니다.

DigitalOcean은 스냅샷을 제공합니다.

백업을 수행하는 방법에는 증분 백업과 전체 백업의 두 가지가 있습니다. 전체

전체 백업

전체 백업은 일반적으로 다음을 수행합니다.

  • 폴더에 있는 모든 파일의 아카이브 만들기
  • 결과 아카이브를 원격 서버에 복사합니다.

언급한 바와 같이 데이터는 /var/www/wordpress 디렉토리에 있습니다. 백업 폴더 위치를 지정해 드립니다.

mkdir -p /backup/wordpress

위의 명령은 /backup 디렉토리를 생성하고

tar -czf /backup/wordpress/initial_backup.tar.gz
/var/www/wordpress

Tar는 gzip 아카이브를

tar -czf /backup/cms_systems_backup.tar.gz /var/www/wordpress
/var/www/drupal /var/www/joomla

마지막 명령은 설치된 모든 cms 시스템을 백업합니다.

이제 향후 백업을 위해 백업이 수행되는 날짜를 추가할 수 있습니다.

tar -czf /backup/wordpress/wordpress-`date '+%m%d%y'`.tar.gz
/var/www/wordpress

지금 우리가 무엇을 가지고 있는지 보자:

[root@Backup ~]# ls -l /backup/wordpress/
total 9760
-rw-r--r-- 1 root root 4995743 Apr 17 12:16 initial_backup.tar.gz
-rw-r--r-- 1 root root 4995743 Apr 17 12:25 wordpress-041713.tar.gz
[root@Backup ~]#

두 개의 파일이 있습니다. 하나는 initial_backup이고 다른 하나는

EDITOR=nano crontab -e

텍스트 편집기에서 crontab 파일이 열립니다. 기본적으로 DO CentOS

crontab -e

이제 cron에게 매일 오전 3시 30분에 백업하라고 알려야 합니다.

MAILTO=email@example.com
30 3 * * * /bin/tar -czf /backup/wordpress/wordpress-`date
+\%m\%d\%y`.tar.gz /var/www/wordpress

CTRL-X로 파일을 저장하고 Y로 확인하고 Enter를 누릅니다. 위의

다른 원격 서버에 백업 복사

백업을 다른 원격 서버에 복사하려면 scp - 보안 복사를 사용합니다.

ssh-keygen

지금은 암호를 비워두고 다음을 사용할 수 있습니다.

cat .ssh/id_rsa_backup.pub

SSH 키의 이 공개 부분을 원격 서버에 복사해야 합니다.

scp .ssh/id_rsa_backup.pub
backup@backup.example.com:/home/backup/backup_key.pub

백업 사용자 암호를 묻는 메시지가 나타납니다. 파일을 복사했습니다.

ssh backup@backup.example.com "mkdir -p /home/backup/.ssh"
ssh backup@backup.example.com "chmod 700 /home/backup/.ssh"
ssh backup@backup.example.com "touch /home/backup/.ssh/authorized_keys"
ssh backup@backup.example.com "chmod 600 /home/backup/.ssh/authorized_keys"
ssh backup@backup.example.com "mkdir -p /home/backup/backups"

위의 몇 가지 명령은 SSH가 작동할 디렉토리를 생성했습니다.

ssh backup@backup.example.com "cat /home/backup/backup_key.pub >>
/home/backup/.ssh/authorized_keys"

이제 이 키를 사용하여 나중에 항목을 복사할 수 있습니다.

이제 거기에 백업 파일을 복사해 보겠습니다.

scp -i .ssh/id_rsa_backup
/backup/wordpress/wordpress-041713.tar.gz
backup@backup.example.com:/home/backup/backups

키 설정이 올바르면 파일이 복사되고

ssh backup@backup.example.com "ls -l /home/backup/backups"

이제 이 작업을 crontab에도 예약할 수 있습니다. 시작

EDITOR=nano crontab -e

이제 백업 라인을 변경할 것입니다. 복사할 정보를 추가하고 싶습니다.

30 3 * * * /bin/tar -czf /backup/wordpress/wordpress-`date
+\%m\%d\%y`.tar.gz /var/www/wordpress;/usr/bin/scp -i
/root/.ssh/id_rsa_backup /backup/wordpress/wordpress-`date
+\%m\%d\%y`.tar.gz
backup@backup.example.com:/home/backup/backups

참고: 이것은 일반적인 방법이 아니며 설정하는 것이 좋습니다.

증분 백업

하지만 다른 서버에 자체 백업 소프트웨어가 있다면 어떨까요? 우리는 그냥

ssh backup@backup.example.com "mkdir -p /home/backup/sync"
rsync -avz --delete -e "ssh -i /root/.ssh/id_rsa_backup"
/var/www/wordpress backup@backup.example.com:/home/backup/sync

첫 번째 줄은 스냅샷 디렉토리를 생성하고 두 번째 줄은 스냅샷 디렉토리를 복사합니다.

EDITOR=nano crontab -e

crontab 줄은 다음과 같아야 합니다.

30 3 * * * /usr/bin/rsync -avz --delete -e "ssh -i
/root/.ssh/id_rsa_backup" /var/www/wordpress
backup@backup.example.com:/home/backup/sync

이제 우리의 원격 서버는 항상 새로 동기화된 사본을 갖게 됩니다.

백업 데이터베이스

데이터베이스를 백업할 수도 있습니다. 먼저 데이터를 덤프하려고 합니다. 만약에

mkdir /backup/mysql
mysqldump < wordpress -u wordpressuser -ppassword | gzip >
/backup/mysql/initial.sql.gz

이 명령은 initial.sql.gz gzip 압축 SQL 파일을 생성했습니다.

0 4 * * * /usr/bin/mysqldump < wordpress -u wordpressuser
-ppassword | /bin/gzip > /backup/mysql/mysql--`date +\%m\%d\%y`.sql.gz

이제 scp 또는 rsync와 결합하여 원격으로 복사할 수도 있습니다.

0 4 * * * /usr/bin/mysqldump < wordpress -u wordpressuser
-ppassword | /bin/gzip > /backup/mysql/mysql-`date +\%m\%d\%y`.sql.gz;
/usr/bin/scp -i /root/.ssh/id_rsa_backup /backup/mysql/mysql-`date
+\%m\%d\%y`.sql.gz  backup@backup.example.com:/home/backup/

이 설정을 통해 사례에 대한 데이터 설정의 기본 백업이 있습니다.