hi peeps.

Im early on my selfhosting journey and managed to setup some things as a test in docker. the main service im looking to run is ERPNext. after a while I got it up and running so now I want to back this up including all the customization I did in the app.

where to start with this? any intuitive guide?

  • irmadlad@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    1
    ·
    5 days ago

    In addition to daily backups, once a month I image the drive. I wrote a simple script triggered by a cron job to image the drive to a NAS backup. The daily backups go to 3 different offsite storage facilities, and two go to separate NAS drives. All drive images are kept both local and off premise as well. So, for individual files, etc, I can restore them from the daily backups. If the wheels fall off, I can restore the whole drive from an image. Might be a bit over engineered but I’ve been caught a few times and so I just decided that won’t happen again.

    • SayCyberOnceMore@feddit.uk
      link
      fedilink
      English
      arrow-up
      1
      ·
      5 days ago

      Interesting.

      Yep, I agree there’s 2 types of backups:

      • data
      • OS image

      Out of curiosity, how are you doing the drive imaging?

      • irmadlad@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        4 days ago

        Out of curiosity, how are you doing the drive imaging?

        I wrote a script that is fired by a cron job once a month:

        sudo nano /usr/local/bin/backup_drive.sh

        spoiler
        # Directory to store backups
        
        BACKUP_DIR="/mnt/myhdd"
        
        # Drive to backup
        
        DRIVE="/dev/sdX"
        
        # Create a timestamp
        
        TIMESTAMP=$(date +"%Y%m%d")
        
        # Filename for the new image
        
        NEW_IMAGE="$BACKUP_DIR/my_drive_image_$TIMESTAMP.img"
        
        # Create the image
        
        sudo dd if=$DRIVE of=$NEW_IMAGE bs=4M status=progress
        
        # Keep the last 3 images
        
        ls -tp $BACKUP_DIR/my_drive_image_*.img | grep -v '/$' | tail -n +4 | xargs -I {} rm -- {}
        

        Make the script executable:

        sudo chmod +x /usr/local/bin/backup_drive.sh

        Create Cron:

        sudo crontab -e

        0 3 1 * * /usr/local/bin/backup_drive.sh

        Verify cron:

        sudo crontab -l

        I’m sure it could be written differently or that there is a better way to do the imaging, but that is the extent of my notes, and it works for me.

        • SayCyberOnceMore@feddit.uk
          link
          fedilink
          English
          arrow-up
          1
          ·
          4 days ago

          Ah, good old dd

          When you have some spare time, take a look at partclone - clonezilla uses it because it only backs up used blocks, not free space, so more efficient.