웹 서비스를 호스팅하거나 중요한 작업을 수행하는 리눅스 서버를 운영하고 있다면, 정기적인 백업은 선택이 아닌 필수입니다. 그리고 한 단계 더 나아가, 백업 파일을 다른 위치의 서버에도 복사해 두면 훨씬 안전합니다. 서버 장애, 랜섬웨어 감염, 데이터센터 문제 등 예기치 못한 상황에서도 데이터를 지킬 수 있기 때문입니다. 이 가이드에서는 SSH를 활용해 원격 백업을 실행하는 방법을 단계별로 살펴봅니다.
1단계: SSH 서버 상태 확인
가장 먼저 할 일은 데이터를 백업하려는 서버에서 SSH 서버가 정상적으로 작동하는지 확인하는 것입니다. 터미널 창을 열고 다음 명령어를 실행하세요. hostserver.com은 백업할 데이터가 있는 서버의 호스트명 또는 IP 주소로, user는 로그인할 사용자 계정으로 바꿔 입력합니다.
# ssh user@hostserver.com
2단계: SCP로 파일 직접 복사하기
정상적으로 로그인되었다면 SSH 세션에서 로그아웃한 뒤, 원격 서버의 파일을 로컬로 가져오는 SCP 명령어를 사용할 수 있습니다.
scp -r user@hostserver.com:/home/user/data_files/ /opt/backup/
위 명령어에서 scp -r은 '재귀적 보안 복사(recursive secure copy)'를 의미합니다. 즉, 원격 서버의 /home/user/data_files 디렉터리 전체를 하위 폴더와 파일까지 모두 포함해 로컬 서버의 /opt/backup 경로로 복사합니다.
3단계: tar와 SSH를 조합한 더 스마트한 백업
파일을 하나씩 복사하는 것보다 더 효율적인 방법이 있습니다. 앞서 사용한 명령어를 응용하면, 파일을 전송하는 동시에 압축 아카이브를 생성할 수 있습니다. 여기서는 tar 명령어를 활용합니다. 백업할 데이터가 있는 서버에서 다음 명령어를 실행하고, user@backupserver.com 부분은 백업 서버의 사용자명과 호스트명(또는 IP 주소)으로 변경하세요.
# tar zcvf – /home/user/data_files | ssh user@backupserver.com "cat > /opt/backup/data_files.tgz"
명령어를 실행하면 tar: Removing leading `/' from member names라는 메시지가 출력되는 경우가 많은데, 이는 무시해도 안전합니다. 이후 SSH 접속에 사용할 사용자 비밀번호를 입력하라는 프롬프트가 나타나고, 비밀번호를 입력하면 tar 아카이브 파일의 전송이 시작됩니다.
백업 자동화 팁
위 명령어는 셸 스크립트 형태의 백업 스크립트에 그대로 추가할 수 있습니다. 여기에 공개 키 인증 기반의 비밀번호 없는 SSH 접속 설정을 결합하면, cron과 함께 사용해 사람의 개입 없이 자동으로 실행되는 원격 백업 시스템을 구축할 수 있어 매우 강력합니다.
참고로, 업계에서 권장하는 3-2-1 백업 규칙(원본 1개, 서로 다른 저장 매체에 2개, 물리적으로 분리된 오프사이트에 1개)을 실천하는 데에도 이 방식이 유용하게 활용됩니다. 중요한 데이터일수록 여러 장소에 분산 보관하는 습관을 들이시기 바랍니다.