무료 소프트웨어를 사용하여 실행 중인 Linux 시스템의 원자 증분 백업을 수행하는 방법은 무엇입니까?

무료 소프트웨어를 사용하여 실행 중인 Linux 시스템의 원자 증분 백업을 수행하는 방법은 무엇입니까?

저는 실행 중인 디스크 기반 Linux 시스템(예: Ubuntu 등)에서 사용할 수 있는 무료 소프트웨어인 증분 백업 도구를 찾고 있습니다.


Clonezilla는 정확한 백업을 만들 수 있지만 시스템이 유휴 상태일 때만 가능합니다.

Acronis for Linux는 실행 중인 시스템에서 정확한 백업을 수행할 수 있지만 무료 소프트웨어는 아닙니다. Acronis 및 BTRFS는 운영 체제 런타임 중단 효과를 시뮬레이션하기 위해 파일 시스템 런타임 변경 사항을 캡처하는 방법을 사용합니다. 나는 이것을 수행하는 것을 찾고 있습니다.

rsync, dump 및 기타 여러 부적절한 도구가 권장되며 이러한 목적으로 사용되기도 하지만 실행 중인 운영 체제를 정확하게 캡처하는 것은 신뢰할 수 없습니다. rsync는 정적 파일 시스템에서 사용할 때 제대로 작동하지만 다중 스레드 실행 파일 시스템에서는 작동하지 않습니다.

실행 중인 파일 시스템을 어떤 방식으로든 복사하기만 하면 정확한 백업을 만들 수 있다고 믿는 사람이 얼마나 많은지 정말 놀랍습니다. 몇 년 전 나는 작은 멀티태스킹 엔진을 만들었고, 한 작업이 다른 작업을 오염시키는 위험성을 절실히 인식하게 되었습니다. 100% 정확한 복구 가능한 백업 캡처는 백업이 원자성 작업으로 실행되고 다른 모든 작업이 작동하는 동안 중지되는 경우에만 보장됩니다. 백업이 있으면 도움이 될 것이라고 믿고 있지만 사용하려고 할 때 해당 백업이 손상되었다는 사실을 알게 되는 것보다 더 나쁜 것은 없습니다.

가상 설정이 아닌 일반 오래된 데스크톱 Linux에 필요합니다.

답변1

언급한 대로 BTRFS가 이를 수행할 수 있습니다. 이것이 제가 정기적으로 노트북을 백업하는 방법입니다(제가 입력하는 동안 노트북의 가동 시간은 9주 5일입니다).

내 BTRFS 파일 시스템에는 하위 볼륨이 있습니다. 백업할 데이터를 저장하기 위해 파일 시스템의 루트를 사용하지 않는 한, 데이터를 하위 볼륨으로 분할하는 방법과 중첩하는 방법은 여기서 중요하지 않습니다.

다음 명령은 구문과 가능성을 설명하는 데 사용되며 cronjob 또는 systemd.timer로 실행되는 스크립트로 래핑하는 것이 좋습니다.

하위 볼륨의 스냅샷을 찍으려면:

btrfs subvolume snapshot -r <source> <dest>

스냅샷을 직렬화하려면:

btrfs send <snapshot>

이전 스냅샷을 기준으로 스냅샷을 직렬화하려면(예: diff):

btrfs send -p <start> <end>

차등을 생성하려면 "진행률" 모니터링을 사용하여 동적으로 압축하여 백업 서버로 보냅니다.

btrfs send -p <start> <end> | \
    pv -bart | \
    pbzip2 --best | \
    ssh [email protected] "cat > /backups/name.bz2"

비슷한 작업을 수행하되 BTRFS 스트림을 압축하는 대신 백업 서버에서 BTRFS 하위 볼륨을 다시 만듭니다.

btrfs send -p <start> <end> | \
    pv -bart | \
    pbzip2 --best | \
    ssh [email protected] "pbzip2 -d | \
    btrfs receive <target>"

복원하려면 .apply를 통해 새 BTRFS 파일 시스템에 스냅샷을 적용하세요 btrfs receive.


자세한 내용은 다음과 같습니다.BTRFS 증분 백업

답변2

@mark-k-cowan이 말했듯이 btrfs 스냅샷을 사용하여 이를 수행할 수 있습니다. btrfs는 나에게 너무 미성숙합니다. zfs와 해당 스냅샷을 사용하는 것이 더 좋습니다. @brady-dean이 말했듯이 LVM 스냅샷은 파일 시스템에 구애받지 않는 접근 방식입니다. LVM 스냅샷은 성능에 큰 부정적인 영향을 미칠 수 있습니다.

Acronis에는 블록 수준에서 작동하여 스냅샷을 생성하는 커널 모듈이 있습니다. 이것다토 블록 드라이버동일한 기능을 수행하는 GPLv2(에헴 "자유 소프트웨어") 커널 모듈입니다. (면책 조항 : 나는 그것을 사용한 적이 없습니다.)

답변3

실행 중인 머신을 복제하는 것은 사실상 불가능합니다. 특정 파일을 tarball에 추가하는 스크립트를 작성할 수 있습니다. LVM 스냅샷을 사용하여 시스템 드라이브를 백업할 수도 있습니다.

답변4

rsync(또는 빨리 기억하고 편집할 수 있는 이름의 변형...)를 사용하세요.

전체 백업을 수행한 다음 증분(또는 차등) 백업을 수행하는 데 사용합니다.

또한 다양한 플랫폼에서 사용할 수 있으므로 여러 운영 체제 간에 백업할 수 있습니다.

또한보십시오:https://serverfault.com/q/138287/146493

이는 실행 중인 시스템의 전부는 아니더라도 대부분의 파일에 적합합니다(파일에 대한 일부 쓰기는 잘리지만 실행 중에 백업하는 경우 이는 정상입니다). (또한 dd를 사용하여 다음과 같은 추가 섹터 정보를 저장해야 합니다. 전체 복구를 수행하려는 경우 부트 섹터)...또는 말씀하신 대로 해당 용량이 내장된 파일 시스템을 사용하십시오.

실행 중인 데이터베이스를 백업하려는 경우 먼저 이 데이터베이스 덤프 도구를 사용하고 백업하세요.

관련 정보