하드 디스크의 증분 스냅 샷을 만들고 복원하는 방법


13

배포 / 응용 프로그램 테스트 목적으로 Virtual Box를 많이 사용합니다.

내가 단순히 좋아하는 기능 중 하나는 가상 머신 스냅 샷이며, 가상 머신의 상태를 저장하며 문제없이 문제가 발생하거나 모든 하드 디스크 공간을 소비하지 않고 잘못 된 경우 이전 영광으로 복원 할 수 있습니다.

내 라이브 시스템에서 파일 시스템의 1 : 1 이미지를 만드는 방법을 알고 있지만 알려진 모든 솔루션은 완전한 파일 시스템의 새 이미지를 만듭니다.

현재 파일 시스템의 스냅 샷을 만들 수있는 다른 프로그램 / 파일 시스템이 있습니까? 다른 위치에 저장하지만 완전히 새로운 이미지를 만드는 대신 증분 백업을 생성합니까?

내가 원하는 것을 쉽게 설명하려면 dd파일 시스템의 이미지 여야 하지만 전체 백업 대신 증분을 생성해야합니다.


나는 clonezilla 등을 찾고 있지 않습니다. 사용자의 개입없이 시스템 자체에서 실행해야하지만 파일 시스템의 모든 데이터를 포함해야합니다. 또한 mbr을 저장하기 위해 duplicity일부 폴더 스크립트 + dd를 제외한 모든 시스템 의 백업을 찾고 있지 않습니다 . 나는 그 자체로 할 수 있으며 여분의 기교를 찾고 있습니다.

시스템을 크게 변경하기 전에 할 수있는 일을 찾고 있는데, 잘못된 경우 또는 커피를 뿌린 후 하드 디스크를 구운 경우 liveCD에서 부팅하고 작업중인 스냅 샷을 하드 디스크로 복원 할 수 있습니다.

매일 필요는 없으며 일정도 필요하지 않습니다. 한 번에 한 번만 실행하면 파일 복사본이 아닌 RAW 기반 작업이 가능합니다.



설치 가능한 이미지를 만들 수있는 응용 프로그램을 찾고 있습니까? 그렇지 않다면 왜 Deja Dup을 선호하지 않습니까? 응용 프로그램이 설치 가능한 이미지를 만들 수 있는지 묻는다면 그 대답도 알고 싶습니다. 즐겨 찾기 추가
heartsmagic

방금 제목에 ...라는 질문에 대한 답변을 게시했지만 파일 수준 대신 시스템 베어 메탈을 복원 할 수있는 더 많은 방법을 찾고 있습니다.
cprofitt

1
파일 시스템 기반의 증분 백업이 아닌 블록 수준을 원하는 것처럼 들립니다. 스냅 샷을 지원하는 파일 시스템을 사용하는 것 외에는 원하는 것이 가능한지 잘 모르겠습니다. LVM, BTRFS가 가능할 수 있습니다.
cprofitt

제목을 수정하는 @cprofitt thx가 더 정확합니다.
Bruno Pereira

@Bruno-좋은 제목을 만들면 나중에 오는 사람들이 답을 찾을 때 유용합니다.
cprofitt

답변:


14

cprofitt의 대답 을 설명하기 위해 ( 내가 설명 할 것처럼 그의 대답 점진적이므로) ...

먼저 하드 링크에 대해 알아야합니다.

하드 링크는 실제로 디스크에있는 데이터 (실제 위치)를 가리키며 하드 링크를 사용하여 데이터에 액세스 할 수 있습니다. 각 파일과 디렉토리는 물리 디스크의 데이터 위치에 대한 하드 링크입니다. 따라서 동일한 위치를 가리키는 두 개의 파일 (하드 링크)이 있으면 데이터는 한 번만 저장됩니다 .


cprofitt가 제공 한 프로세스는 다음과 같습니다.

  1. 백업을 회전하여 새 지점을 만듭니다. (어제의 "오늘 백업"은 "어제의 백업"이되고, 이틀 전의 "어제 백업"은 "2 일 전의 백업"이됩니다.)

    • 원하는만큼 목록이 계속 커지지 만 스크립트에는 4 개의 스냅 샷 만 있습니다. (다음 단계 (예 : 1 주일- "이번 주 백업")에 대해 전체 프로세스를 다시 수행하고이를 회전하므로 4 개만있는 이유입니다).
    • 덮어 쓰기를 방지하기 위해 이동이 반대로 수행됩니다.
  2. 최근 스냅 샷 (예 : "어제 백업")을 새 스냅 샷 (예 : "오늘 백업")에 복사하여 파일을 복사하지 않고 기존 파일에 새로운 하드 링크를 만듭니다. 따라서 새 스냅 샷의 모든 파일 은 이전 파일 과 동일한 위치를 가리 킵니다 .


예시 된 예

아래 그림에서 파일 이름이 같은 동일한 색상의 파일은 디스크의 동일한 파일에 대한 하드 링크입니다. 여기서는 두 개의 스냅 샷과 몇 개의 파일 만 다루지 만 예제는 확장됩니다. (cproffit의 답변에서 스냅 샷을 스크립트와 반대 방향으로 이동한다는 사실을 제외하고)

여기에 이미지 설명을 입력하십시오

과정은 다음과 같습니다.

  1. 시스템의 스냅 샷이 있습니다.

  2. 스냅 샷이 사본입니다 (기존 파일에 대한 하드 링크 작성)

  3. Rsync가 실행되어 스냅 샷을 업데이트합니다. 파일이 변경되면 새 파일이 하드 디스크에 새 사본으로 저장되므로 이전 스냅 샷은 변경되지 않습니다. 이 예에서는 파일 B가 변경되었습니다. 참고 : 이제 하드 디스크에 파일 A와 파일 C의 사본 하나와 파일 B의 사본 두 개만 저장되었습니다.

  4. 스냅 샷을 회전합니다 (이 경우 스냅 샷 0이 '떨어짐'으로 삭제되고 스냅 샷 1의 이름을 스냅 샷 0으로 바꿉니다)

  5. 스냅 샷 agin 복사 (2 단계 반복)

  6. 다시 동기화하십시오. (3 단계 반복). 이제 파일 A의 사본 1 개와 파일 B와 파일 C의 사본 2 개가 있습니다.


디딤돌처럼 실행되지 않는 [first] 스크립트의 단순화 된 버전은 다음과 같습니다.

#!/bin/bash

# Delete the snapshot we don't want (has 'fallen off')
rm -rf /root/snapshot/home/hourly.3 ;

# Rotate the snapshots by shuffling them back
mv /root/snapshot/home/hourly.2 /root/snapshot/home/hourly.3 ;
mv /root/snapshot/home/hourly.1 /root/snapshot/home/hourly.2 ;

# Copy the snapshot (creating hard links to the existing files)
cp -al /root/snapshot/home/hourly.0 /root/snapshot/home/hourly.1 ;

# Do the rsync ...
# step 4: rsync from the system into the latest snapshot (notice that
# rsync behaves like cp --remove-destination by default, so the destination
# is unlinked first.  If it were not so, this would copy over the other
# snapshot(s) too!
rsync -va --delete /home/ /root/snapshot/home/hourly.0 ;

이제 전체 스크립트 (들) 전체 설명을 가지고 여기 (cprofitt가 연결로) 그것은 더 철저하지만 위와 같이 기본적으로. 다른 스크립트는 스냅 샷을 그룹화하고 cprofitt의 응답 중 다른 부분은 프로세스를 자동으로 수행 (cron 사용) 및 백업이 성공적으로 완료되었는지 확인하는 방법에 대해 설명합니다.

이름을 변경할 수 있으므로 "hourly ..."라는 디렉토리 대신 다른 것으로 불리며 스크립트가 수동으로 실행됩니다.


전체 로트를 복원하려면 최신 스냅 샷 (또는 이전 스냅 샷)을 백업하려는 디렉토리로 다시 복사하십시오.

여전히 스냅 샷에있는 단일 파일을 복원하려면 스냅 샷으로 이동하여 파일을 속한 위치로 다시 복사하십시오.

백업 미디어는 외장 하드 드라이브 일 수 있습니다 (ext2 / ext3 / ext4 여야 함). 당신이 백업 된 경우 /(주로 /boot, /home, /etc /root/usr다음)라고 ...

  1. 외장 드라이브를 마운트하고 백업을 수행하고 최신 스냅 샷을 만듭니다.

  2. 드라이브를 마운트 해제하십시오.

  3. 원하는 파일 (휴지통에서도)을 삭제했습니다.

  4. 외장 드라이브를 연결하고 파일을 검색하십시오.

  5. 백업하기 (확실히하기 위해)

  6. 드라이브 연결을 끊고 여행 중입니다 ...

  7. 랩탑과 용암이 섞이지 않는다는 것을 인식하십시오.

  8. 새 랩톱에서 라이브 CD를 실행하고 내장 드라이브를 포맷하고 외장 드라이브를 마운트 한 다음 cp -a /media/external/snapshot-0/* /media/internal-drive(snapshot-0이 최신 스냅 샷이라고 가정)

  9. ddcprofitt가 자신의 답변 맨 아래에 말한 것처럼 MBR에 grub을 설치하거나 (예, 분리해야 함) mbr을 백업하는 데 사용 하십시오.

  10. 재부팅하십시오.

스크립트는 (원하는 것만 가져 오기 위해) 다듬어야하며 절차 aove는 /home파티션 이 없다고 가정 합니다. 디스크에 새 디스크를 만들거나 mount /dev/sdxy /media/external/home복사 한 경우 복사하기 전에 디스크를 장착하십시오 .


100dd 스냅 샷 100 x <average size of snapshot> 에는 디스크 공간이 필요합니다. 이 중 100은 비용이 듭니다 <size of snapshot> + <size of changed files>. 이것을 사용하여 / home (~ 400GB)의 여러 스냅 샷을 500GB 디스크에 넣었습니다.
Portablejim

파일 시스템에 가상 디스크 이미지를 마운트 한 다음 백업 할 수 있습니다. superuser.com/questions/158908/… 및 링크 참조
Portablejim

말했듯이, 이것은 가상 상자가 아닌 실행중인 컴퓨터 용이며 vbox는 단지 예입니다.
Bruno Pereira

업데이트 된 질문 (주석을 추가하는 대신 끝에).
Portablejim

@Portablejim : cp가 "하드 링크 보존"이라고 쓰고 있습니다. 나는이 문구가 혼란 스럽다고 생각한다. cp -al소스 파일을 복사하는 대신 소스 파일에 대한 하드 링크를 만들고 있습니다. 예를 들어 그림 2의 A 파일이 동일한 파일임을 보여줌으로써이를 반영해야합니다.
다니엘 쿨만

7

rsync를 사용할 수 있습니다.

Listing one: make_snapshot.sh

#!/bin/bash
# ----------------------------------------------------------------------
# mikes handy rotating-filesystem-snapshot utility
# ----------------------------------------------------------------------
# this needs to be a lot more general, but the basic idea is it makes
# rotating backup-snapshots of /home whenever called
# ----------------------------------------------------------------------

unset PATH  # suggestion from H. Milz: avoid accidental use of $PATH

# ------------- system commands used by this script --------------------
ID=/usr/bin/id;
ECHO=/bin/echo;

MOUNT=/bin/mount;
RM=/bin/rm;
MV=/bin/mv;
CP=/bin/cp;
TOUCH=/bin/touch;

RSYNC=/usr/bin/rsync;


# ------------- file locations -----------------------------------------

MOUNT_DEVICE=/dev/hdb1;
SNAPSHOT_RW=/root/snapshot;
EXCLUDES=/usr/local/etc/backup_exclude;


# ------------- the script itself --------------------------------------

# make sure we're running as root
if (( `$ID -u` != 0 )); then { $ECHO "Sorry, must be root.  Exiting..."; exit; } fi

# attempt to remount the RW mount point as RW; else abort
$MOUNT -o remount,rw $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readwrite";
    exit;
}
fi;


# rotating snapshots of /home (fixme: this should be more general)

# step 1: delete the oldest snapshot, if it exists:
if [ -d $SNAPSHOT_RW/home/hourly.3 ] ; then         \
$RM -rf $SNAPSHOT_RW/home/hourly.3 ;                \
fi ;

# step 2: shift the middle snapshots(s) back by one, if they exist
if [ -d $SNAPSHOT_RW/home/hourly.2 ] ; then         \
$MV $SNAPSHOT_RW/home/hourly.2 $SNAPSHOT_RW/home/hourly.3 ; \
fi;
if [ -d $SNAPSHOT_RW/home/hourly.1 ] ; then         \
$MV $SNAPSHOT_RW/home/hourly.1 $SNAPSHOT_RW/home/hourly.2 ; \
fi;

# step 3: make a hard-link-only (except for dirs) copy of the latest snapshot,
# if that exists
if [ -d $SNAPSHOT_RW/home/hourly.0 ] ; then         \
$CP -al $SNAPSHOT_RW/home/hourly.0 $SNAPSHOT_RW/home/hourly.1 ; \
fi;

# step 4: rsync from the system into the latest snapshot (notice that
# rsync behaves like cp --remove-destination by default, so the destination
# is unlinked first.  If it were not so, this would copy over the other
# snapshot(s) too!
$RSYNC                              \
    -va --delete --delete-excluded              \
    --exclude-from="$EXCLUDES"              \
    /home/ $SNAPSHOT_RW/home/hourly.0 ;

# step 5: update the mtime of hourly.0 to reflect the snapshot time
$TOUCH $SNAPSHOT_RW/home/hourly.0 ;

# and thats it for home.

# now remount the RW snapshot mountpoint as readonly

$MOUNT -o remount,ro $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readonly";
    exit;
} fi;

그리고 두 번째 :

Listing two: daily_snapshot_rotate.sh

#!/bin/bash
# ----------------------------------------------------------------------
# mikes handy rotating-filesystem-snapshot utility: daily snapshots
# ----------------------------------------------------------------------
# intended to be run daily as a cron job when hourly.3 contains the
# midnight (or whenever you want) snapshot; say, 13:00 for 4-hour snapshots.
# ----------------------------------------------------------------------

unset PATH

# ------------- system commands used by this script --------------------
ID=/usr/bin/id;
ECHO=/bin/echo;

MOUNT=/bin/mount;
RM=/bin/rm;
MV=/bin/mv;
CP=/bin/cp;

# ------------- file locations -----------------------------------------

MOUNT_DEVICE=/dev/hdb1;
SNAPSHOT_RW=/root/snapshot;

# ------------- the script itself --------------------------------------

# make sure we're running as root
if (( `$ID -u` != 0 )); then { $ECHO "Sorry, must be root.  Exiting..."; exit; } fi

# attempt to remount the RW mount point as RW; else abort
$MOUNT -o remount,rw $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readwrite";
    exit;
}
fi;


# step 1: delete the oldest snapshot, if it exists:
if [ -d $SNAPSHOT_RW/home/daily.2 ] ; then          \
$RM -rf $SNAPSHOT_RW/home/daily.2 ;             \
fi ;

# step 2: shift the middle snapshots(s) back by one, if they exist
if [ -d $SNAPSHOT_RW/home/daily.1 ] ; then          \
$MV $SNAPSHOT_RW/home/daily.1 $SNAPSHOT_RW/home/daily.2 ;   \
fi;
if [ -d $SNAPSHOT_RW/home/daily.0 ] ; then          \
$MV $SNAPSHOT_RW/home/daily.0 $SNAPSHOT_RW/home/daily.1;    \
fi;

# step 3: make a hard-link-only (except for dirs) copy of
# hourly.3, assuming that exists, into daily.0
if [ -d $SNAPSHOT_RW/home/hourly.3 ] ; then         \
$CP -al $SNAPSHOT_RW/home/hourly.3 $SNAPSHOT_RW/home/daily.0 ;  \
fi;

# note: do *not* update the mtime of daily.0; it will reflect
# when hourly.3 was made, which should be correct.

# now remount the RW snapshot mountpoint as readonly

$MOUNT -o remount,ro $MOUNT_DEVICE $SNAPSHOT_RW ;
if (( $? )); then
{
    $ECHO "snapshot: could not remount $SNAPSHOT_RW readonly";
    exit;
} fi;

필요에 따라 스크립트를 작성한 후 cron 작업에 추가하십시오.

크론 탭 -e

다음을 추가하십시오.

0 * / 4 * * * /usr/local/bin/make_snapshot.sh

0 13 * * * /usr/local/bin/daily_snapshot_rotate.sh

이로 인해 매시간 4 시간마다 make_snapshot.sh가 실행되고 매일 13:00 (오후 1시)에 daily_snapshot_rotate.sh가 실행됩니다.

출처 : http://www.mikerubel.org/computers/rsync_snapshots/

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

매시간 실행하려면 매 시간마다 cron 작업을 추가하십시오.

또 다른 가능한 옵션은 rsnapshot을 사용하는 것입니다

  1. rsnapshot 설치 (소프트웨어 센터에서 사용 가능)

  2. rsnapshot 구성 및 백업 소스 디렉토리 지정

/etc/rsnapshot.conf를 열고 다음 줄의 주석을 해제하십시오.

# nano /etc/rsnapshot.conf

cmd_cp          /bin/cp
cmd_ssh /usr/bin/ssh
cmd_du          /usr/bin/du
cmd_rsnapshot_diff      /usr/local/bin/rsnapshot-diff
logfile /var/log/rsnapshot
  1. 아래와 같이 /etc/rsnapshot.conf에 대상 백업 디렉토리를 정의하십시오. 이 예에서는

    / home – 백업해야 할 소스 디렉토리 localhost / – 백업이 저장 될 대상 디렉토리. 이 디렉토리는 마지막 단계에 표시된대로 /.snapshots/{internal.n}/ 디렉토리 아래에 작성됩니다.

    나노 /etc/rsnapshot.conf

    백업 / home / localhost /

  2. rsnapshot 구성 테스트

rsnapshot이 올바르게 설정되어 있고 Linux rsync 백업을 수행 할 준비가되었는지 구성 테스트를 수행하십시오.

# rsnapshot configtest
Syntax OK
  1. rsnapshot 시간별 백업 구성 확인

Linux 디렉토리 또는 파일을 다양한 간격으로 백업 할 수 있습니다. 기본적으로 시간별 및 일별 백업이 구성됩니다.

시간별 백업 구성을 확인하십시오.

# rsnapshot -t hourly
echo 6490 > /var/run/rsnapshot.pid
mkdir -m 0700 -p /.snapshots/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
/.snapshots/hourly.0/localhost/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
/.snapshots/hourly.0/localhost/
mkdir -m 0755 -p /.snapshots/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
/usr/local /.snapshots/hourly.0/localhost/
touch /.snapshots/hourly.0/
  1. rsnapshot 일일 백업 구성 확인

매일 rsnapshot cwrsync 백업 프로세스가 올바르게 구성되었는지 확인하십시오.

# rsnapshot -t daily
echo 6493 > /var/run/rsnapshot.pid
mkdir -m 0700 -p /.snapshots/
/.snapshots/hourly.5 not present (yet), nothing to copy
  1. rsnapshot에 대한 Crontab 항목 추가

rsnapshot cwrsync 유틸리티에서 rsync 시간별 및 일일 백업 구성이 올바르게 설정되었는지 확인한 후 아래 그림과 같이 crontab에서이 강아지를 설정해야합니다.

# crontab -e
0 */4 * * * /usr/local/bin/rsnapshot hourly
30 23 * * * /usr/local/bin/rsnapshot daily

출처 : http://www.thegeekstuff.com/2009/08/tutorial-backup-linux-using-rsnapshot-rsync-utility/

---- 베어 메탈 복구

dd와 tar를 사용하여 베어 메탈 복구를 수행합니다.

중요한 메타 데이터 백업 :

# dd if-/dev/hda of=/backups/mbr bs=512 count=1

운영 체제를 백업하십시오.

# mkdir /backups
# mount nfsserver:/backups/<servername> /backups


# cd /
# tar cfz /backups/system.tar.gz --exclude /mnt --exclude /proc --exclude /backups

베어 메탈 복원 파일을 만들려는 경우 개인적으로 시스템을 오프라인 상태로 만드는 경향이 있습니다.


2
귀하의 모든 답변은 매우 훌륭하고 문제가 없으며 내가 요구하는 것이 아닌 것만 큼 모든 방법은 MBR을 복원 dd하지 않으며 증분되지 않습니다. 이 중 어느 것도 내가 요구하는 것이 아닙니다. 마지막 10 %는 찾는 것이 흥미로울 수 있지만 나머지 정보 덤프는 실제로는 그렇지 않습니다.
Bruno Pereira

위의 세부 사항은 파일 시스템 (파일 시스템)을 다루며 MBR을 처리하기 위해 dd 프로세스를 추가했습니다.
cprofitt

3

블록 기반 증분 백업을 수행하는 두 가지 방법이 있습니다

  • 파일 시스템 기반 스냅 샷
  • 프로그램 기반 스냅 샷

파일 시스템 기반 스냅 샷

ZFSBTRFS 는 모두 블록 기반 증분 스냅 샷을 제공합니다 ( BTRFS , ZFS (페이지 25) ). 동기화 할 드라이브는 ZFS 또는 BTRFS 및 스냅 샷일 수 있습니다.

도있다 LVM 스냅 동일한 블록을 기반 증가 스냅 샷을 제공 (cprofitt 언급)는.

프로그램 기반 스냅 샷

거기에 여러 백업 프로그램 , 목적을 위해 밖으로 그러나 몇 스틱 :

나는 당신이 이중성과 같은 것을 찾고 있지 않다고 구체적으로 언급했지만, 나는 몇 가지 기능을 언급 할 수 있다고 생각했습니다.

그러나 이러한 프로그램을 복원하려면 설치해야합니다. rsync와 같은 장점은 기본적으로 거의 모든 Linux 설치에 rsync가 있습니다 (예 : 작은 코어 (10MB 배포판이 없음)).

이중성

단지 diff (블록 레벨)를 저장 한 다음 압축하고 암호화합니다. 이것은 rsync 방법보다 훨씬 적은 스토리지로 이어지지 만 (적어도 내가 보는 방식으로) 파일 시스템을 재구성해야하며 시간이 오래 걸립니다 (증분 백업을 사용하는 경우 시간이 지남) 마지막 전체 백업)

매뉴얼 페이지 작동 방법을 설명합니다.

Rdiff 백업

이중화와 같이 블록 수준 차이를 생성하는 클라이언트-서버 프로그램이지만 가장 최근의 복원 지점의 변경 사항을 저장하므로 최신 스냅 샷이 가장 빠르게 복원됩니다. 시간을 거슬러 올라가면 (가장 마지막 스냅 샷이 아님) 더 많은 diff를 분석해야하므로 속도가 느려집니다.

어떤 사람들 은 rdiff-backup과 rsnapshot을 비교 합니다 (rsync 멘토의보다 자동적 인 방법처럼 보입니다). 거의 모든 방법 은 네트워크를 통한 rdiff 사용에 중점 을 두지 만 localhost에서 방법을 언급 하는 방법을 찾았습니다 .


좋아, 파티션 복원으로 작업을 수행하는 방법을 설명 할까? 즉, 디스크를 깨면 파티션을 직접 만들 필요없이 스냅 샷에서 전체 시스템을 어떻게 복원합니까? 매우 상세하지 않거나 스크립트를 포함하지 않으며 일부 명령 이름과 수행 할 작업이 있습니다.
브루노 페레이라

이 시스템에 대한 경험이 없었기 때문에 Google을 사용하여 일부 연구를 수행 한 것만 발견했습니다. 예를 들어 나는 duplicity실제로 무엇을 배웠습니다 .
Portablejim

3

ddar ( homepage )를 살펴 봐야 합니다.

스냅 샷의 동일한 부분을 전송하지 않는다는 점에서 점진적입니다. 스냅 샷을 처리하기 때문에 단어의 고전적인 의미에서 점진적이지 않습니다.

참고 : 나는 이것을 직접 시도하지는 않았지만 저자를 신뢰합니다. 즉시 사용하려는 것을 수행하지는 않지만 페이지에 더 유사한 솔루션 (예 : ZFS )이 있으므로 시작점으로 유용 할 수 있습니다.


1
나는 ddar의 저자입니다 (언급 해 주셔서 감사합니다!). 질문을 올바르게 이해하면 ddar에 일련의 LVM 스냅 샷을 전달하면 요청한대로 정확하게 수행됩니다. 말씀 드린대로 증분이 아닌 스냅 샷을 처리하지만 스냅 샷은 새로운 스냅 샷에 영향을주지 않고 이전 스냅 샷을 마음대로 제거 할 수 있다는 이점과 동일합니다.
Robie Basak

@robie 나는 그것이 어떻게 작동하는지보기를 간절히 바랄 것입니다. 나 또는 이런 종류의 솔루션을 찾고있는 사용자를 위해 매우 작은 안내서를 만들 수 있습니까?
Bruno Pereira

1

이론적으로 LVM을 사용하면이 작업을 수행 할 수 있으며 많은 양의 하드 디스크가 낭비됩니다. 내 이론은 루트 시스템을 논리 볼륨에 유지할 수 있다는 것입니다. 테스트를 원할 경우 스냅 샷을 생성하고 새 볼륨을 사용하여 머신을 다시 시작할 수 있습니다.

LVM 스냅 샷이 작동하려면 원래 볼륨이 필요합니다. 새 볼륨은 스냅 샷과 실제 파일 시스템의 차이를 유지하기 때문입니다.

시스템을이 상태로두면 새 파일 시스템이 변경 될 때 디스크 공간이 낭비되기 시작합니다. 스냅 샷과 결정적인 파일 시스템을 통합 할 수있는 방법이 있는지 모르겠습니다. 확실히 다른 논리 볼륨으로 이동할 수 있지만이를 위해서는 파일 시스템 공간의 두 배와 "복구 지점"과 현재 상태의 차이가 필요합니다.

그리고이 모든 것은 재부팅이 필요하며 자동적이지는 않습니다.

또한 솔라리스 시스템의 zfs 또는 실험적인 btrfs와 같은 몇 가지 최신 파일 시스템이 이러한 방식으로 진행된다고 가정합니다.


1

이것은 내 머리 위에 약간 있지만, 파티션 이미지 파일과 같은 이진 파일의 부분 백업을 수행하는 것의 일부처럼 들립니다. 그렇게하기 위해 설계된 패키지가 있습니다 (방금 읽었습니다-시도하지 않았습니다).

bup을 살펴보십시오.

https://github.com/apenwarr/bup

그것은 당신에게 몇 가지 아이디어를 줄 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.