백업을 안전하게 제외 할 수있는 항목


10

rsnapshot 기반 백업 전략을 계획 중 입니다.

복원에 작동하는 시스템을 다시 갖는 데 쓸모없는 파일과 디렉토리를 제외하고 전체 시스템 백업을 수행하고 싶습니다. 나는 이미 제외했다 :

# System:
exclude /dev/*
exclude /proc/*
exclude /sys/*
exclude /tmp/*
exclude /run/*
exclude /mnt/*
exclude /media/*
exclude /lost+found

# Application:
exclude /*.pyc
exclude /*.pyo

복원 된 시스템을 손상시키지 않고 제외 목록에 추가 할 수있는 다른 항목이 궁금합니다. "일반적인"Linux 시스템에 대해 이야기 할 때, 추가 확장 기능, 임시 디렉토리, 캐시 등을 제안 할 수 있습니까? 안전하게 제외 할 수 있습니까?

답변:


11

먼저 rsync의 include / exclude 구문에 대해 약간 읽어보십시오. 나는 당신이하고 싶은 것이 **globs보다 *globs를 사용하는 것이 더 좋다는 느낌을 얻습니다 . ( **여러 항목으로 *확장 되는 반면 여러 디렉토리 항목과 일치하는 단일 항목으로 만 확장됩니다 . 세부 사항은 패턴 규칙 포함 / 제외man rsync 아래에 있습니다.)

즉, 최소한의 번거 로움없이 백업에서 시스템을 알려진 작동 상태로 복원하려면 파일이나 디렉토리를 제외하는 데주의해야합니다. 나는 rsnapshot을 직접 사용하고 실제로 반대 접근법을 취했습니다. 신중하게 선택된 몇 가지 디렉토리를 제외한 모든 것을 포함하십시오.

따라서 내 rsnapshot.conf는 실제로 (rsnapshot의 구성 파일 파서를 행복하게하는 탭이 있음) 상태입니다.

interval backup NNN # pick your poison
one_fs 0
exclude /backup/**
exclude /dev/**
exclude /proc/**
exclude /run/**
exclude /sys/**
exclude /tmp/**
backup / ./

그리고 아주 조금. 그렇습니다. 엄격히 필요한 것보다 조금 더 복사 할 수는 있지만 ephermal이 아닌 것을 복사하는 것을 보장합니다. rsync의 hardlink-to-deuplicate 동작을 사용하는 rsnapshot으로 인해 실제 비용은 첫 번째 실행 중입니다. 그 후에 합리적 크기 (전체 데이터 세트 크기와 비교) 백업 대상 위치가 있다고 가정하면 시간이나 디스크 공간에서 추가 작업이 거의 필요하지 않습니다. 백업 대상 파일 시스템을 마운트하기 때문에 / backup의 내용을 제외합니다. 이를 제외하지 않으면 백업 자체로 복사되는 상황이 발생합니다. 그러나 베어 메탈로 복원해야 할 경우 간단하게 마운트 지점을 유지하고 싶습니다!

제 경우에는 합리적으로 사용할 수 없습니다 one_fs 1. 현재 ~ 40 파일 시스템으로 ZFS를 실행합니다. 이러한 모든 것들을 명시 적으로 나열하는 것은 유지 관리의 악몽이 될 것이며 ZFS 파일 시스템 작업은 필요 이상으로 훨씬 더 복잡해집니다.

어쨌든 위에서 제외하고 싶은 것은 배포에 달려 있기 때문에 일반적인 대답을하는 것은 사실상 불가능합니다. 즉, / var 아래에서 일부 후보를 찾을 수 있습니다.


1
exclude /somepath/*이 경우 완벽하게 괜찮습니다. /somepath/예상대로의 모든 항목이 제외됩니다 . **모든 항목 /somepath/이 이미 제외 된 경우 더 깊게 볼 필요 가 없기 때문에 필요하지 않습니다 .
Martin von Wittich

또는 exclude /somepath그 내용뿐만 아니라 이러한 디렉토리를 모두 사용 하고 무시하십시오.
Frank Kusters

4
@spaceknarf 베어 메탈에 복원 할 때 마운트 지점이 없기 때문에 마운트가 중단됩니다.
CVn

4

대부분의 작업은 one_fs설정 을 사용하여 간단히 수행 할 수 있습니다 . 다음, 당신이 백업에 포함 할 파일 시스템을 설정합니다 (나머지는 무시하는 설정을 사용하여 proc, sys, dev, 등). /lost+found손상된 파일 시스템을 백업하지 않은 경우 해당 디렉토리는 항상 비어 있어야하므로 포함 된 경우에는 fsck복구 된 모든 항목의 백업을 원할 것입니다 . 또한, .pyc그리고 .pyo나도 그 라인을 제거하는 것, 그래서 정말, 처음부터 루트 디렉토리에 있으면 안됩니다. /tmp그리고 /var/tmp안정적으로 백업에서 제외 할 수있는 데이터를 포함는 "일반적인"시스템에 남아있는 유일한 경로에 대한 있습니다. 따라서 다음과 같은 것을 시도해보십시오.

one_fs 1

exclude /tmp/
exclude /var/tmp/

난 정말 말은하지 않았다 /*.pyc/*.pyc넓은하지만 시스템 *.pyc*.pyo나는 그것을 고정. 그래도 원하는 것을 제외하도록 one_fs설정되어 있는지 확실하지 않습니다 1.
Paolo

1
시스템 패키지가 그러한 파일을 사용하면 어떻게됩니까?
depquid

당신이 옳지 만 모든 파일 .py가 조만간 자동으로 다시 컴파일 될 것이라고 거의 확신합니다.
Paolo

3
아마도 내 시스템에서 이러한 파일은 공급 업체 패키지로 설치됩니다. 즉, 시스템을 백업에서 복원하면 패키지 관리자가 생각하는 파일이 누락됩니다. 당신은 "일반적인"리눅스 시스템에 대한 해결책에 대해 물었고, 나는 그런 파일들이 문제없이 손실 될 수 있다고 항상 가정하는 것이 안전하지 않다고 생각합니다.
depquid

Q에서 말하는 것을 잊어 버린 점은 데이터 복제를 피하기 위해 바인드 마운트 를 제외해야한다는 것입니다.
Paolo

1

패키지 목록, / etc, / home의 내용 및 / var 및 다른 곳의 사용자 / 시스템 데이터를 갖는 것이 좋습니다. 일반적으로 패키지를 다시 설치하고 작업 구성을 다시 복사하는 것이 더 빠릅니다.


모든 시스템 파일 작성과 구성 및 메타 데이터 처리가 포함 된 패키지 설치가 단순히 파일을 복사하는 것보다 더 빠른 이유는 무엇입니까?
depquid

실제 백업이 필요할 때 시스템에 대한 모든 비트를 올바르게 저장하고 문서화하지 않았 음을 알게되었습니다. 복원보다는 레크리에이션에 초점을 맞추면 더 쉽고 빠르며 더 자주 수행됩니다. 분명히 YMMV.
Sean Perry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.