Linux 시스템을 백업하는 방법

소중한 데이터를 잃어버리는 위험을 감수하지 마세요. Linux 명령줄에서 데이터를 백업하는 방법을 소개합니다. 강력한 rsync 명령어를 활용하고, 필요에 따라 유용한 그래픽 인터페이스 옵션도 함께 살펴보겠습니다.

파일을 백업하는 방법은 다양하지만, 여기서는 강력하고 유연하며 안정적인 데이터 보호 방법을 제시하고자 합니다. 그 중심에는 널리 알려진 알고리즘을 기반으로 하는 rsync가 있습니다. rsync는 원본과 대상 디렉토리 내 파일들의 차이점을 정확하게 계산하여, 전체 파일이 아닌 변경된 부분만을 전송함으로써 효율성을 극대화합니다.

이러한 효율성과 1990년대 중반부터 파일 복사 및 디렉토리 동기화에서 입증된 안정성을 바탕으로, rsync는 Linux 명령줄에서 백업을 생성하기 위한 최적의 선택이라고 할 수 있습니다.

또한 rsync를 더욱 편리하게 사용할 수 있도록 도와주는 다양한 독립 소프트웨어 프로그램들이 존재합니다. 이러한 프로그램들은 rsync에 그래픽 사용자 인터페이스(GUI)를 제공하여 사용 편의성을 높여줍니다.

백업 과정이 간단하고 빠를수록, 우리는 백업을 더 자주 실행하게 될 것입니다.

외장 하드 드라이브를 활용한 rsync 백업

데이터를 외장 하드 드라이브에 백업하기 위해서는 해당 드라이브가 시스템에 마운트되어 있어야 하며, 접근 가능해야 합니다. 즉, 드라이브에 쓰기 권한이 있다면, rsync 또한 사용할 수 있습니다. 여기서는 ‘SILVERXHD'(Silver eXternal Hard Drive의 약자)라는 외부 USB 하드 드라이브가 Linux 컴퓨터에 연결되어 자동으로 마운트되었다고 가정합니다.

먼저 해당 드라이브의 정확한 경로를 확인해야 합니다. 그놈 환경에서 노틸러스 파일 브라우저를 열고, 사이드바에서 드라이브 이름을 찾아볼 수 있습니다.

외장 드라이브 이름 위에 마우스 커서를 올리면, 툴팁에 드라이브의 경로가 표시됩니다.

위 예시에서 툴팁은 외장 드라이브의 파일 시스템 마운트 지점이 ‘/media/dave/SILVERXHD’임을 나타냅니다.

만약 파일 브라우저에서 드라이브 경로를 찾을 수 없다면, 외장 드라이브를 직접 찾아 해당 위치에서 터미널 창을 열고, ‘pwd’ 명령어를 사용하여 현재 터미널 창의 경로를 확인할 수 있습니다.

원본 디렉토리의 내용만을 복사하는 방법

rsync를 사용하여 특정 디렉토리의 내용만을 백업하려면 다음 명령어를 사용하십시오.

‘-r'(재귀) 옵션은 rsync가 모든 하위 디렉토리와 그 내용을 재귀적으로 복사하도록 합니다. 여기서 ‘SILVERXHD’ 끝에 있는 슬래시(/)는 스크린샷에서 다음 줄로 넘어가 있습니다.

rsync -r /home/dave/Documents/ /media/dave/SILVERXHD/

파일 복사가 완료되면, 명령줄 프롬프트로 돌아갑니다.

외장 USB 드라이브를 확인하면, Documents 디렉토리 안에 있던 모든 디렉토리가 외장 드라이브의 최상위 경로에 복사된 것을 확인할 수 있습니다.

ls

원본 디렉토리 자체와 내용 모두 복사하는 방법

Documents 디렉토리 자체와 그 안의 내용 모두를 외장 드라이브에 복사하려면, 명령어 ‘/home/dave/Documents’ 끝에 붙은 슬래시(/)를 제거하면 됩니다.

rsync -r /home/dave/Documents /media/dave/SILVERXHD/

혼동을 피하기 위해, 두 번째 명령어를 실행하기 전에 외장 드라이브에서 이전에 복사한 두 개의 디렉토리를 삭제했습니다.

두 번째 복사가 완료된 후 외장 드라이브를 확인해보면, Documents 디렉토리가 복사되었고, 그 안에 해당 내용들이 포함된 것을 알 수 있습니다. 이때, 내용들은 외장 드라이브의 최상위 경로가 아닌 Documents 디렉토리 내에 존재합니다.

특정 대상 디렉토리에 복사하는 방법

대상 하드 드라이브의 특정 디렉토리에 복사하려면, 대상 경로에 해당 디렉토리 이름을 추가하면 됩니다. 예를 들어, ‘/home/dave/Documents’ 디렉토리의 내용을 외장 드라이브의 ‘backups’ 디렉토리에 복사한다고 가정해 봅시다.

다음 명령어를 사용하여 이를 수행할 수 있습니다.

rsync -r /home/dave/Documents/ /media/dave/SILVERXHD/backups/

외장 드라이브를 확인하면, ‘backups’ 디렉토리가 생성되었고, 그 안에 ‘/home/dave/Documents’ 디렉토리의 내용이 복사되어 있는 것을 알 수 있습니다.

ls
ls backups

파일 소유권 및 권한 유지

‘-a'(아카이브) 옵션을 사용하여 복사되는 파일, 심볼릭 링크, 특수 블록 파일의 수정 날짜, 파일 소유권, 액세스 권한 등과 같은 파일 속성을 보존할 수 있습니다.

rsync -ra /home/dave/Documents/ /media/dave/SILVERXHD/backups/

상세 모드 활성화

‘-v'(verbose) 옵션은 rsync가 복사되는 파일 목록을 출력하도록 만듭니다.

rsync -rav /home/dave/Documents/ /media/dave/SILVERXHD/backups/

복사가 완료되면 백업 요약 정보가 표시됩니다.

전송됨: 대상에 전송된 바이트 수입니다.
수신됨: 호스트에서 수신된 바이트 수입니다.
바이트/초: 실제 전송 속도입니다.
전체 크기: rsync를 사용하지 않았다면 전송되었을 총 데이터 크기입니다. rsync를 반복 실행하면 파일의 변경 부분만 전송하므로, 이 값은 rsync가 전송하지 않아도 되는 데이터의 양을 나타냅니다.
속도 향상: 전송해야 하는 데이터 양과 전체 데이터 양 사이의 비율입니다. rsync를 처음 실행할 때와 같이 모든 파일을 전체적으로 복사해야 할 때는 속도 향상 값이 1.0이 됩니다. 그 이후의 실행에서는 변경된 부분만 전송하여 효율성을 높입니다. 이 값은 전송해야 하는 소량의 데이터와 전체 파일 크기 간의 비율을 나타냅니다.

진행률 옵션 사용

‘-P'(진행률) 옵션을 사용하면 rsync가 각 파일이 복사될 때마다 작은 진행률 보고서를 생성합니다.

rsync -raP /home/dave/Documents/ /media/dave/SILVERXHD/backups/

제공되는 정보는 복사되는 각 파일마다 표시됩니다.

제공되는 정보는 다음과 같습니다.

바이트 크기: 해당 파일에 대해 전송된 데이터 크기입니다.
백분율: 전송된 파일의 백분율입니다.
B/s: 데이터 전송 속도입니다.
남은 시간: 현재 파일 전송에 필요한 예상 시간입니다.
xfr#: 지금까지 전송된 파일 수입니다.
to-chk: 최적화 알고리즘에 의해 검사 및 검증될 나머지 파일 수입니다.

속도 향상을 위한 추가 옵션

전송 속도를 높이려면 ‘-z'(압축) 옵션을 사용하세요. 이 옵션은 전송 중인 파일을 압축하지만, 대상 디렉토리에는 압축되지 않은 상태로 저장됩니다.

압축 옵션은 작은 파일이 많은 전송에서는 큰 효과를 보지 못할 수 있지만, 더 큰 파일들의 모음에서는 전송 시간을 크게 줄일 수 있습니다.

여기서는 ‘–partial’ 옵션도 함께 사용하고 있습니다. rsync는 기본적으로 네트워크 오류나 중단으로 인해 부분적으로 전송된 파일을 삭제합니다. ‘–partial’ 옵션은 rsync가 부분적으로 전송된 파일을 대상에 남겨두도록 합니다. 이로써, rsync 재실행 시 부분적으로 전송된 파일을 다시 전송할 필요가 없어 시간을 절약할 수 있습니다.

다만 부분적으로 전송된 파일이 완전히 전송된 파일로 오인될 가능성이 있다면 이 옵션은 사용하지 않는 것이 좋습니다.

rsync -ravz  --partial /home/dave/Documents/ /media/dave/SILVERXHD/backups/

위 예시에서는 속도 향상 효과가 미미하지만,

속도 향상 비율이 200분의 2만큼 개선된 것을 확인할 수 있습니다! 실제 시나리오에서는 더욱 인상적인 속도 향상을 경험할 수 있습니다.

네트워크를 통한 rsync 사용

지금까지는 외장 USB 드라이브를 대상으로 백업을 진행했지만, 네트워크 위치를 백업 대상으로 사용하는 것도 가능합니다. 이를 위해서는 명령줄에서 해당 위치에 대한 경로를 사용하면 됩니다. 이 글에서는 네트워크 연결 스토리지 (NAS) 장치를 예시로 사용합니다.

이전에 노틸러스에서 해당 장치 연결 위에 마우스를 올려 NAS 경로를 확인했던 것과 동일한 방법으로 경로를 식별할 수 있습니다.

네트워크를 통한 백업에 특별한 옵션은 없습니다. 이미 사용한 모든 옵션을 그대로 적용할 수 있습니다.

rsync -ravz  --partial /home/dave/Documents/ /media/dave/NAS/dave/backups/

출력 형식에는 차이가 없습니다.

당연히 바이트/초 수치가 크게 개선되었습니다.

rsync를 다시 실행하면 변경된 내용이 없기 때문에 전송할 파일이 없지만, 소스와 대상의 파일 목록을 비교하는 데 필요한 데이터는 여전히 전송됩니다.

이 경우 속도 향상 비율은 훨씬 더 좋습니다. 실제 성능 비율은 두 개의 유사한 가상 값 사이 어딘가에 있을 것입니다.

SSH를 통한 rsync 사용

rsync는 SSH 연결을 통한 백업도 지원합니다. 명령줄에서 사용자 계정 이름과 SSH 연결 위치를 제공해야 합니다. 여기서는 네트워크 이름을 사용했지만 IP 주소를 사용할 수도 있습니다.

SSH 연결 정보와 원격 대상의 네트워크 경로 사이에는 ‘:’ 기호가 있어야 합니다.

rsync -ravz  --partial /home/dave/Documents/ [email protected]:/home/dave/Backups/

원격 컴퓨터의 사용자 계정 비밀번호를 묻는 메시지가 표시됩니다. 이는 원본 컴퓨터의 비밀번호가 아닙니다.

백업은 평소와 같이 완료됩니다. 보안 셸 연결에서 발생하는 암호화 및 복호화 과정 때문에 처리량은 일반 네트워크 연결만큼 빠르지 않을 수 있습니다.

자동 백업 설정

crontab 파일에 항목을 추가하여 자동 백업을 쉽게 설정할 수 있습니다.

crontab -e

매일 오전 4시 30분에 자동 백업이 실행되도록 설정할 것입니다. (물론, 해당 시간에 컴퓨터가 켜져 있는 경우에 한함). rsync 명령어 구문은 이전과 동일하게 유지됩니다.

Ctrl+O를 눌러 파일 변경 사항을 저장하고, Ctrl+X를 눌러 nano 편집기를 종료합니다.

rsync를 위한 사용자 친화적 인터페이스

명령줄에 익숙하지 않은 사용자를 위해 rsync에 그래픽 사용자 인터페이스(GUI)를 제공하는 여러 프로그램이 있습니다. 두 가지 좋은 예로 LuckyBackupGrsync를 들 수 있습니다. 이 두 프로그램 모두 사용자 인터페이스를 통해 다양한 rsync 옵션을 선택할 수 있도록 지원합니다.

Grsync는 rsync를 위한 시각적 래퍼에 초점을 맞추고 있습니다. rsync 옵션에 대한 쉬운 접근성을 제공하고 제한적인 새로운 기능만 추가합니다.

Grsync 설정 대화 상자의 모습입니다.

luckyBackup은 rsync를 위한 단순한 래퍼 그 이상입니다. 이는 백그라운드에서 rsync를 사용하는 백업 프로그램입니다. 예를 들어, luckyBackup은 백업의 여러 “스냅샷”을 생성할 수 있으며, 필요에 따라 특정 스냅샷으로 파일을 복원할 수도 있습니다.

luckyBackup 설정 대화 상자의 모습입니다.

Grsync 설치 방법

Ubuntu에 Grsync를 설치하려면 다음 명령어를 사용하세요.

sudo apt-get install grsync

Fedora에 Grsync를 설치하려면 다음 명령어를 사용하세요.

sudo dnf install grsync

Manjaro에 Grsync를 설치하려면 다음 명령어를 사용하세요.

sudo pacman -Syu grsync

luckyBackup 설치 방법

Ubuntu에 luckyBackup을 설치하려면 다음 명령어를 사용하세요.

sudo apt-get install luckybackup

Fedora에 luckyBackup을 설치하려면 다음 명령어를 사용하세요.

sudo dnf install luckybackup

Manjaro에서는 Arch 사용자 저장소(AUR)에서 luckyBackup을 설치해야 합니다. pamac 패키지 관리자를 사용하여 이를 수행할 수 있습니다.

데이터 백업의 중요성

백업은 절대적으로 중요합니다. 데이터를 자주 백업하고, 여러 위치에 백업하고, 다른 미디어에 백업하십시오. rsync를 사용하면 이 모든 작업을 간편하게 수행할 수 있습니다.