[리눅스] 시스템 백업 및 복구를 위한 셸 스크립트

리눅스 시스템에서 데이터 손실을 방지하고 시스템 장애에 대비하기 위해서는 정기적인 백업복구가 필수적입니다. 이를 자동화하기 위해 셸 스크립트를 사용할 수 있습니다. 이번 포스팅에서는 리눅스 시스템을 백업하고 복구하기 위한 간단한 셸 스크립트를 작성하는 방법을 알아보겠습니다.

백업 스크립트 작성

1. 파일 시스템 백업

먼저, 파일 시스템의 백업을 위해 tar 명령어를 사용한 스크립트를 작성해보겠습니다. 아래는 /var/www 디렉토리를 backup.tar 파일로 백업하는 스크립트의 예시입니다.

#!/bin/bash
backup_file="backup-$(date +%Y%m%d).tar"
tar -cvf $backup_file /var/www

이 스크립트는 backup-YYYYMMDD.tar 형식의 파일명으로 /var/www 디렉토리를 백업합니다.

2. 데이터베이스 백업

데이터베이스의 백업을 위해서는 해당 데이터베이스 시스템의 백업 명령어를 셸 스크립트에 포함시킬 수 있습니다. MySQL 데이터베이스의 백업 스크립트 예시는 다음과 같습니다.

#!/bin/bash
backup_file="db_backup-$(date +%Y%m%d).sql"
mysqldump -u [username] -p[password] [database_name] > $backup_file

위에서 [username], [password], [database_name]은 각각 데이터베이스 접속 계정, 암호, 데이터베이스명을 나타냅니다.

복구 스크립트 작성

1. 파일 시스템 복구

파일 시스템의 복구를 위해서는 백업 파일을 이용하여 데이터를 원래 위치로 복원해야 합니다. 아래의 스크립트는 backup.tar 파일에서 /var/www로의 복원을 수행하는 예시입니다.

#!/bin/bash
tar -xvf backup.tar -C /var/www

2. 데이터베이스 복구

데이터베이스의 경우 백업 파일을 이용하여 데이터를 복원하는 명령어를 스크립트로 작성할 수 있습니다. MySQL 데이터베이스의 복구 스크립트 예시는 다음과 같습니다.

#!/bin/bash
mysql -u [username] -p[password] [database_name] < db_backup.sql

정기적인 백업 스케줄링

마지막으로, 백업과 복구 스크립트를 주기적으로 실행하기 위해 크론을 사용하여 스케줄링할 수 있습니다. 예를 들어 매일 새벽 2시에 백업 스크립트를 실행하려면 다음과 같이 크론 작업을 등록할 수 있습니다.

0 2 * * * /path/to/backup_script.sh

위의 코드에서 /path/to/backup_script.sh를 자체의 백업 스크립트 경로로 변경해야 합니다.

시스템 백업 및 복구는 시스템 관리 작업 중 매우 중요한 부분이며, 이러한 작업들을 자동화하여 안정성을 높일 수 있습니다.

이상으로 리눅스 시스템 백업 및 복구를 위한 셸 스크립트에 대한 블로그 포스팅을 마치겠습니다. 부족한 부분이 있다면 추가적인 정보를 참고할 수 있도록 여기를 참조해주세요.