원격 서버에서 데이터를 자동으로 복원하는 방법은 무엇입니까?

원격 서버에서 데이터를 자동으로 복원하는 방법은 무엇입니까?

원격 계정의 홈 디렉터리를 백업하고 복원하고 싶습니다.

내가 사용하는 명령은 다음과 같습니다

지원

ssh [email protected] "tar jcf - ." > backup.tar.bz2

다시 덮다

cat backup.tar.bz2 | ssh [email protected] "tar jxf - ."

복원 프로세스 중에 서버를 다시 시작하더라도 모든 파일이 복원되는지 확인하고 싶습니다.

내가 원하는 것을 달성할 수 있는 방법이 있나요? 위에 표시된 명령을 기본으로 유지하고 싶지만 다른 아이디어도 높이 평가됩니다.

답변1

진정한 원자성을 얻으려면 다음과 같은 파일 시스템 수준 기능을 사용해야 합니다.Btrfs 스냅샷.

답변2

복구가 완료된 후 일부 마커 파일을 사용할 수 있습니다. 복구가 불완전하고 표시된 파일이 누락된 경우 불완전 복구를 삭제해야 한다는 것을 알고 있습니다.

답변3

rsync파일을 수동으로 백업하는 대신 사용하는 것이 좋습니다 . 이 도구를 사용하면 몇 가지 추가 기능을 사용하여 현재 수행 중인 작업을 수행할 수 있습니다. 예를 들어 매개변수를 전달하여 --progress마지막으로 복사된 파일을 알 수 있습니다.

또 다른 기능은 새 파일이나 수정된 ​​파일만 복사할 수 있다는 것입니다. 이를 통해 네트워크를 통해 전송되는 데이터의 양이 줄어듭니다. 이 매개변수를 설정하면 --delete폴더에서 삭제한 파일이 삭제됩니다.원천폴더. 마지막으로 -z매개변수는 압축을 활성화합니다.

명령의 구조는 다음과 같습니다.

$ rsync options source destination

rsync --progress -azv -e ssh --delete /home/guandalino/ \
                [email protected]:/home/guandalino/backup/guandalino/

어디

  • --progressrsync 실행의 자세한 진행 상황 표시
  • -z압축 활성화
  • -v길다는 뜻
  • -a재귀를 나타냅니다. 또한 권한, 소유자, 그룹 등도 유지됩니다.
  • --delete 소스 디렉터리에 존재하지 않는 파일을 삭제합니다.

확인 해봐.

백업 예약

이 부분은 추가 사항입니다. 이것이 내 홈 폴더를 서버에 자동으로 백업하는 데 사용하는 방법입니다. 위의 예제를 쉘 스크립트 파일에 넣고 cron매일 오전 00시에 실행되도록 활성화했습니다.

00  00 *   *   *     /home/guandalino/backup_home_folder.sh 2>&1 >> /var/log/backup_home_folder.log

전송 로그를 유지할 수 있도록 스크립트 출력을 파일로 리디렉션합니다. ssh-keygen -t rsa아직 공개 키가 없다면 클라이언트가 비밀번호를 입력하지 않고도 서버에 연결할 수 있도록 공개 키를 생성해야 합니다.

답변4

직접적으로는 아닙니다. 가장 좋은 방법은 임시 디렉터리를 복원하고 확인한 다음 이름을 바꾸는 것입니다. 이름을 바꾸면 파일이 자동으로 올바른 위치로 이동됩니다.

관련 정보