{"id":13495951,"url":"https://github.com/padosoft/proxmox-backup","last_synced_at":"2025-10-19T10:32:16.659Z","repository":{"id":95269114,"uuid":"67233911","full_name":"padosoft/proxmox-backup","owner":"padosoft","description":"Bash scripts to backup and restore proxmox server.","archived":false,"fork":false,"pushed_at":"2016-09-02T16:06:50.000Z","size":11,"stargazers_count":14,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-18T01:47:27.891Z","etag":null,"topics":["backup","bash","proxmox","proxmox-backup"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/padosoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-09-02T15:26:55.000Z","updated_at":"2024-09-06T14:09:30.000Z","dependencies_parsed_at":"2023-03-03T23:30:41.946Z","dependency_job_id":null,"html_url":"https://github.com/padosoft/proxmox-backup","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/padosoft%2Fproxmox-backup","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/padosoft%2Fproxmox-backup/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/padosoft%2Fproxmox-backup/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/padosoft%2Fproxmox-backup/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/padosoft","download_url":"https://codeload.github.com/padosoft/proxmox-backup/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250467957,"owners_count":21435447,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","bash","proxmox","proxmox-backup"],"created_at":"2024-07-31T19:01:40.044Z","updated_at":"2025-10-19T10:32:16.588Z","avatar_url":"https://github.com/padosoft.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"\n# proxmox-backup\nBash scripts to backup and restore proxmox server. \n\n[![Software License][ico-license]](LICENSE.md)\n\nTable of Contents\n=================\n\n  * [proxmox-backup](#proxmox-backup)\n  * [Table of Contents](#table-of-contents)\n  * [Prerequisites](#prerequisites)\n  * [Install](#install)\n  * [Tutorial](#tutorial)\n  * [Contributing](#contributing)\n  * [Credits](#credits)\n  * [About Padosoft](#about-padosoft)\n  * [License](#license)\n\n# Prerequisites\n\nbash\n\n# Install\n\nThis package can be installed easy.\n\n``` bash\ncd /root/\ngit clone https://github.com/padosoft/proxmox-backup.git\ncd proxmox-backup\nchmod +x *.sh\n```\n\nIf you want to run programmatically, add it to cronjobs manually or execute install script:\n\n``` bash\ncd /root/proxmox-backup\nchmod +x install.sh\nbash install.sh\n```\n\n\n# Tutorial\n# Procedure di Backup e Ripristino PROXMOX\n\n## Condivisione di una cartella di rete permanente\n\nLe copie di backup sono salvate in rete su cartelle condivise.\nUna volta condivisa con samba una cartella esterna è possibile montarla sul sistema in uso per utilizzarla come una semplice directory in fase di backup.\n\nPer prima cosa nel sistema da backuppare viene creata una cartella su cui montare la cartella esterna\n\n``` bash\nmkdir /mnt/sharedns323\n```\n\nla cartella viene poi permanentemente montata scrivendo aggiungendo nel file \n\n``` bash\n/etc/fstab\n```\n\nla seguente riga\n\n``` bash\n//192.168.0.14/Volume_1/proxmox2 /mnt/sharedns323 cifs credentials=/root/.smbcredentials\n```\n\ndove //192.168.0.14/Volume_1/proxmox2 è la cartella condivisa in rete e nel file /root/.smbcredentials\nci sono le credenziali di accesso.\n\nIl file /root/.smbcredentials è di questo tipo\n\nusername=root\npassword=xxxxxx\ndomain=PADOVANI\n\nmodificato il file fstab testarlo col comando\n\n``` bash\nmount -a\n```\n\n## Tools di backup, installazione e uso\n\nPer il backup viene utilizzato fsarchiver, a differenza di altri tool crea l’immagine del solo filesystem e non di tutto il disco, anche a caldo\n\nInstallazione di fsarchiver\n\n``` bash\napt-get update\napt-get install fsarchiver\n```\n\nLe partizioni di proxmox da backuppare sono la root e la parte data contenute in una partizione logica lvm2\nPer individuare all’interno della partizione logica lvm2 di proxmox le partizioni di interesse usiamo\n\n``` bash\nfsarchiver probe \n```\n\nle partizioni di interesse sono le dm-x e con\n\n``` bash\ndmsetup ls\n```\n\nè possibile capire quali siano quella di root e data ottenendo un qualcosa di simile:\n\n``` bash\npve-swap        (253:1)\npve-root        (253:0)\npve-data        (253:2)\n```\n\npve-root in questo caso è contenuta in dm-0, mentre la parte pve-data in dm-2\n\n`di seguito lo script che effettua il backup:`\n\n``` bash\n/root/proxmox-backup/backupproxmox.sh\n```\n\nIn sintesi le copie vengono prima salvate su una cartella temporanea \"/var/tmp/backup\" creata nel caso non esita, sono stoppati 4 servizi di proxmox\n\n``` bash\n/etc/init.d/pve-cluster stop\n/etc/init.d/pvedaemon stop\n/etc/init.d/vz stop\n/etc/init.d/qemu-server stop\n```\n\ne lanciato fsarchiver\n\n``` bash\nfsarchiver savefs -aAdv \"$_bdir/$_day.dm-0.fsa\" \"/dev/dm-0\"\nfsarchiver savefs -aAdv \"$_tdir/$_day.dm-2.fsa\" \"/dev/dm-2\"\n```\n\nil parametro savefs indica che si sta salvando il filesystem, i parametri “d” e “v” servono per far scrivere le informazioni di esecuzione, mentre i parametri “A” e “a” \n\n -A: allow to save a filesystem which is mounted in read-write (live backup)\n -a: allow running savefs when partition mounted without the acl/xattr options\n\nla partizione di sistema, più piccola di dimensioni viene creata direttamente nella cartella condivisa, quella di data invece viene prima creata in locale e poi spostata nella cartella condivisa con il comando\n\n``` bash\nrsync -avz --progress \"$_tdir/$_day.dm-2.fsa\" \"$_bdir/$_day.dm-2.fsa\"\n```\n\nterminata la copia sono riavviati i servizi\n\n``` bash\necho restart services \n/etc/init.d/qemu-server start\n/etc/init.d/vz start\n/etc/init.d/pvedaemon start\n/etc/init.d/pve-cluster start\n```\n\nutilizzando un altro script tutto il processo viene schedulato, e inviato per email utilizzando ssmtp (vedi questa guida per come configurarlo https://docs.google.com/document/d/1YLI4ToPftmowrmsRRhSxW8hzDBKW4LvhxSGAwigoQP8/  ), utilizzando il nome del giorno della settimana il tutto ha una rotazione di 7 giorni\n\n``` bash\n/root/proxmoxrestore/backup_week.sh\n```\n\nPer schedulare i servizi si utilizza il comando\n\n``` bash\ncrontab -e\n```\n\na cui si aggiunge la seguente linea\n\n``` bash\n# m h  dom mon dow   command\n\n0 03 * * * /root/proxmoxrestore/sh backup_week.sh\n```\n\nCon questa sintassi si esegue uno script ogni giorno alle 3 di notte\n\n## Sync su macchina Proxmox muletto\n\nvedi anche:\nhttp://www.cyberciti.biz/faq/how-to-wakeup-backup-nas-server-and-mirror-files-using-rsync-in-linux/\n\nSul muletto è installato proxmox e la partizione di root è la stessa del server.\nOgni sera il muletto si accende da bios, il server poco dopo con un processo schedulato stoppa i servizi proxmox del muletto, copia tutta la sua partizione data e spegne il muletto.\nPer accedere al muletto senza digitare la password viene utilizzata una comunicazione ssh registrando la chiave pubblica del muletto sul server.\n\nil file sh con le procedure di copia è\n\n``` bash\n/root/proxmoxrestore/vz_rsync.sh\n```\n\nschedulato e inviato per email con lo script\n\n``` bash\n/root/proxmoxrestore/vz_rsync_daily.sh\n```\n\ninserito in pianificazione con il solito\n\n``` bash\ncrontab -e\n```\n\n\n## Generazione chiave pubblica e privata ssh sul muletto e installazione su server\n\nPer connettersi da un pc all’altro utilizzando ssh senza autenticazione è possibile registrare la chiave pubblica sul server da cui si vuol accedere\n\nPer prima cosa si creano le chiavi pubbliche e private sul muletto digitando\n``` bash\nssh-keygen -t rsa\n```\n\npremere invio lasciando il nome di default della chiave e non aggiungendo password\nQuesto creerà nella cartella /root/.ssh un file id_rsa e id_rsa.pub\n\neseguire poi \n\n``` bash\nssh-copy-id root@192.168.0.33\n```\n\ndove 192.168.0.33 è l’indirizzo del server proxmox, e quando richiesto inserire la password di root\n\ntestare da server il comando\n\n``` bash\nssh root@192.168.0.11 ls\n```\n\nla prima volta chiederà di salvare il pc 192.168.0.11 (o l’equivalente indirizzo ip del muletto) tra gli host conosciuti\n\ndovrebbe mostrare il contenuto della cartella senza ulteriore autenticazione, di fatto il comando ssh-copy-id  copia il file id_rsa.pub del muletto e lo inserisce nel file /root/.ssh/authorized_keys del server\n\n\n## RESTORE BACKUP AND DISASTER RECOVERY\n\nRipristino partizione di root in caso di disaster recovery su macchina non configurata.\n\nInstallare proxmox VE 3.4 da cd (https://www.proxmox.com/en/).\nLasciare i valori di default (ext3 ed eventuale indirizzo IP). Nel caso si conosca è possibile inserire l’indirizzo IP della macchina che si sostituisce, il nome host è invece pve.padosoft.local\n\nUna volta installato proxmox\n\nriavvio e utilizzo systemrescuecd  (http://www.sysresccd.org/)\nda live cd utilizzando la shell\nfaccio il mount della cartella condivisa che contengono i backup\n``` bash\nmount -t cifs //192.168.0.14/Volume_1 /mnt/share\n```\n\ncon \n``` bash\nfsarchiver probe simple\n```\n\nvedo i device e cerco quello di root tra i dm (probabilmente il dm-0) con\n\n``` bash\nfsarchiver probe \n```\n\nse ho dubbi basta montarli e navigarli\n\n``` bash\nmkdir /mnt/dm0\nmount /dev/dm-0 /mnt/dm0\n```\n\nripristino la partizione di root, nel caso devo prima fare l’umount\n\n``` bash\numount /mnt/dm0\n```\n\ne poi uso fsarchiver\n\n``` bash\nfsarchiver restfs /mnt/share/dm0.aaaa.mm.dd.fsa id=0,dest=/dev/dm-0\n```\n\nalla fine reboot della macchina\n\nAl riavvio si avrà un errore in fstab dovuto al cambio di UUID dell’hd. Eseguire:\n\n``` bash\nblkid   \n```\n\nper scoprire uuid nuovo hardware delle partizioni\ncambio uuid in \n\n``` bash\n/etc/fstab\n```\n\n``` bash\n# \u003cfile system\u003e \u003cmount point\u003e \u003ctype\u003e \u003coptions\u003e \u003cdump\u003e \u003cpass\u003e\n/dev/pve/root / ext3 errors=remount-ro 0 1\n/dev/pve/data /var/lib/vz ext3 defaults 0 1\nUUID=CC11-46AB /boot/efi vfat defaults 0 1\n/dev/pve/swap none swap sw 0 0\nproc /proc proc defaults 0 0\n//192.168.0.14/Volume_1/proxmox2 /mnt/sharedns323 cifs credentials=/root/.smbcredentials\n```\n\nsalvato il file lo testo con \n``` bash\nmount -a\n```\n\ncontrollo che l’interfaccia ethernet sia la stessa, \n\n``` bash\nip link show   \n```\n\nse prima avevo eth0 e ora eth1 la tiro su\n\n``` bash\nifconfig eth1 up   \n```\n\ne poi cambio \n\n``` bash\n/etc/network/interfaces il bridge\n```\n\n``` bash\nauto lo\niface lo inet loopback\n\nauto vmbr0\niface vmbr0 inet static\n  address 192.168.0.11\n  netmask 255.255.255.0\n  gateway 192.168.0.1\n  bridge_ports eth0\n  bridge_stp off\n  bridge_fd 0\n```\n\nsalvo e reboot\n\n\n## Ripristino partizione Data\n\nEffettuo il ripristino della partizione data direttamente dalla macchina senza live cd.\nEntro e stoppo i servizi proxmox\n\n``` bash\n/etc/init.d/pve-cluster stop\n/etc/init.d/pvedaemon stop\n/etc/init.d/vz stop\n/etc/init.d/qemu-server stop\n```\n\nnel caso non sia installato installo fsarchiver\n\ne ripristino la partizione data controllando prima quale sia con il comando\n\n``` bash\ndmsetup ls\n```\n\nipotizzando sia la dm-2\n\n``` bash\nfsarchiver restfs /mnt/sharedns323/dm2.aaaa.mm.dd.fsa id=0,dest=/dev/dm-2\n```\n\nfinito riavvio la macchina.\n\n\n# Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) and [CONDUCT](CONDUCT.md) for details.\n\n\n# Credits\n\n- [Lorenzo Padovani](https://github.com/lopadova)\n- [Alessandro Manneschi](https://github.com/alevento)\n- [Padosoft](https://github.com/padosoft)\n- [All Contributors](../../contributors)\n\n# About Padosoft\nPadosoft is a software house based in Florence, Italy. Specialized in E-commerce and web sites.\n\n# License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpadosoft%2Fproxmox-backup","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpadosoft%2Fproxmox-backup","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpadosoft%2Fproxmox-backup/lists"}