find 및 ssh를 사용하여 외부 서버에 백업

find 및 ssh를 사용하여 외부 서버에 백업

나는 이 질문에 대해 많은 사이트에서 단편적인 답변을 받았을 것이라고 확신합니다. 그러나 어쨌든 나는 이 질문이 (전체적으로) 안정적으로 작동하도록 할 수 없는 것 같습니다.

시나리오: 증분 백업을 수행하려는 서버가 있습니다(매일 그것에 대해 생각합니다).

백업하려는 파일과 디렉터리는 /home/다음 디렉터리에 있습니다 /srv/samba/.

/mnt/backup/백업은 디렉토리 에 대한 .tar.gz여야 하며 파일 이름은 inc_backup_yyyymmdd.tar.gz.

.tar.gz를 성공적으로 생성한 후 ssh를 사용하여 파일을 외부 서버로 보내야 합니다.

이제 서버는 일주일에 한 번씩 전체 백업을 생성하고 무작위 간격으로 수동으로 오프사이트로 보냅니다(.tar.gz의 크기는 약 60GB이므로 시간이 좀 걸립니다...).

이상적으로는 .tar.gz 일반 파일과 폴더만 원합니다. .로 시작하는 파일 및 ~ 및 .로 시작하는 디렉토리는 제외되어야 합니다.

한 가지 예외가 있습니다: 및 폴더
에는 백업에 포함되어야 하지만 파일 제외를 적용해야 하는 ".recycle" 폴더가 있습니다./home/[user]//srv/samba/[someshare]/

예를 들어

/home/user/.hiddendirectory/ (excluded)
/home/user/.hiddendirectory/myfile.txt (excluded)
/home/user/myfile.txt (included)
/home/user/.myfile.txt (excluded)
/home/user/~myfile.txt (excluded)
/home/user/mydirectory/myfile.txt (included)
/home/user/.recycle/ (included)
/home/user/.recycle/~tmpfile (excluded)
/home/user/.recycle/.myfile (excluded)
/home/user/.recycle/myfile.txt (included)

나는 find를 사용하기 시작했습니다.

다음 명령에는 비표준 연산자(-not, -or)가 포함되어 있으므로 사용하는 경우 시스템이 이를 지원하는지 확인하십시오.

find /home -not -path '*/\.*' ! \( -name '.*' -or -name '~*' \) -mtime -1

필요한 파일과 폴더를 찾는 것 같습니다. 그런데 즉시 tar로 옮기면 모든 제외 사항을 무시하는 것 같나요?

find /home -not -path '*/\.*' ! \( -name '.*' -or -name '~*' \) -mtime -1 -print0 | tar -zcvf /tmp/testbackup1.tar.gz --null -T -

다음을 사용하여 올바른 결과를 얻는 것 같습니다.

find /home -not -path '*/\.*' ! \( -name '.*' -or -name '~*' \) -mtime -1 -print0 | tar -Avf /tmp/testbackup1.tar | gzip -c /tmp/testbackup1.tar > testbackup1.tar.gz

...하지만 이것은 지나치게 복잡해 보이고 큰 타르 크기에도 불구하고 빈 타르볼이 생성됩니까? 이 중 어느 것도 .recycle 포함을 고려하지 않습니다.

추가 보너스는 보안 강화를 위해 암호화된 tar.gz입니다.

SSH를 사용하여 파일을 보내는 것은 쉬운 부분입니다.

내 생각은 Cron이 실행할 스크립트 파일에 넣는 것입니다.

이 스크립트는 다음을 수행합니다.

  • 백업 파일 생성(이름 지정 프로세스 처리)
  • SSH를 통해 백업 파일을 외부 서버로 보내기
  • .recycle 디렉토리에서 오래된 파일(예: 2주) 삭제

(내부) 전체 백업은 매월 수행되며 오래된 백업 파일의 정리도 처리됩니다(2개월).

따라서 2개의 전체 백업과 약 60개의 증분 백업이 생성됩니다. 전체 백업이 삭제되면 증분 백업(증분 백업이라고 함)도 삭제됩니다. 모든 백업 파일은 온사이트와 오프사이트 모두에 위치합니다.

어떤 제안(완전히 새로운 방법이라도)을 주시면 대단히 감사하겠습니다!

미리 감사드립니다!

관련 정보