gtar 증분 백업 실패

gtar 증분 백업 실패

다음 스크립트는 증분 백업을 수행하지 못하고 대신 전체 백업을 생성합니다.

다른 FreeBSD 서버에서는 정확히 동일한 스크립트가 정상적으로 작동합니다(증분 백업 생성).

두 시스템의 서버는 동일하며 동일한 FreeBSD 10.0-RELEASE입니다. 똑같은 스크립트를 작성하세요. gtar 버전도 동일합니다. 파일 시스템은 동일합니다.

무슨 일이 일어났는지 모르겠어요. 며칠 동안 찾고 있었어요! 도와주세요.

#!/bin/sh

sourcedir="/home"
targetdir="/backup/home"

now=$(date +"%Y%m%d%H%M")

cd $sourcedir
for dir in */
do
  base=$(basename "$dir")
  gtar -cz -g "$targetdir/.gtar-incremental" -f "$targetdir/${base}-$now.tar.gz" "/home/$dir"
  chmod 600 "$targetdir/${base}-$now.tar.gz"
done

답변1

오늘 이 문제를 조사하면서 여기에는 두 가지 문제가 있다고 생각합니다.

  1. 루프가 반복될 때마다 for새 델타 파일이 생성됩니다(또는 이전 파일을 덮어씁니다 :-). 보관 파일과 스냅샷 파일 사이에는 1:1 매핑이 있으므로 gtar-incremental모든 보관 파일을 제공할 수는 없다는 점에 유의하세요.
  2. gtar타임 스탬프를 좋아하지 않습니다. 이는 스냅샷 파일에 tar.gz파일 이름이 저장되기 때문이며, 전달된 문자열이 $now이전 문자열과 다를 경우 새 zip 파일과 새 스냅샷 파일이 생성되기 때문입니다.

내가 그것을 확인하고 증분이 작동하는 방식은 다음 줄을 변경하는 것입니다 gtar.

gtar --listed-incremental=$targetdir/gtar-incremental-$base  -cvzf $targetdir/$base.tar.gz $dir

이는 점진적으로 작동합니다.

위의 명령은 incremental백업되는 각 디렉터리에 대한 파일을 생성합니다.

incremental여러 파일 없이 작동 하도록 하는 또 다른 방법은 home개별 아카이브 대신 전체 디렉토리를 전체적으로 백업하는 것입니다(즉, 루프 없이 에 for직접 백업 )./home/backup/home.tar.gz

gtar마지막으로 타임스탬프가 중요하다면 파일이 완료된 후 타임스탬프를 추가하거나 파일에서 타임스탬프를 제거 할 수 있다고 생각했습니다 (n > 2 실행 전에 존재하는 경우 if명령문을 사용하여 구성할 수 있습니다).

타임스탬프가 귀하의 작업에 중요합니까?

도움이 되었기를 바랍니다.

관련 정보