Borg로 백업 스크립트 작성

6195 단어 linuxbackupborg
우리 모두는 첫 번째 규칙이 "백업 금지"라는 것을 알고 있으므로 Borg를 사용하여 비교적 쉽게 중요한 데이터를 암호화된 방식으로 백업할 수 있는 방법을 보여 드리겠습니다.

두 번째 컴퓨터를 사용하지 않고 외장 하드 드라이브를 사용하려는 경우 나중에 스크립트에서 이를 조정하고 두 번째 컴퓨터에 대한 지침의 요점을 무시할 수 있습니다.

요구 사항


  • 2 Linux 컴퓨터
  • 보그
  • SSH
  • 보관
  • 5개 이상의 뇌세포

  • 설치



    먼저 한 컴퓨터에 백업하고 다른 컴퓨터에 저장할 수 있도록 두 컴퓨터에 borg를 설치해야 합니다.

    sudo apt install borgbackup
    


    그런 다음 Borg 리포지토리를 만듭니다. 외부 대상 또는 로컬 경로를 사용할 수 있습니다.

    외부 대상:

    borg init --encryption=repokey ssh://[email protected]:22/mnt/backup/borg
    


    로컬 경로:

    borg init --encryption=repokey /path/to/backup_folder
    


    외부 대상을 사용하는 경우 대상에 SSH 키를 저장하는 것이 좋습니다.
    이렇게 하면 암호를 입력할 필요가 없으며 내 관점에서 볼 때 더 좋습니다.

    모든 것을 생성하고 매개변수로 스크립트를 준비한 후에는 스크립트를 CronJob으로 실행하여 더 이상 직접 백업하는 것을 기억할 필요가 없도록 하는 것이 좋습니다.

    crontab 예:

    #Minute Hour    Day    Month  Day(Week)      command
    #(0-59) (0-23)  (1-31)  (1-12)  (1-7;1=Mo)
    00 2 * * * /srv/scripts/borgBackup.sh
    


    자동화된 스크립트




    #!/bin/sh
    
    # VARS
    BACKUPSERVER="192.168.2.42"
    BACKUPDIR="/mnt/backup/borg"
    
    # Here you can either use your external destination or the local path.
    # External target
    export BORG_REPO="user@$BACKUPSERVER:$BACKUPDIR"
    
    # Local path
    # export BORG_REPO=/path/to/backup_folder
    
    # Your repository password must be stored here.
    export BORG_PASSPHRASE='S0m3th1ngV3ryC0mpl1c4t3d'
    
    info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
    trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM
    
    info "Start backup"
    
    #Here the backup is created, adjust it the way you would like to have it.
    borg create                    \
        --stats                    \
        --compression lz4          \
        ::'BackupName-{now}'        \
        /etc/nginx                  \
        /home/user
    
    backup_exit=$?
    
    info "Deleting old backups"
    # Automatic deletion of old backups
    borg prune                          \
    --prefix 'BackupName-'              \
        --keep-daily    7              \
        --keep-weekly  4                \
        --keep-monthly  6
    
    prune_exit=$?
    
    # Information on whether the backup worked.
    global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
    
    if [ ${global_exit} -eq 0 ]; then
        info "Backup and Prune finished successfully"
    elif [ ${global_exit} -eq 1 ]; then
        info "Backup and/or Prune finished with warnings"
    else
        info "Backup and/or Prune finished with errors"
    fi
    
    exit ${global_exit}
    


    백업에서 데이터 가져오기



    먼저 백업을 마운트할 수 있는 임시 디렉토리를 만듭니다.

    mkdir /tmp/borg-backup
    


    마운트 지점이 생성되면 백업 저장소를 마운트할 수 있습니다.
    이 시점에서 외부 대상 또는 로컬 경로를 사용할 수 있음을 기억해야 합니다.

    borg mount ssh://[email protected]/mnt/backup/borg /tmp/borg-backup
    


    저장소가 마운트되면 디렉토리로 변경하고 rsync 또는 cp를 통해 파일을 복원할 수 있습니다.

    결론



    나는 당신이 모든 것을 이해하고 이제 현명하게 당신의 똥을 확보할 수 있기를 바랍니다. 백업이 없으면 우리 모두 길을 잃기 때문입니다!

    좋은 웹페이지 즐겨찾기