Giter Site home page Giter Site logo

trendstyle / proxmox-vzbackup-rclone Goto Github PK

View Code? Open in Web Editor NEW

This project forked from therealalexv/proxmox-vzbackup-rclone

0.0 0.0 0.0 7 KB

This is a vzbackup hook script that backups up your proxmox vm's, container's and pve config's to remote storage using proxmox's native vzbackup tool and rclone.

License: MIT License

Shell 100.00%

proxmox-vzbackup-rclone's Introduction

proxmox-vzbackup-rclone

This is a vzbackup hook script that backups up your proxmox vms, containers and pve configs to remote storage such as google drive using proxmox's native vzbackup tool and rclone.

rclone is a command line tool that allows you to sync files from your local disk, to a cloud storage device. RClone is most popular with Google Drive but it can be used for other cloud providers. RClone is based off another tool called RSync but with RClone you get so much more functionality built in such as encryption. See https://rclone.org/.

Backups are stored in the rclone remote and organized into YEAR/MONTH/DAY directories to ease the management of the backup files. The backup script also prunes local backups after a configurable amount of days. The script DOES NOT prune backups stored on the remote. You will need to manage that separately if you do not have unlimited space. There is also an easy to use script to pull old backups from the remote so that you can restore them like you normally would through the webui or vzdump tool.

This was built and tested with Google Drive only, however it should work with other providers as well. I recommend Google Drive though because you can get a Google Apps business account for $12 a month which gets you Unlimited drive space.

Quickstart

  1. SSH or Log into your Proxmox host. Install rclone with apt-get update;apt-get install rclone;. Setup an rclone remote and encrypt that remote if so desired. Further information on configuring rclone can be found here:

When setting up the encryption, I DO NOT reccomend you encrypt the filenames and directory names. Doing so will break the ability to easily pull down backups from the remmote.

  1. SSH or Log into your Proxmox host as root and clone the repo. I recommend you store it in the /root dir so that it also gets backed up.
apt-get install git
cd /root
git clone https://github.com/TheRealAlexV/proxmox-vzbackup-rclone.git
chmod +x /root/proxmox-vzbackup-rclone/vzbackup-rclone.sh
  1. Edit vzbackup-rclone.sh and set both $dumpdir and $MAX_AGE at the top of the file.

  2. Open /etc/vzdump.conf, uncomment the script: line and set that to /root/proxmox-vzbackup-rclone/vzbackup-rclone.sh:

script:/root/proxmox-vzbackup-rclone/vzbackup-rclone.sh
  1. You're finished. Kicking off a manual or scheduled backup will automatically trigger the rclone backup. To verify this, you can kickoff a manual backup and watch the proxmox console log output.

Example webui console output from a successful vzbackup run:

INFO: starting new backup job: vzdump 121 --compress zstd --node pve-03 --remove 0 --mode snapshot --storage pvebackups01
INFO: Deleting backups older than 3 days.
INFO: filesystem type on dumpdir is 'ceph' -using /var/tmp/vzdumptmp1890531 for temporary files
INFO: Starting Backup of VM 121 (lxc)
INFO: Backup started at 2020-06-02 20:19:04
INFO: status = running
INFO: CT Name: mini-test
INFO: backup mode: snapshot
INFO: ionice priority: 7
INFO: create storage snapshot 'vzdump'
/dev/rbd12
INFO: creating archive '/mnt/pve/pvebackups01/dump/vzdump-lxc-121-2020_06_02-20_19_04.tar.zst'
INFO: Total bytes written: 9021440 (8.7MiB, 6.6MiB/s)
INFO: archive file size: 2MB
INFO: Backing up /mnt/pve/pvebackups01/dump/vzdump-lxc-121-2020_06_02-20_19_04.tar.zst to remote storage
INFO: rcloning /mnt/pve/pvebackups01/dump/rclone/2020/06/02
INFO: 2020/06/02 20:19:12 INFO  : vzdump-lxc-121-2020_06_02-20_19_04.tar.zst: Copied (new)
INFO: 2020/06/02 20:19:12 INFO  : 
INFO: Transferred:   	    2.986M / 2.986 MBytes, 100%, 546.989 kBytes/s, ETA 0s
INFO: Errors:                 0
INFO: Checks:                 0 / 0, -
INFO: Transferred:            1 / 1, 100%
INFO: Elapsed time:        5.5s
INFO: remove vzdump snapshot
Removing snap: 100% complete...done.
INFO: Finished Backup of VM 121 (00:00:09)
INFO: Backup finished at 2020-06-02 20:19:13
INFO: Backing up main PVE configs
INFO: Tar files
INFO: Compressing files
INFO: /var/tmp/proxmox-mqnIdwRD/proxmoxetc.2020-06-02.20.19.13.tar
INFO: /var/tmp/proxmox-mqnIdwRD/proxmoxpve.2020-06-02.20.19.13.tar
INFO: /var/tmp/proxmox-mqnIdwRD/proxmoxroot.2020-06-02.20.19.13.tar
INFO: '/var/tmp/proxmox-mqnIdwRD/proxmox_backup_pve-03_2020-06-02.20.19.13.tar.gz' -> '/mnt/pve/pvebackups01/dump/proxmox_backup_pve-03_2020-06-02.20.19.13.tar.gz'
INFO: rcloning /var/tmp/proxmox-mqnIdwRD/proxmox_backup_pve-03_2020-06-02.20.19.13.tar.gz
INFO: 2020/06/02 20:19:17 INFO  : proxmox_backup_pve-03_2020-06-02.20.19.13.tar.gz: Copied (new)
INFO: 2020/06/02 20:19:17 INFO  : proxmox_backup_pve-03_2020-06-02.20.19.13.tar.gz: Deleted
INFO: 2020/06/02 20:19:17 INFO  : 
INFO: Transferred:   	  935.429k / 935.429 kBytes, 100%, 228.905 kBytes/s, ETA 0s
INFO: Errors:                 0
INFO: Checks:                 1 / 1, 100%
INFO: Transferred:            1 / 1, 100%
INFO: Elapsed time:          4s
INFO: Cleaning up
INFO: Backup job finished successfully
TASK OK

Rehydrate (restore) old backups

At some point, it'll be very likely that you'll need to pull old backups from your rclone remote that have been removed from the local proxmox server. This can be done by passing the rehydrate parameter to the vzbackup-rclone.sh script: $ ~/proxmox-vzbackup-rclone/vzbackup-rclone.sh rehydrate

Please enter the date you want to rehydrate in the following format: YYYY/MM/DD
For example, today would be: 2020/06/02
Rehydrate Date => 2020/06/02

2020/06/02 19:41:28 INFO  : Local file system at /mnt/pve/pvebackups01/dump: Waiting for checks to finish
2020/06/02 19:41:28 INFO  : Local file system at /mnt/pve/pvebackups01/dump: Waiting for transfers to finish
2020/06/02 19:41:29 INFO  : proxmox_backup_pve-01_2020-06-02.18.42.54.tar.gz: Copied (new)
2020/06/02 19:41:29 INFO  : proxmox_backup_pve-01_2020-06-02.18.42.29.tar.gz: Copied (new)
2020/06/02 19:41:29 INFO  : proxmox_backup_pve-01_2020-06-02.18.29.32.tar.gz: Copied (new)
2020/06/02 19:41:29 INFO  : proxmox_backup_pve-01_2020-06-02.18.43.13.tar.gz: Copied (new)
2020/06/02 19:41:29 INFO  : vzdump-lxc-121-2020_06_02-18_42_23.tar.zst: Copied (new)
2020/06/02 19:41:29 INFO  : vzdump-lxc-121-2020_06_02-18_29_25.tar.zst: Copied (new)
2020/06/02 19:41:29 INFO  : vzdump-lxc-121-2020_06_02-18_43_06.tar.zst: Copied (new)
2020/06/02 19:41:29 INFO  : vzdump-lxc-121-2020_06_02-18_42_48.tar.zst: Copied (new)
2020/06/02 19:41:29 INFO  :
Transferred:       15.591M / 15.591 MBytes, 100%, 4.298 MBytes/s, ETA 0s
Errors:                 0
Checks:                 0 / 0, -
Transferred:            8 / 8, 100%
Elapsed time:        3.6s

You can do this over as many days as you need. Just make sure your backup storage has the room to hold everything. You can then do a restore like you normally would from the webui or using the vzdump cli.

proxmox-vzbackup-rclone's People

Contributors

therealalexv avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.