├── .cargo └── config ├── .gitignore ├── Cargo.toml ├── Makefile ├── README.rst ├── TODO.rst ├── debian ├── changelog ├── control ├── copyright ├── lintian-overrides ├── pmt.bc ├── pmtx.bc ├── postinst ├── prerm ├── proxmox-backup-client.bash-completion ├── proxmox-backup-client.bc ├── proxmox-backup-client.install ├── proxmox-backup-debug.bc ├── proxmox-backup-docs.install ├── proxmox-backup-docs.links ├── proxmox-backup-docs.lintian-overrides ├── proxmox-backup-file-restore.bash-completion ├── proxmox-backup-file-restore.bc ├── proxmox-backup-file-restore.install ├── proxmox-backup-file-restore.postinst ├── proxmox-backup-file-restore.triggers ├── proxmox-backup-manager.bc ├── proxmox-backup-server.bash-completion ├── proxmox-backup-server.install ├── proxmox-backup-server.maintscript ├── proxmox-backup-server.udev ├── proxmox-tape.bc ├── pxar.bc ├── rules ├── scripts │ └── elf-strip-unused-dependencies.sh └── source │ ├── format │ └── lintian-overrides ├── defines.mk ├── docs ├── GFDL.rst ├── Makefile ├── _ext │ └── proxmox-scanrefs.py ├── _static │ ├── custom.css │ └── custom.js ├── _templates │ ├── index-sidebar.html │ └── sidebar-header.html ├── api-viewer │ └── index.html ├── backup-client.rst ├── backup-protocol.rst ├── calendarevents.rst ├── certificate-management.rst ├── command-line-tools.rst ├── command-syntax.rst ├── conf.py ├── config │ ├── acl │ │ ├── format.rst │ │ └── man5.rst │ ├── datastore │ │ ├── format.rst │ │ └── man5.rst │ ├── domains │ │ ├── format.rst │ │ └── man5.rst │ ├── media-pool │ │ ├── format.rst │ │ └── man5.rst │ ├── notifications-priv │ │ ├── format.rst │ │ └── man5.rst │ ├── notifications │ │ ├── format.rst │ │ └── man5.rst │ ├── remote │ │ ├── format.rst │ │ └── man5.rst │ ├── sync │ │ ├── format.rst │ │ └── man5.rst │ ├── tape-job │ │ ├── format.rst │ │ └── man5.rst │ ├── tape │ │ ├── format.rst │ │ └── man5.rst │ ├── user │ │ ├── format.rst │ │ └── man5.rst │ └── verification │ │ ├── format.rst │ │ └── man5.rst ├── configuration-files.rst ├── epilog.rst ├── faq-release-support-table.csv ├── faq.rst ├── file-formats.rst ├── glossary.rst ├── gui.rst ├── images │ ├── favicon.ico │ ├── proxmox-logo.png │ ├── proxmox-logo.svg │ └── screenshots │ │ ├── boot-grub.png │ │ ├── boot-systemdboot.png │ │ ├── pbs-gui-acme-add-domain.png │ │ ├── pbs-gui-acme-create-account.png │ │ ├── pbs-gui-acme-create-challenge-plugin.png │ │ ├── pbs-gui-administration-apt-repos.png │ │ ├── pbs-gui-administration-logs.png │ │ ├── pbs-gui-administration-serverstatus.png │ │ ├── pbs-gui-administration-services.png │ │ ├── pbs-gui-administration-tasks.png │ │ ├── pbs-gui-administration-updates.png │ │ ├── pbs-gui-apitoken-overview.png │ │ ├── pbs-gui-apitoken-secret-value.png │ │ ├── pbs-gui-certs-upload-custom.png │ │ ├── pbs-gui-dashboard.png │ │ ├── pbs-gui-datastore-content-prune-group.png │ │ ├── pbs-gui-datastore-content.png │ │ ├── pbs-gui-datastore-create.png │ │ ├── pbs-gui-datastore-options.png │ │ ├── pbs-gui-datastore-prune-job-add.png │ │ ├── pbs-gui-datastore-prunegc.png │ │ ├── pbs-gui-datastore-summary.png │ │ ├── pbs-gui-datastore-verifyjob-add.png │ │ ├── pbs-gui-datastore.png │ │ ├── pbs-gui-disks-dir-create.png │ │ ├── pbs-gui-disks-zfs-create.png │ │ ├── pbs-gui-disks.png │ │ ├── pbs-gui-login-window.png │ │ ├── pbs-gui-network-create-bond.png │ │ ├── pbs-gui-permissions-add.png │ │ ├── pbs-gui-permissions.png │ │ ├── pbs-gui-remote-add.png │ │ ├── pbs-gui-remote.png │ │ ├── pbs-gui-syncjob-add.png │ │ ├── pbs-gui-syncjob.png │ │ ├── pbs-gui-system-config.png │ │ ├── pbs-gui-tape-backup-jobs-add.png │ │ ├── pbs-gui-tape-backup-jobs.png │ │ ├── pbs-gui-tape-changer-overview.png │ │ ├── pbs-gui-tape-changers-add.png │ │ ├── pbs-gui-tape-changers.png │ │ ├── pbs-gui-tape-crypt-keys.png │ │ ├── pbs-gui-tape-drives-add.png │ │ ├── pbs-gui-tape-drives.png │ │ ├── pbs-gui-tape-pools-add.png │ │ ├── pbs-gui-tape-pools.png │ │ ├── pbs-gui-tfa-add-recovery-keys.png │ │ ├── pbs-gui-tfa-add-totp.png │ │ ├── pbs-gui-tfa-login.png │ │ ├── pbs-gui-traffic-control-add.png │ │ ├── pbs-gui-user-management-add-user.png │ │ └── pbs-gui-user-management.png ├── index.rst ├── installation.rst ├── introduction.rst ├── local-zfs.rst ├── lto-barcode │ ├── code39.js │ ├── index.html │ ├── label-list.js │ ├── label-setup.js │ ├── label-style.js │ ├── lto-barcode.js │ ├── page-calibration.js │ ├── page-layout.js │ ├── paper-size.js │ ├── prefix-field.js │ └── tape-type.js ├── maintenance.rst ├── managing-remotes.rst ├── markdown-primer.rst ├── network-management.rst ├── notifications.rst ├── output-format.rst ├── package-repositories.rst ├── pbs-copyright.rst ├── pbs2to3 │ └── man1.rst ├── pmt │ ├── description.rst │ ├── man1.rst │ └── options.rst ├── pmtx │ ├── description.rst │ └── man1.rst ├── proxmox-backup-client │ ├── description.rst │ └── man1.rst ├── proxmox-backup-debug │ ├── description.rst │ └── man1.rst ├── proxmox-backup-manager │ ├── description.rst │ └── man1.rst ├── proxmox-backup-proxy │ ├── description.rst │ └── man1.rst ├── proxmox-backup │ ├── description.rst │ └── man1.rst ├── proxmox-file-restore │ ├── description.rst │ └── man1.rst ├── proxmox-tape │ ├── description.rst │ └── man1.rst ├── prune-simulator │ ├── clear-trigger.png │ ├── documentation.html │ ├── index.html │ └── prune-simulator_source.js ├── pve-integration.rst ├── pxar-format-overview.dot ├── pxar-tool.rst ├── pxar │ ├── description.rst │ └── man1.rst ├── services.rst ├── storage.rst ├── sysadmin.rst ├── system-booting.rst ├── system-requirements.rst ├── tape-backup.rst ├── technical-overview.rst ├── terminology.rst ├── todos.rst ├── traffic-control.rst └── user-management.rst ├── etc ├── Makefile ├── pbs-enterprise.list ├── proxmox-backup-banner.service.in ├── proxmox-backup-daily-update.service.in ├── proxmox-backup-daily-update.timer ├── proxmox-backup-proxy.service.in └── proxmox-backup.service.in ├── examples ├── cipherbench.rs ├── completion.rs ├── download-speed.rs ├── dynamic-files.rs ├── h2client.rs ├── h2s-client.rs ├── h2s-server.rs ├── h2server.rs ├── tape-write-benchmark.rs ├── test_chunk_size.rs ├── test_chunk_speed.rs ├── test_chunk_speed2.rs └── upload-speed.rs ├── pbs-api-types ├── Cargo.toml ├── src │ ├── acl.rs │ ├── ad.rs │ ├── crypto.rs │ ├── datastore.rs │ ├── file_restore.rs │ ├── jobs.rs │ ├── key_derivation.rs │ ├── ldap.rs │ ├── lib.rs │ ├── maintenance.rs │ ├── metrics.rs │ ├── network.rs │ ├── node.rs │ ├── openid.rs │ ├── percent_encoding.rs │ ├── remote.rs │ ├── tape │ │ ├── changer.rs │ │ ├── device.rs │ │ ├── drive.rs │ │ ├── media.rs │ │ ├── media_location.rs │ │ ├── media_pool.rs │ │ ├── media_status.rs │ │ └── mod.rs │ ├── traffic_control.rs │ ├── user.rs │ └── zfs.rs └── tests │ └── group_filter_tests.rs ├── pbs-buildcfg ├── Cargo.toml ├── build.rs └── src │ └── lib.rs ├── pbs-client ├── Cargo.toml └── src │ ├── backup_reader.rs │ ├── backup_repo.rs │ ├── backup_specification.rs │ ├── backup_writer.rs │ ├── catalog_shell.rs │ ├── chunk_stream.rs │ ├── http_client.rs │ ├── lib.rs │ ├── merge_known_chunks.rs │ ├── pipe_to_stream.rs │ ├── pxar │ ├── create.rs │ ├── dir_stack.rs │ ├── extract.rs │ ├── flags.rs │ ├── metadata.rs │ ├── mod.rs │ └── tools.rs │ ├── pxar_backup_stream.rs │ ├── remote_chunk_reader.rs │ ├── task_log.rs │ ├── tools │ ├── key_source.rs │ └── mod.rs │ └── vsock_client.rs ├── pbs-config ├── Cargo.toml └── src │ ├── acl.rs │ ├── cached_user_info.rs │ ├── config_version_cache.rs │ ├── datastore.rs │ ├── domains.rs │ ├── drive.rs │ ├── lib.rs │ ├── media_pool.rs │ ├── metrics.rs │ ├── network │ ├── helper.rs │ ├── lexer.rs │ ├── mod.rs │ └── parser.rs │ ├── notifications.rs │ ├── prune.rs │ ├── remote.rs │ ├── sync.rs │ ├── tape_job.rs │ ├── token_shadow.rs │ ├── traffic_control.rs │ ├── user.rs │ └── verify.rs ├── pbs-datastore ├── Cargo.toml ├── examples │ └── ls-snapshots.rs └── src │ ├── backup_info.rs │ ├── cached_chunk_reader.rs │ ├── catalog.rs │ ├── checksum_reader.rs │ ├── checksum_writer.rs │ ├── chunk_stat.rs │ ├── chunk_store.rs │ ├── chunker.rs │ ├── crypt_reader.rs │ ├── crypt_writer.rs │ ├── data_blob.rs │ ├── data_blob_reader.rs │ ├── data_blob_writer.rs │ ├── datastore.rs │ ├── dynamic_index.rs │ ├── file_formats.rs │ ├── fixed_index.rs │ ├── hierarchy.rs │ ├── index.rs │ ├── lib.rs │ ├── local_chunk_reader.rs │ ├── manifest.rs │ ├── paperkey.rs │ ├── prune.rs │ ├── read_chunk.rs │ ├── snapshot_reader.rs │ ├── store_progress.rs │ └── task_tracking.rs ├── pbs-fuse-loop ├── Cargo.toml └── src │ ├── fuse_loop.rs │ ├── lib.rs │ └── loopdev.rs ├── pbs-key-config ├── Cargo.toml └── src │ └── lib.rs ├── pbs-pxar-fuse ├── Cargo.toml └── src │ └── lib.rs ├── pbs-tape ├── Cargo.toml └── src │ ├── bin │ ├── pmt.rs │ └── pmtx.rs │ ├── blocked_reader.rs │ ├── blocked_writer.rs │ ├── emulate_tape_reader.rs │ ├── emulate_tape_writer.rs │ ├── lib.rs │ ├── linux_list_drives.rs │ ├── sg_pt_changer.rs │ ├── sg_tape.rs │ ├── sg_tape │ ├── device_status.rs │ ├── encryption.rs │ ├── mam.rs │ ├── report_density.rs │ ├── tape_alert_flags.rs │ └── volume_statistics.rs │ ├── sgutils2.rs │ ├── tape_read.rs │ └── tape_write.rs ├── pbs-tools ├── Cargo.toml └── src │ ├── async_lru_cache.rs │ ├── cert.rs │ ├── crypt_config.rs │ ├── format.rs │ ├── json.rs │ ├── lib.rs │ ├── lru_cache.rs │ ├── nom.rs │ └── sha.rs ├── proxmox-backup-banner ├── Cargo.toml └── src │ └── main.rs ├── proxmox-backup-client ├── Cargo.toml └── src │ ├── benchmark.rs │ ├── bin │ └── dump-catalog-shell-cli.rs │ ├── catalog.rs │ ├── key.rs │ ├── main.rs │ ├── mount.rs │ ├── namespace.rs │ ├── snapshot.rs │ └── task.rs ├── proxmox-file-restore ├── Cargo.toml └── src │ ├── block_driver.rs │ ├── block_driver_qemu.rs │ ├── cpio.rs │ ├── main.rs │ └── qemu_helper.rs ├── proxmox-restore-daemon ├── Cargo.toml └── src │ ├── main.rs │ └── proxmox_restore_daemon │ ├── api.rs │ ├── auth.rs │ ├── disk.rs │ ├── mod.rs │ └── watchdog.rs ├── pxar-bin ├── Cargo.toml ├── src │ └── main.rs └── tests │ └── pxar.rs ├── rustfmt.toml ├── src ├── acme │ ├── client.rs │ ├── mod.rs │ └── plugin.rs ├── api2 │ ├── access │ │ ├── acl.rs │ │ ├── domain.rs │ │ ├── mod.rs │ │ ├── openid.rs │ │ ├── role.rs │ │ ├── tfa.rs │ │ └── user.rs │ ├── admin │ │ ├── datastore.rs │ │ ├── gc.rs │ │ ├── metrics.rs │ │ ├── mod.rs │ │ ├── namespace.rs │ │ ├── prune.rs │ │ ├── sync.rs │ │ ├── traffic_control.rs │ │ └── verify.rs │ ├── backup │ │ ├── environment.rs │ │ ├── mod.rs │ │ └── upload_chunk.rs │ ├── config │ │ ├── access │ │ │ ├── ad.rs │ │ │ ├── ldap.rs │ │ │ ├── mod.rs │ │ │ ├── openid.rs │ │ │ └── tfa.rs │ │ ├── acme.rs │ │ ├── changer.rs │ │ ├── datastore.rs │ │ ├── drive.rs │ │ ├── media_pool.rs │ │ ├── metrics │ │ │ ├── influxdbhttp.rs │ │ │ ├── influxdbudp.rs │ │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── notifications │ │ │ ├── gotify.rs │ │ │ ├── matchers.rs │ │ │ ├── mod.rs │ │ │ ├── sendmail.rs │ │ │ ├── smtp.rs │ │ │ └── targets.rs │ │ ├── prune.rs │ │ ├── remote.rs │ │ ├── sync.rs │ │ ├── tape_backup_job.rs │ │ ├── tape_encryption_keys.rs │ │ ├── traffic_control.rs │ │ └── verify.rs │ ├── helpers.rs │ ├── mod.rs │ ├── node │ │ ├── apt.rs │ │ ├── certificates.rs │ │ ├── config.rs │ │ ├── disks │ │ │ ├── directory.rs │ │ │ ├── mod.rs │ │ │ └── zfs.rs │ │ ├── dns.rs │ │ ├── journal.rs │ │ ├── mod.rs │ │ ├── network.rs │ │ ├── report.rs │ │ ├── rrd.rs │ │ ├── services.rs │ │ ├── status.rs │ │ ├── subscription.rs │ │ ├── syslog.rs │ │ ├── tasks.rs │ │ └── time.rs │ ├── ping.rs │ ├── pull.rs │ ├── reader │ │ ├── environment.rs │ │ └── mod.rs │ ├── status.rs │ ├── tape │ │ ├── backup.rs │ │ ├── changer.rs │ │ ├── drive.rs │ │ ├── media.rs │ │ ├── mod.rs │ │ └── restore.rs │ ├── types │ │ ├── acme.rs │ │ └── mod.rs │ └── version.rs ├── auth.rs ├── auth_helpers.rs ├── backup │ ├── hierarchy.rs │ ├── mod.rs │ └── verify.rs ├── bin │ ├── docgen.rs │ ├── pbs2to3.rs │ ├── proxmox-backup-api.rs │ ├── proxmox-backup-debug.rs │ ├── proxmox-backup-manager.rs │ ├── proxmox-backup-proxy.rs │ ├── proxmox-daily-update.rs │ ├── proxmox-tape.rs │ ├── proxmox_backup_debug │ │ ├── api.rs │ │ ├── diff.rs │ │ ├── inspect.rs │ │ ├── mod.rs │ │ └── recover.rs │ ├── proxmox_backup_manager │ │ ├── acl.rs │ │ ├── acme.rs │ │ ├── ad.rs │ │ ├── cert.rs │ │ ├── datastore.rs │ │ ├── disk.rs │ │ ├── dns.rs │ │ ├── ldap.rs │ │ ├── mod.rs │ │ ├── network.rs │ │ ├── node.rs │ │ ├── notifications │ │ │ ├── gotify.rs │ │ │ ├── matchers.rs │ │ │ ├── mod.rs │ │ │ ├── sendmail.rs │ │ │ ├── smtp.rs │ │ │ └── targets.rs │ │ ├── openid.rs │ │ ├── prune.rs │ │ ├── remote.rs │ │ ├── subscription.rs │ │ ├── sync.rs │ │ ├── traffic_control.rs │ │ ├── user.rs │ │ └── verify.rs │ ├── proxmox_tape │ │ ├── backup_job.rs │ │ ├── changer.rs │ │ ├── drive.rs │ │ ├── encryption_key.rs │ │ ├── media.rs │ │ ├── mod.rs │ │ └── pool.rs │ └── sg-tape-cmd.rs ├── client_helpers.rs ├── config │ ├── acme │ │ ├── mod.rs │ │ └── plugin.rs │ ├── mod.rs │ ├── node.rs │ └── tfa.rs ├── lib.rs ├── rrd_cache.rs ├── server │ ├── auth.rs │ ├── gc_job.rs │ ├── jobstate.rs │ ├── mod.rs │ ├── notifications.rs │ ├── prune_job.rs │ ├── pull.rs │ ├── realm_sync_job.rs │ ├── report.rs │ └── verify_job.rs ├── tape │ ├── changer │ │ ├── mod.rs │ │ ├── mtx │ │ │ ├── mod.rs │ │ │ ├── mtx_wrapper.rs │ │ │ └── parse_mtx_status.rs │ │ └── online_status_map.rs │ ├── drive │ │ ├── lto │ │ │ └── mod.rs │ │ ├── mod.rs │ │ └── virtual_tape.rs │ ├── encryption_keys.rs │ ├── file_formats │ │ ├── catalog_archive.rs │ │ ├── chunk_archive.rs │ │ ├── mod.rs │ │ ├── multi_volume_reader.rs │ │ ├── multi_volume_writer.rs │ │ └── snapshot_archive.rs │ ├── inventory.rs │ ├── media_catalog.rs │ ├── media_catalog_cache.rs │ ├── media_pool.rs │ ├── media_set.rs │ ├── mod.rs │ ├── pool_writer │ │ ├── catalog_set.rs │ │ ├── mod.rs │ │ └── new_chunks_iterator.rs │ └── test │ │ ├── alloc_writable_media.rs │ │ ├── compute_media_state.rs │ │ ├── current_set_usable.rs │ │ ├── inventory.rs │ │ └── mod.rs ├── tools │ ├── apt.rs │ ├── config.rs │ ├── disks │ │ ├── lvm.rs │ │ ├── mod.rs │ │ ├── smart.rs │ │ ├── zfs.rs │ │ ├── zpool_list.rs │ │ └── zpool_status.rs │ ├── fs.rs │ ├── mod.rs │ ├── parallel_handler.rs │ ├── shared_rate_limiter.rs │ ├── statistics.rs │ ├── systemd │ │ ├── config.rs │ │ ├── mod.rs │ │ ├── types.rs │ │ └── unit.rs │ └── ticket.rs └── traffic_control_cache.rs ├── templates ├── Makefile └── default │ ├── acme-err-body.txt.hbs │ ├── acme-err-subject.txt.hbs │ ├── gc-err-body.txt.hbs │ ├── gc-err-subject.txt.hbs │ ├── gc-ok-body.txt.hbs │ ├── gc-ok-subject.txt.hbs │ ├── package-updates-body.txt.hbs │ ├── package-updates-subject.txt.hbs │ ├── prune-err-body.txt.hbs │ ├── prune-err-subject.txt.hbs │ ├── prune-ok-body.txt.hbs │ ├── prune-ok-subject.txt.hbs │ ├── sync-err-body.txt.hbs │ ├── sync-err-subject.txt.hbs │ ├── sync-ok-body.txt.hbs │ ├── sync-ok-subject.txt.hbs │ ├── tape-backup-err-body.txt.hbs │ ├── tape-backup-err-subject.txt.hbs │ ├── tape-backup-ok-body.txt.hbs │ ├── tape-backup-ok-subject.txt.hbs │ ├── tape-load-body.txt.hbs │ ├── tape-load-subject.txt.hbs │ ├── test-body.html.hbs │ ├── test-body.txt.hbs │ ├── test-subject.txt.hbs │ ├── verify-err-body.txt.hbs │ ├── verify-err-subject.txt.hbs │ ├── verify-ok-body.txt.hbs │ └── verify-ok-subject.txt.hbs ├── tests ├── blob_writer.rs ├── catar.rs ├── catar_data │ ├── test_file │ │ └── file1 │ ├── test_files_and_subdirs │ │ ├── a-test-symlink │ │ ├── file1 │ │ ├── file2 │ │ └── subdir1 │ │ │ ├── subfile1 │ │ │ └── subfile2 │ ├── test_goodbye_sort_order │ │ ├── file1 │ │ ├── file2 │ │ ├── file3 │ │ └── file4 │ ├── test_symlink │ │ └── symlink1 │ └── test_xattrs_src │ │ └── file.txt ├── proto-client.c ├── prune.rs ├── verify-api.rs └── worker-task-abort.rs ├── www ├── Application.js ├── Dashboard.js ├── DirectoryList.js ├── LoginView.js ├── MainView.js ├── Makefile ├── NavigationTree.js ├── NodeNotes.js ├── OnlineHelpInfo.js ├── Schema.js ├── ServerAdministration.js ├── ServerStatus.js ├── Subscription.js ├── SystemConfiguration.js ├── Utils.js ├── VersionInfo.js ├── ZFSList.js ├── button │ └── TaskButton.js ├── config │ ├── ACLView.js │ ├── CertificateView.js │ ├── GCView.js │ ├── MetricServerView.js │ ├── NodeOptionView.js │ ├── NotificationConfigView.js │ ├── PruneAndGC.js │ ├── PruneView.js │ ├── RemoteView.js │ ├── SyncView.js │ ├── TokenView.js │ ├── TrafficControlView.js │ ├── UserView.js │ ├── VerifyView.js │ └── WebauthnView.js ├── css │ └── ext6-pbs.css ├── dashboard │ ├── DataStoreStatistics.js │ ├── LongestTasks.js │ ├── RunningTasks.js │ └── TaskSummary.js ├── data │ └── RunningTasksStore.js ├── datastore │ ├── Content.js │ ├── DataStoreList.js │ ├── DataStoreListSummary.js │ ├── Notes.js │ ├── OptionView.js │ ├── Panel.js │ ├── Prune.js │ └── Summary.js ├── form │ ├── AuthidSelector.js │ ├── CalendarEvent.js │ ├── DataStoreSelector.js │ ├── GroupFilter.js │ ├── GroupSelector.js │ ├── NamespaceMaxDepth.js │ ├── NamespaceSelector.js │ ├── PermissionPathSelector.js │ ├── RemoteSelector.js │ ├── RemoteTargetSelector.js │ ├── TokenSelector.js │ └── VerifyOutdatedAfter.js ├── images │ ├── icon-tape-drive.svg │ ├── icon-tape.svg │ ├── logo-128.png │ └── proxmox_logo.png ├── index.hbs ├── panel │ ├── AccessControl.js │ ├── NodeInfo.js │ ├── PrunePanel.js │ ├── StorageAndDisks.js │ ├── UsageChart.js │ └── XtermJsConsole.js ├── tape │ ├── BackupJobs.js │ ├── BackupOverview.js │ ├── ChangerConfig.js │ ├── ChangerStatus.js │ ├── DriveConfig.js │ ├── DriveStatus.js │ ├── EncryptionKeys.js │ ├── PoolConfig.js │ ├── TapeInventory.js │ ├── TapeManagement.js │ ├── form │ │ ├── AllocationSelector.js │ │ ├── ChangerSelector.js │ │ ├── DriveSelector.js │ │ ├── KeySelector.js │ │ ├── PoolSelector.js │ │ ├── RetentionSelector.js │ │ └── TapeDevicePathSelector.js │ └── window │ │ ├── ChangerEdit.js │ │ ├── DriveEdit.js │ │ ├── EncryptionEdit.js │ │ ├── Erase.js │ │ ├── LabelMedia.js │ │ ├── MediaRemoveWindow.js │ │ ├── PoolEdit.js │ │ ├── TapeBackup.js │ │ ├── TapeBackupJob.js │ │ └── TapeRestore.js └── window │ ├── ACLEdit.js │ ├── BackupGroupChangeOwner.js │ ├── CreateDirectory.js │ ├── DataStoreEdit.js │ ├── DatastoreRepoInfo.js │ ├── GCJobEdit.js │ ├── InfluxDbEdit.js │ ├── MaintenanceOptions.js │ ├── NamespaceEdit.js │ ├── NotesEdit.js │ ├── NotificationMatcherOverride.js │ ├── NotifyOptions.js │ ├── PruneJobEdit.js │ ├── RemoteEdit.js │ ├── Settings.js │ ├── SyncJobEdit.js │ ├── TokenEdit.js │ ├── TrafficControlEdit.js │ ├── UserEdit.js │ ├── VerifyAll.js │ ├── VerifyJobEdit.js │ └── ZFSCreate.js └── zsh-completions ├── _pmt ├── _pmtx ├── _proxmox-backup-client ├── _proxmox-backup-debug ├── _proxmox-backup-manager ├── _proxmox-file-restore ├── _proxmox-tape └── _pxar /.cargo/config: -------------------------------------------------------------------------------- 1 | [source] 2 | [source.debian-packages] 3 | directory = "/usr/share/cargo/registry" 4 | [source.crates-io] 5 | replace-with = "debian-packages" 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/*.rs.bk 2 | *.5 3 | *.7 4 | *.backup 5 | *.backup[0-9] 6 | *.backup[0-9][0-9] 7 | *.old 8 | *.old[0-9] 9 | *.old[0-9][0-9] 10 | *~ 11 | /*.build 12 | /*.buildinfo 13 | /*.changes 14 | /*.deb 15 | /*.dsc 16 | /*.tar* 17 | /.do-cargo-build 18 | /Cargo.lock 19 | /docs/*/synopsis.rst 20 | /docs/config/*/config.rst 21 | /docs/config/acl/roles.rst 22 | /docs/output 23 | /docs/proxmox-backup-client/catalog-shell-synopsis.rst 24 | # all services are generated from a .in file to set the libexec path 25 | /etc/*.service 26 | /proxmox-backup-server-dpkg-contents.txt 27 | /www/.lint-incremental 28 | /www/js/ 29 | __pycache__/ 30 | build/ 31 | local.mak 32 | target/ 33 | -------------------------------------------------------------------------------- /TODO.rst: -------------------------------------------------------------------------------- 1 | TODO list for Proxmox Backup 2 | ============================ 3 | 4 | 5 | * disk management api 6 | 7 | * improve catalog shell commands 8 | 9 | * improve user documentation 10 | 11 | 12 | GUI 13 | === 14 | 15 | * fix network/dns GUI (network/dns api changed) 16 | 17 | * user/acl/permission management GUI 18 | 19 | * implement GUI to configure remotes 20 | 21 | * implement fancy DatastoreStatus.js dashboard 22 | 23 | * implement PVE GUI to add PBS storage (with convenient copy/paste 24 | functionality, like we have for cluster join) 25 | 26 | 27 | 28 | Chores: 29 | ======= 30 | 31 | * move tools/xattr.rs and tools/acl.rs to proxmox/sys/linux/ 32 | 33 | * remove pbs-* systemd timers and services on package purge 34 | 35 | 36 | Suggestions 37 | =========== 38 | 39 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Copyright (C) 2019 - 2024 Proxmox Server Solutions GmbH 2 | 3 | This software is written by Proxmox Server Solutions GmbH 4 | 5 | This program is free software: you can redistribute it and/or modify 6 | it under the terms of the GNU Affero General Public License as published by 7 | the Free Software Foundation, either version 3 of the License, or 8 | (at your option) any later version. 9 | 10 | This program is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 | GNU Affero General Public License for more details. 14 | 15 | You should have received a copy of the GNU Affero General Public License 16 | along with this program. If not, see . 17 | -------------------------------------------------------------------------------- /debian/lintian-overrides: -------------------------------------------------------------------------------- 1 | proxmox-backup-server: mail-transport-agent-dependency-does-not-specify-default-mta 2 | proxmox-backup-server: package-installs-apt-sources [etc/apt/sources.list.d/pbs-enterprise.list] 3 | proxmox-backup-server: elevated-privileges 4755 root/root [usr/lib/x86_64-linux-gnu/proxmox-backup/sg-tape-cmd] 4 | proxmox-backup-server: systemd-service-file-refers-to-unusual-wantedby-target getty.target [lib/systemd/system/proxmox-backup-banner.service] 5 | proxmox-backup-server: uses-dpkg-database-directly [usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-api] 6 | proxmox-backup-server: uses-dpkg-database-directly [usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-proxy] 7 | proxmox-backup-server: uses-dpkg-database-directly [usr/sbin/pbs2to3] 8 | proxmox-backup-server: uses-dpkg-database-directly [usr/sbin/proxmox-backup-debug] 9 | -------------------------------------------------------------------------------- /debian/pmt.bc: -------------------------------------------------------------------------------- 1 | # pmt bash completion 2 | 3 | complete -C 'pmt bashcomplete' pmt 4 | -------------------------------------------------------------------------------- /debian/pmtx.bc: -------------------------------------------------------------------------------- 1 | # pmtx bash completion 2 | 3 | complete -C 'pmtx bashcomplete' pmtx 4 | -------------------------------------------------------------------------------- /debian/prerm: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | #DEBHELPER# 6 | 7 | # modeled after dh_systemd_start output 8 | if [ -d /run/systemd/system ] && [ "$1" = remove ]; then 9 | deb-systemd-invoke stop 'proxmox-backup-banner.service' 'proxmox-backup-proxy.service' \ 10 | 'proxmox-backup.service' 'proxmox-backup-daily-update.timer' >/dev/null || true 11 | fi 12 | -------------------------------------------------------------------------------- /debian/proxmox-backup-client.bash-completion: -------------------------------------------------------------------------------- 1 | debian/proxmox-backup-client.bc proxmox-backup-client 2 | debian/pxar.bc pxar 3 | -------------------------------------------------------------------------------- /debian/proxmox-backup-client.bc: -------------------------------------------------------------------------------- 1 | # proxmox-backup-client bash completion 2 | 3 | # see http://tiswww.case.edu/php/chet/bash/FAQ 4 | # and __ltrim_colon_completions() in /usr/share/bash-completion/bash_completion 5 | # this modifies global var, but I found no better way 6 | COMP_WORDBREAKS=${COMP_WORDBREAKS//:} 7 | 8 | complete -C 'proxmox-backup-client bashcomplete' proxmox-backup-client 9 | -------------------------------------------------------------------------------- /debian/proxmox-backup-client.install: -------------------------------------------------------------------------------- 1 | usr/bin/proxmox-backup-client 2 | usr/bin/pxar 3 | usr/share/man/man1/proxmox-backup-client.1 4 | usr/share/man/man1/pxar.1 5 | usr/share/zsh/vendor-completions/_proxmox-backup-client 6 | usr/share/zsh/vendor-completions/_pxar 7 | -------------------------------------------------------------------------------- /debian/proxmox-backup-debug.bc: -------------------------------------------------------------------------------- 1 | # proxmox-backup-debug bash completion 2 | 3 | # see http://tiswww.case.edu/php/chet/bash/FAQ 4 | # and __ltrim_colon_completions() in /usr/share/bash-completion/bash_completion 5 | # this modifies global var, but I found no better way 6 | COMP_WORDBREAKS=${COMP_WORDBREAKS//:} 7 | 8 | complete -C 'proxmox-backup-debug bashcomplete' proxmox-backup-debug 9 | -------------------------------------------------------------------------------- /debian/proxmox-backup-docs.install: -------------------------------------------------------------------------------- 1 | /usr/share/doc/proxmox-backup/html 2 | /usr/share/doc/proxmox-backup/proxmox-backup.pdf 3 | -------------------------------------------------------------------------------- /debian/proxmox-backup-docs.links: -------------------------------------------------------------------------------- 1 | /usr/share/doc/proxmox-backup/proxmox-backup.pdf /usr/share/doc/proxmox-backup/html/proxmox-backup.pdf 2 | /usr/share/fonts-font-awesome/ /usr/share/doc/proxmox-backup/html/lto-barcode/font-awesome 3 | /usr/share/javascript/extjs /usr/share/doc/proxmox-backup/html/api-viewer/extjs 4 | /usr/share/javascript/extjs /usr/share/doc/proxmox-backup/html/lto-barcode/extjs 5 | /usr/share/javascript/extjs /usr/share/doc/proxmox-backup/html/prune-simulator/extjs 6 | /usr/share/javascript/mathjax /usr/share/doc/proxmox-backup/html/_static/mathjax 7 | -------------------------------------------------------------------------------- /debian/proxmox-backup-docs.lintian-overrides: -------------------------------------------------------------------------------- 1 | proxmox-backup-docs: embedded-javascript-library please use * [usr/share/doc/proxmox-backup/html/_static/*.js] 2 | -------------------------------------------------------------------------------- /debian/proxmox-backup-file-restore.bash-completion: -------------------------------------------------------------------------------- 1 | debian/proxmox-file-restore.bc proxmox-file-restore 2 | -------------------------------------------------------------------------------- /debian/proxmox-backup-file-restore.bc: -------------------------------------------------------------------------------- 1 | # proxmox-file-restore bash completion 2 | 3 | # see http://tiswww.case.edu/php/chet/bash/FAQ 4 | # and __ltrim_colon_completions() in /usr/share/bash-completion/bash_completion 5 | # this modifies global var, but I found no better way 6 | COMP_WORDBREAKS=${COMP_WORDBREAKS//:} 7 | 8 | complete -C 'proxmox-file-restore bashcomplete' proxmox-file-restore 9 | -------------------------------------------------------------------------------- /debian/proxmox-backup-file-restore.install: -------------------------------------------------------------------------------- 1 | usr/bin/proxmox-file-restore 2 | usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore/proxmox-restore-daemon 3 | usr/share/man/man1/proxmox-file-restore.1 4 | usr/share/zsh/vendor-completions/_proxmox-file-restore 5 | -------------------------------------------------------------------------------- /debian/proxmox-backup-file-restore.triggers: -------------------------------------------------------------------------------- 1 | interest-noawait proxmox-backup-restore-image-update 2 | -------------------------------------------------------------------------------- /debian/proxmox-backup-manager.bc: -------------------------------------------------------------------------------- 1 | # proxmox-backup-manager bash completion 2 | 3 | # see http://tiswww.case.edu/php/chet/bash/FAQ 4 | # and __ltrim_colon_completions() in /usr/share/bash-completion/bash_completion 5 | # this modifies global var, but I found no better way 6 | COMP_WORDBREAKS=${COMP_WORDBREAKS//:} 7 | 8 | complete -C 'proxmox-backup-manager bashcomplete' proxmox-backup-manager 9 | -------------------------------------------------------------------------------- /debian/proxmox-backup-server.bash-completion: -------------------------------------------------------------------------------- 1 | debian/proxmox-backup-manager.bc proxmox-backup-manager 2 | debian/proxmox-backup-debug.bc proxmox-backup-debug 3 | debian/proxmox-tape.bc proxmox-tape 4 | debian/pmtx.bc pmtx 5 | debian/pmt.bc pmt 6 | -------------------------------------------------------------------------------- /debian/proxmox-backup-server.maintscript: -------------------------------------------------------------------------------- 1 | rm_conffile /etc/apt/sources.list.d/pbstest-beta.list 1.0.0~ proxmox-backup-server 2 | -------------------------------------------------------------------------------- /debian/proxmox-backup-server.udev: -------------------------------------------------------------------------------- 1 | # do not edit this file, it will be overwritten on update 2 | 3 | # persistent storage links: /dev/tape/{by-id,by-path} 4 | 5 | ACTION=="remove", GOTO="persistent_storage_tape_end" 6 | ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_tape_end" 7 | 8 | # also see: /lib/udev/rules.d/60-persistent-storage-tape.rules 9 | 10 | SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="1", IMPORT{program}="scsi_id --sg-version=3 --export --whitelisted -d $devnode", \ 11 | SYMLINK+="tape/by-id/scsi-$env{ID_SERIAL}-sg" 12 | 13 | # iSCSI devices from the same host have all the same ID_SERIAL, 14 | # but additionally a property named ID_SCSI_SERIAL. 15 | SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="1", ENV{ID_SCSI_SERIAL}=="?*", \ 16 | SYMLINK+="tape/by-id/scsi-$env{ID_SCSI_SERIAL}-sg" 17 | 18 | LABEL="persistent_storage_tape_end" 19 | -------------------------------------------------------------------------------- /debian/proxmox-tape.bc: -------------------------------------------------------------------------------- 1 | # proxmox-tape bash completion 2 | 3 | complete -C 'proxmox-tape bashcomplete' proxmox-tape 4 | -------------------------------------------------------------------------------- /debian/pxar.bc: -------------------------------------------------------------------------------- 1 | # pxar bash completion 2 | 3 | # see http://tiswww.case.edu/php/chet/bash/FAQ 4 | # and __ltrim_colon_completions() in /usr/share/bash-completion/bash_completion 5 | # this modifies global var, but I found no better way 6 | COMP_WORDBREAKS=${COMP_WORDBREAKS//:} 7 | 8 | complete -C 'pxar bashcomplete' pxar 9 | -------------------------------------------------------------------------------- /debian/scripts/elf-strip-unused-dependencies.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | binary=$1 4 | 5 | exec 3< <(ldd -u "$binary" | grep -oP '[^/:]+$') 6 | 7 | patchargs="" 8 | dropped="" 9 | while read -r dep; do 10 | dropped="$dep $dropped" 11 | patchargs="--remove-needed $dep $patchargs" 12 | done <&3 13 | exec 3<&- 14 | 15 | if [[ $dropped == "" ]]; then 16 | exit 0 17 | fi 18 | 19 | echo -e "patchelf '$binary' - removing unused dependencies:\n $dropped" 20 | patchelf $patchargs $binary 21 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 1.0 2 | -------------------------------------------------------------------------------- /debian/source/lintian-overrides: -------------------------------------------------------------------------------- 1 | rust-proxmox-backup source: field-too-long Build-Depends (* chars > 5000) 2 | rust-proxmox-backup source: absolute-symbolic-link-target-in-source /link/to/somewhere [tests/catar_data/test_symlink/symlink1] 3 | -------------------------------------------------------------------------------- /defines.mk: -------------------------------------------------------------------------------- 1 | PREFIX = /usr 2 | BINDIR = $(PREFIX)/bin 3 | SBINDIR = $(PREFIX)/sbin 4 | LIBDIR = $(PREFIX)/lib 5 | LIBEXECDIR = $(LIBDIR) 6 | DATAROOTDIR = $(PREFIX)/share 7 | MAN1DIR = $(PREFIX)/share/man/man1 8 | MAN5DIR = $(PREFIX)/share/man/man5 9 | DOCDIR = $(PREFIX)/share/doc/proxmox-backup 10 | JSDIR = $(DATAROOTDIR)/javascript/proxmox-backup 11 | SYSCONFDIR = /etc 12 | ZSH_COMPL_DEST = $(PREFIX)/share/zsh/vendor-completions 13 | 14 | # For local overrides 15 | -include local.mak 16 | -------------------------------------------------------------------------------- /docs/_static/custom.js: -------------------------------------------------------------------------------- 1 | window.addEventListener('DOMContentLoaded', (event) => { 2 | let activeSection = document.querySelector("a.current"); 3 | if (activeSection) { 4 | // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView 5 | activeSection.scrollIntoView({ block: 'center' }); 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /docs/_templates/index-sidebar.html: -------------------------------------------------------------------------------- 1 |

Navigation

2 | {{ toctree(includehidden=theme_sidebar_includehidden, collapse=True, titles_only=True) }} 3 | {% if theme_extra_nav_links %} 4 |
5 |

Links

6 | 11 | {% endif %} 12 | -------------------------------------------------------------------------------- /docs/_templates/sidebar-header.html: -------------------------------------------------------------------------------- 1 | 6 |

Proxmox Backup

7 |
8 | -------------------------------------------------------------------------------- /docs/api-viewer/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Proxmox Backup Server API Documentation 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/command-line-tools.rst: -------------------------------------------------------------------------------- 1 | Command-line Tools 2 | ------------------ 3 | 4 | ``proxmox-backup-client`` 5 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 6 | 7 | .. include:: proxmox-backup-client/description.rst 8 | 9 | ``proxmox-backup-manager`` 10 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ 11 | 12 | .. include:: proxmox-backup-manager/description.rst 13 | 14 | ``proxmox-tape`` 15 | ~~~~~~~~~~~~~~~~ 16 | 17 | .. include:: proxmox-tape/description.rst 18 | 19 | ``pmt`` 20 | ~~~~~~~ 21 | 22 | .. include:: pmt/description.rst 23 | 24 | ``pmtx`` 25 | ~~~~~~~~ 26 | 27 | .. include:: pmtx/description.rst 28 | 29 | ``pxar`` 30 | ~~~~~~~~ 31 | 32 | .. include:: pxar/description.rst 33 | 34 | ``proxmox-file-restore`` 35 | ~~~~~~~~~~~~~~~~~~~~~~~~~ 36 | 37 | .. include:: proxmox-file-restore/description.rst 38 | 39 | ``proxmox-backup-debug`` 40 | ~~~~~~~~~~~~~~~~~~~~~~~~ 41 | 42 | .. include:: proxmox-backup-debug/description.rst 43 | -------------------------------------------------------------------------------- /docs/command-syntax.rst: -------------------------------------------------------------------------------- 1 | Command Syntax 2 | ============== 3 | 4 | .. NOTE:: Logging verbosity for the command-line tools can be controlled with the 5 | ``PBS_LOG`` (for ``pxar``: ``PXAR_LOG``) environment variable. Possible values are `off`, 6 | `error`, `warn`, `info`, `debug` and `trace` with `info` being the default. 7 | 8 | ``proxmox-backup-client`` 9 | ------------------------- 10 | 11 | .. include:: proxmox-backup-client/synopsis.rst 12 | 13 | 14 | Catalog Shell Commands 15 | ~~~~~~~~~~~~~~~~~~~~~~ 16 | 17 | The following commands are available in an interactive restore shell: 18 | 19 | .. code-block:: console 20 | 21 | proxmox-backup-client shell 22 | 23 | 24 | .. include:: proxmox-backup-client/catalog-shell-synopsis.rst 25 | 26 | 27 | ``proxmox-backup-manager`` 28 | -------------------------- 29 | 30 | .. include:: proxmox-backup-manager/synopsis.rst 31 | 32 | 33 | ``proxmox-tape`` 34 | ---------------- 35 | 36 | .. include:: proxmox-tape/synopsis.rst 37 | 38 | ``pmt`` 39 | ------- 40 | 41 | .. include:: pmt/options.rst 42 | 43 | .... 44 | 45 | .. include:: pmt/synopsis.rst 46 | 47 | 48 | ``pmtx`` 49 | -------- 50 | 51 | .. include:: pmtx/synopsis.rst 52 | 53 | 54 | ``pxar`` 55 | -------- 56 | 57 | .. include:: pxar/synopsis.rst 58 | 59 | 60 | ``proxmox-file-restore`` 61 | ------------------------ 62 | .. include:: proxmox-file-restore/synopsis.rst 63 | 64 | 65 | ``proxmox-backup-debug`` 66 | ------------------------ 67 | .. include:: proxmox-backup-debug/synopsis.rst 68 | -------------------------------------------------------------------------------- /docs/config/acl/format.rst: -------------------------------------------------------------------------------- 1 | This file contains the access control list for the Proxmox Backup 2 | Server API. 3 | 4 | Each line starts with ``acl:``, followed by 4 additional values 5 | separated by colon. 6 | 7 | :propagate: Propagate permissions down the hierarchy 8 | 9 | :path: The object path 10 | 11 | :User/Token: List of users and tokens 12 | 13 | :Role: List of assigned roles 14 | 15 | Here is an example list:: 16 | 17 | acl:1:/:root@pam!test:Admin 18 | acl:1:/datastore/store1:user1@pbs:DatastoreAdmin 19 | 20 | 21 | You can use the ``proxmox-backup-manager acl`` command to manipulate 22 | this file. 23 | -------------------------------------------------------------------------------- /docs/config/acl/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ======= 4 | acl.cfg 5 | ======= 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/acl.cfg is a configuration file for Proxmox 11 | Backup Server. It contains the access control configuration for the API. 12 | 13 | File Format 14 | =========== 15 | 16 | .. include:: format.rst 17 | 18 | Roles 19 | ===== 20 | 21 | The following roles exist: 22 | 23 | .. include:: roles.rst 24 | 25 | .. include:: ../../pbs-copyright.rst 26 | -------------------------------------------------------------------------------- /docs/config/datastore/format.rst: -------------------------------------------------------------------------------- 1 | This file contains a list of datastore configuration sections. Each 2 | section starts with the header ``datastore: ``, followed by the 3 | datastore configuration options. 4 | 5 | :: 6 | 7 | datastore: 8 | path 9 | 10 | ... 11 | 12 | datastore: 13 | path 14 | ... 15 | 16 | 17 | You can use the ``proxmox-backup-manager datastore`` command to manipulate 18 | this file. 19 | -------------------------------------------------------------------------------- /docs/config/datastore/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ============= 4 | datastore.cfg 5 | ============= 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/datastore.cfg is a configuration file for Proxmox 11 | Backup Server. It contains the Datastore configuration. 12 | 13 | File Format 14 | =========== 15 | 16 | .. include:: format.rst 17 | 18 | Options 19 | ======= 20 | 21 | .. include:: config.rst 22 | 23 | .. include:: ../../pbs-copyright.rst 24 | -------------------------------------------------------------------------------- /docs/config/domains/format.rst: -------------------------------------------------------------------------------- 1 | This file contains the list authentication realms. 2 | 3 | Each user configuration section starts with the header ``: ``, 4 | followed by the realm's configuration options. 5 | 6 | For LDAP realms, the LDAP bind password is stored in ``ldap_passwords.json``. 7 | 8 | :: 9 | 10 | openid: master 11 | client-id pbs 12 | comment 13 | issuer-url http://192.168.0.10:8080/realms/master 14 | username-claim username 15 | 16 | ldap: ldap-server 17 | base-dn OU=People,DC=ldap-server,DC=example,DC=com 18 | mode ldaps 19 | server1 192.168.0.10 20 | sync-attributes email=mail 21 | sync-defaults-options enable-new=0,remove-vanished=acl;entry 22 | user-attr uid 23 | user-classes inetorgperson,posixaccount,person,user 24 | 25 | 26 | You can use the ``proxmox-backup-manager openid``, ``proxmox-backup-manager 27 | ldap`` and ``proxmox-backup-manager ad`` commands to manipulate this file. 28 | -------------------------------------------------------------------------------- /docs/config/domains/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | =========== 4 | domains.cfg 5 | =========== 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/domains.cfg is a configuration file for Proxmox 11 | Backup Server. It contains the realm configuration. 12 | 13 | File Format 14 | =========== 15 | 16 | .. include:: format.rst 17 | 18 | Options 19 | ======= 20 | 21 | .. include:: config.rst 22 | 23 | .. include:: ../../pbs-copyright.rst 24 | -------------------------------------------------------------------------------- /docs/config/media-pool/format.rst: -------------------------------------------------------------------------------- 1 | Each entry starts with the header ``pool: ``, followed by the 2 | media pool configuration options. 3 | 4 | :: 5 | 6 | pool: company1 7 | allocation always 8 | retention overwrite 9 | 10 | pool: ... 11 | 12 | 13 | You can use the ``proxmox-tape pool`` command to manipulate this file. 14 | -------------------------------------------------------------------------------- /docs/config/media-pool/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ========================== 4 | media-pool.cfg 5 | ========================== 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/media-pool.cfg is a configuration file 11 | for Proxmox Backup Server. It contains the medila pool configuration 12 | for tape backups. 13 | 14 | File Format 15 | =========== 16 | 17 | .. include:: format.rst 18 | 19 | Options 20 | ======= 21 | 22 | .. include:: config.rst 23 | 24 | .. include:: ../../pbs-copyright.rst 25 | -------------------------------------------------------------------------------- /docs/config/notifications-priv/format.rst: -------------------------------------------------------------------------------- 1 | This file contains protected credentials for notification targets. 2 | -------------------------------------------------------------------------------- /docs/config/notifications-priv/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ====================== 4 | notifications-priv.cfg 5 | ====================== 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/notifications-priv.cfg is a configuration file 11 | for Proxmox Backup Server. It contains the configration for the 12 | notification system configuration. 13 | 14 | File Format 15 | =========== 16 | 17 | .. include:: format.rst 18 | 19 | Options 20 | ======= 21 | 22 | .. include:: config.rst 23 | 24 | .. include:: ../../pbs-copyright.rst 25 | -------------------------------------------------------------------------------- /docs/config/notifications/format.rst: -------------------------------------------------------------------------------- 1 | This file contains configuration for notification targets and notification 2 | matchers. 3 | -------------------------------------------------------------------------------- /docs/config/notifications/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ================== 4 | notifications.cfg 5 | ================== 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/notifications.cfg is a configuration file 11 | for Proxmox Backup Server. It contains the configration for the 12 | notification system configuration. 13 | 14 | File Format 15 | =========== 16 | 17 | .. include:: format.rst 18 | 19 | Options 20 | ======= 21 | 22 | .. include:: config.rst 23 | 24 | .. include:: ../../pbs-copyright.rst 25 | -------------------------------------------------------------------------------- /docs/config/remote/format.rst: -------------------------------------------------------------------------------- 1 | This file contains information used to access remote servers. 2 | 3 | Each entry starts with the header ``remote: ``, followed by the 4 | remote configuration options. 5 | 6 | :: 7 | 8 | remote: server1 9 | host server1.local 10 | auth-id sync@pbs 11 | ... 12 | 13 | remote: ... 14 | 15 | 16 | You can use the ``proxmox-backup-manager remote`` command to manipulate 17 | this file. 18 | -------------------------------------------------------------------------------- /docs/config/remote/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ========== 4 | remote.cfg 5 | ========== 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/remote.cfg is a configuration file for 11 | Proxmox Backup Server. It contains information about remote servers, 12 | usable for synchronization jobs. 13 | 14 | File Format 15 | =========== 16 | 17 | .. include:: format.rst 18 | 19 | Options 20 | ======= 21 | 22 | .. include:: config.rst 23 | 24 | .. include:: ../../pbs-copyright.rst 25 | -------------------------------------------------------------------------------- /docs/config/sync/format.rst: -------------------------------------------------------------------------------- 1 | Each entry starts with the header ``sync: ``, followed by the 2 | job configuration options. 3 | 4 | :: 5 | 6 | sync: job1 7 | store store1 8 | remote-store store1 9 | remote lina 10 | 11 | sync: ... 12 | 13 | 14 | You can use the ``proxmox-backup-manager sync-job`` command to manipulate 15 | this file. 16 | -------------------------------------------------------------------------------- /docs/config/sync/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ======== 4 | sync.cfg 5 | ======== 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/sync.cfg is a configuration file for Proxmox 11 | Backup Server. It contains the synchronization job configuration. 12 | 13 | File Format 14 | =========== 15 | 16 | .. include:: format.rst 17 | 18 | Options 19 | ======= 20 | 21 | .. include:: config.rst 22 | 23 | .. include:: ../../pbs-copyright.rst 24 | -------------------------------------------------------------------------------- /docs/config/tape-job/format.rst: -------------------------------------------------------------------------------- 1 | Each entry starts with the header ``backup: ``, followed by the 2 | job configuration options. 3 | 4 | :: 5 | 6 | backup: job1 7 | drive hh8 8 | pool p4 9 | store store3 10 | schedule daily 11 | 12 | backup: ... 13 | 14 | 15 | You can use the ``proxmox-tape backup-job`` command to manipulate 16 | this file. 17 | -------------------------------------------------------------------------------- /docs/config/tape-job/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ============ 4 | tape-job.cfg 5 | ============ 6 | 7 | Description 8 | =========== 9 | 10 | The file ``/etc/proxmox-backup/tape-job.cfg`` is a configuration file for 11 | Proxmox Backup Server. It contains the tape job configuration. 12 | 13 | File Format 14 | =========== 15 | 16 | .. include:: format.rst 17 | 18 | Options 19 | ======= 20 | 21 | .. include:: config.rst 22 | 23 | 24 | .. include:: ../../pbs-copyright.rst 25 | -------------------------------------------------------------------------------- /docs/config/tape/format.rst: -------------------------------------------------------------------------------- 1 | Each LTO drive configuration section starts with the header ``lto: ``, 2 | followed by the drive configuration options. 3 | 4 | Tape changer configurations start with the header ``changer: ``, 5 | followed by the changer configuration options. 6 | 7 | :: 8 | 9 | lto: hh8 10 | changer sl3 11 | path /dev/tape/by-id/scsi-10WT065325-nst 12 | 13 | changer: sl3 14 | export-slots 14,15,16 15 | path /dev/tape/by-id/scsi-CJ0JBE0059 16 | 17 | 18 | You can use the ``proxmox-tape drive`` and ``proxmox-tape changer`` 19 | commands to manipulate this file. 20 | 21 | .. NOTE:: The ``virtual:`` drive type is experimental and should only be used 22 | for debugging. 23 | -------------------------------------------------------------------------------- /docs/config/tape/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ======== 4 | tape.cfg 5 | ======== 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/tape.cfg is a configuration file for Proxmox 11 | Backup Server. It contains the tape drive and changer configuration. 12 | 13 | File Format 14 | =========== 15 | 16 | .. include:: format.rst 17 | 18 | Options 19 | ======= 20 | 21 | .. include:: config.rst 22 | 23 | .. include:: ../../pbs-copyright.rst 24 | -------------------------------------------------------------------------------- /docs/config/user/format.rst: -------------------------------------------------------------------------------- 1 | This file contains the list of API users and API tokens. 2 | 3 | Each user configuration section starts with the header ``user: ``, 4 | followed by the user configuration options. 5 | 6 | API token configuration starts with the header ``token: 7 | ``, followed by the token configuration. The data 8 | used to authenticate tokens is stored in a separate file 9 | (``token.shadow``). 10 | 11 | 12 | :: 13 | 14 | user: root@pam 15 | comment Superuser 16 | email test@example.local 17 | ... 18 | 19 | token: root@pam!token1 20 | comment API test token 21 | enable true 22 | expire 0 23 | 24 | user: ... 25 | 26 | 27 | You can use the ``proxmox-backup-manager user`` command to manipulate 28 | this file. 29 | -------------------------------------------------------------------------------- /docs/config/user/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ======== 4 | user.cfg 5 | ======== 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/user.cfg is a configuration file for Proxmox 11 | Backup Server. It contains the user configuration. 12 | 13 | File Format 14 | =========== 15 | 16 | .. include:: format.rst 17 | 18 | Options 19 | ======= 20 | 21 | .. include:: config.rst 22 | 23 | .. include:: ../../pbs-copyright.rst 24 | -------------------------------------------------------------------------------- /docs/config/verification/format.rst: -------------------------------------------------------------------------------- 1 | Each entry starts with the header ``verification: ``, followed by the 2 | job configuration options. 3 | 4 | :: 5 | 6 | verification: verify-store2 7 | ignore-verified true 8 | outdated-after 7 9 | schedule daily 10 | store store2 11 | 12 | verification: ... 13 | 14 | 15 | You can use the ``proxmox-backup-manager verify-job`` command to manipulate 16 | this file. 17 | -------------------------------------------------------------------------------- /docs/config/verification/man5.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ================ 4 | verification.cfg 5 | ================ 6 | 7 | Description 8 | =========== 9 | 10 | The file /etc/proxmox-backup/sync.cfg is a configuration file for Proxmox 11 | Backup Server. It contains the verification job configuration. 12 | 13 | File Format 14 | =========== 15 | 16 | .. include:: format.rst 17 | 18 | Options 19 | ======= 20 | 21 | .. include:: config.rst 22 | 23 | .. include:: ../../pbs-copyright.rst 24 | -------------------------------------------------------------------------------- /docs/faq-release-support-table.csv: -------------------------------------------------------------------------------- 1 | Proxmox Backup Version , Debian Version , First Release , Debian EOL , Proxmox Backup EOL 2 | Proxmox Backup 3 , Debian 12 (Bookworm) , 2023-06 , TBA , TBA 3 | Proxmox Backup 2 , Debian 11 (Bullseye) , 2021-07 , 2024-07 , 2024-07 4 | Proxmox Backup 1 , Debian 10 (Buster) , 2020-11 , 2022-08 , 2022-07 5 | -------------------------------------------------------------------------------- /docs/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/favicon.ico -------------------------------------------------------------------------------- /docs/images/proxmox-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/proxmox-logo.png -------------------------------------------------------------------------------- /docs/images/screenshots/boot-grub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/boot-grub.png -------------------------------------------------------------------------------- /docs/images/screenshots/boot-systemdboot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/boot-systemdboot.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-acme-add-domain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-acme-add-domain.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-acme-create-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-acme-create-account.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-acme-create-challenge-plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-acme-create-challenge-plugin.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-administration-apt-repos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-administration-apt-repos.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-administration-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-administration-logs.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-administration-serverstatus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-administration-serverstatus.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-administration-services.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-administration-services.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-administration-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-administration-tasks.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-administration-updates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-administration-updates.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-apitoken-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-apitoken-overview.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-apitoken-secret-value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-apitoken-secret-value.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-certs-upload-custom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-certs-upload-custom.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-dashboard.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore-content-prune-group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore-content-prune-group.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore-content.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore-content.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore-create.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore-options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore-options.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore-prune-job-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore-prune-job-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore-prunegc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore-prunegc.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore-summary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore-summary.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore-verifyjob-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore-verifyjob-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-datastore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-datastore.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-disks-dir-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-disks-dir-create.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-disks-zfs-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-disks-zfs-create.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-disks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-disks.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-login-window.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-login-window.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-network-create-bond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-network-create-bond.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-permissions-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-permissions-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-permissions.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-remote-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-remote-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-remote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-remote.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-syncjob-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-syncjob-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-syncjob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-syncjob.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-system-config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-system-config.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-backup-jobs-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-backup-jobs-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-backup-jobs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-backup-jobs.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-changer-overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-changer-overview.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-changers-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-changers-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-changers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-changers.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-crypt-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-crypt-keys.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-drives-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-drives-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-drives.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-drives.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-pools-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-pools-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tape-pools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tape-pools.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tfa-add-recovery-keys.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tfa-add-recovery-keys.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tfa-add-totp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tfa-add-totp.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-tfa-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-tfa-login.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-traffic-control-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-traffic-control-add.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-user-management-add-user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-user-management-add-user.png -------------------------------------------------------------------------------- /docs/images/screenshots/pbs-gui-user-management.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/images/screenshots/pbs-gui-user-management.png -------------------------------------------------------------------------------- /docs/index.rst: -------------------------------------------------------------------------------- 1 | .. Proxmox Backup documentation master file 2 | 3 | Welcome to the Proxmox Backup documentation! 4 | ============================================ 5 | | |pbs-copyright| 6 | | Version |version| -- |today| 7 | 8 | Permission is granted to copy, distribute and/or modify this document under the 9 | terms of the GNU Free Documentation License, Version 1.3 or any later version 10 | published by the Free Software Foundation; with no Invariant Sections, no 11 | Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included 12 | in the section entitled "GNU Free Documentation License". 13 | 14 | 15 | .. only:: html 16 | 17 | A `PDF` version of the documentation is `also available here <./proxmox-backup.pdf>`_ 18 | 19 | .. toctree:: 20 | :maxdepth: 3 21 | :caption: Table of Contents 22 | 23 | introduction.rst 24 | installation.rst 25 | terminology.rst 26 | gui.rst 27 | storage.rst 28 | user-management.rst 29 | backup-client.rst 30 | pve-integration.rst 31 | pxar-tool.rst 32 | tape-backup.rst 33 | managing-remotes.rst 34 | maintenance.rst 35 | sysadmin.rst 36 | network-management.rst 37 | notifications.rst 38 | technical-overview.rst 39 | faq.rst 40 | 41 | .. raw:: latex 42 | 43 | \appendix 44 | 45 | .. toctree:: 46 | :maxdepth: 2 47 | :caption: Appendix 48 | 49 | command-syntax.rst 50 | configuration-files.rst 51 | file-formats.rst 52 | backup-protocol.rst 53 | calendarevents.rst 54 | markdown-primer.rst 55 | glossary.rst 56 | GFDL.rst 57 | 58 | .. only:: html and devbuild 59 | 60 | .. toctree:: 61 | :maxdepth: 2 62 | :hidden: 63 | :caption: Developer Appendix 64 | 65 | todos.rst 66 | 67 | 68 | .. # * :ref:`genindex` 69 | -------------------------------------------------------------------------------- /docs/lto-barcode/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Proxmox LTO Barcode Label Generator 7 | 8 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/lto-barcode/label-style.js: -------------------------------------------------------------------------------- 1 | Ext.define('LtoLabelStyle', { 2 | extend: 'Ext.form.field.ComboBox', 3 | alias: 'widget.ltoLabelStyle', 4 | 5 | editable: false, 6 | 7 | displayField: 'text', 8 | valueField: 'value', 9 | queryMode: 'local', 10 | 11 | store: { 12 | field: ['value', 'text'], 13 | data: [ 14 | { value: 'simple', text: "Simple" }, 15 | { value: 'color', text: 'Color (frames with color)' }, 16 | { value: 'frame', text: 'Frame (no color)' }, 17 | { value: 'placeholder', text: 'Placeholder (empty)' }, 18 | ], 19 | }, 20 | }); 21 | -------------------------------------------------------------------------------- /docs/lto-barcode/paper-size.js: -------------------------------------------------------------------------------- 1 | const paper_sizes = { 2 | a4: { 3 | comment: 'A4 (plain)', 4 | page_width: 210, 5 | page_height: 297, 6 | }, 7 | letter: { 8 | comment: 'Letter (plain)', 9 | page_width: 215.9, 10 | page_height: 279.4, 11 | }, 12 | avery3420: { 13 | fixed: true, 14 | comment: 'Avery Zweckform 3420', 15 | page_width: 210, 16 | page_height: 297, 17 | label_width: 70, 18 | label_height: 16.9, 19 | margin_left: 0, 20 | margin_top: 5, 21 | column_spacing: 0, 22 | row_spacing: 0, 23 | }, 24 | }; 25 | 26 | function paper_size_combo_data() { 27 | let data = []; 28 | 29 | for (let [key, value] of Object.entries(paper_sizes)) { 30 | data.push({ value: key, text: value.comment }); 31 | } 32 | return data; 33 | } 34 | 35 | Ext.define('PaperSize', { 36 | extend: 'Ext.form.field.ComboBox', 37 | alias: 'widget.paperSize', 38 | 39 | editable: false, 40 | 41 | displayField: 'text', 42 | valueField: 'value', 43 | queryMode: 'local', 44 | 45 | store: { 46 | field: ['value', 'text'], 47 | data: paper_size_combo_data(), 48 | }, 49 | }); 50 | -------------------------------------------------------------------------------- /docs/lto-barcode/prefix-field.js: -------------------------------------------------------------------------------- 1 | Ext.define('PrefixField', { 2 | extend: 'Ext.form.field.Text', 3 | alias: 'widget.prefixfield', 4 | 5 | maxLength: 6, 6 | allowBlank: false, 7 | 8 | maskRe: /([A-Za-z]+)$/, 9 | 10 | listeners: { 11 | change: function(field) { 12 | field.setValue(field.getValue().toUpperCase()); 13 | }, 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /docs/lto-barcode/tape-type.js: -------------------------------------------------------------------------------- 1 | Ext.define('LtoTapeType', { 2 | extend: 'Ext.form.field.ComboBox', 3 | alias: 'widget.ltoTapeType', 4 | 5 | editable: false, 6 | 7 | displayField: 'text', 8 | valueField: 'value', 9 | queryMode: 'local', 10 | 11 | store: { 12 | field: ['value', 'text'], 13 | data: [ 14 | { value: 'L9', text: "LTO-9" }, 15 | { value: 'LZ', text: "LTO-9 (WORM)" }, 16 | { value: 'L8', text: "LTO-8" }, 17 | { value: 'LY', text: "LTO-8 (WORM)" }, 18 | { value: 'L7', text: "LTO-7" }, 19 | { value: 'LX', text: "LTO-7 (WORM)" }, 20 | { value: 'L6', text: "LTO-6" }, 21 | { value: 'LW', text: "LTO-6 (WORM)" }, 22 | { value: 'L5', text: "LTO-5" }, 23 | { value: 'LV', text: "LTO-5 (WORM)" }, 24 | { value: 'L4', text: "LTO-4" }, 25 | { value: 'LU', text: "LTO-4 (WORM)" }, 26 | { value: 'L3', text: "LTO-3" }, 27 | { value: 'LT', text: "LTO-3 (WORM)" }, 28 | { value: 'CU', text: "Cleaning Unit" }, 29 | ], 30 | }, 31 | }); 32 | -------------------------------------------------------------------------------- /docs/output-format.rst: -------------------------------------------------------------------------------- 1 | Most commands that produce output support the ``--output-format`` 2 | parameter. This accepts the following values: 3 | 4 | :``text``: Text format (default). Structured data is rendered as a table. 5 | 6 | :``json``: JSON (single line). 7 | 8 | :``json-pretty``: JSON (multiple lines, nicely formatted). 9 | 10 | 11 | Also, the following environment variables can modify output behavior: 12 | 13 | ``PROXMOX_OUTPUT_FORMAT`` 14 | Defines the default output format. 15 | 16 | ``PROXMOX_OUTPUT_NO_BORDER`` 17 | If set (to any value), do not render table borders. 18 | 19 | ``PROXMOX_OUTPUT_NO_HEADER`` 20 | If set (to any value), do not render table headers. 21 | 22 | .. note:: The ``text`` format is designed to be human readable, and 23 | not meant to be parsed by automation tools. Please use the ``json`` 24 | format if you need to process the output. 25 | -------------------------------------------------------------------------------- /docs/pbs-copyright.rst: -------------------------------------------------------------------------------- 1 | Copyright and Disclaimer 2 | ======================== 3 | 4 | |pbs-copyright| 5 | 6 | This program is free software: you can redistribute it and/or modify 7 | it under the terms of the GNU Affero General Public License as 8 | published by the Free Software Foundation, either version 3 of the 9 | License, or (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, but 12 | WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 | Affero General Public License for more details. 15 | 16 | You should have received a copy of the GNU Affero General Public 17 | License along with this program. If not, see 18 | http://www.gnu.org/licenses/ 19 | -------------------------------------------------------------------------------- /docs/pbs2to3/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | 4 | ======= 5 | pbs2to3 6 | ======= 7 | 8 | Description 9 | =========== 10 | 11 | This tool will help you to detect common pitfalls and misconfiguration before, 12 | and during the upgrade of a Proxmox Backup Server system. Any failures or 13 | warnings must be addressed prior to the upgrade. If you suspect that a message 14 | is a false positive, you have to make carefully sure that it really is. 15 | 16 | .. include:: ../pbs-copyright.rst 17 | -------------------------------------------------------------------------------- /docs/pmt/description.rst: -------------------------------------------------------------------------------- 1 | The ``pmt`` command controls Linux tape devices. 2 | 3 | -------------------------------------------------------------------------------- /docs/pmt/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | === 4 | pmt 5 | === 6 | 7 | Synopsis 8 | ======== 9 | 10 | .. include:: synopsis.rst 11 | 12 | Common Options 13 | ============== 14 | 15 | .. include:: options.rst 16 | 17 | Description 18 | =========== 19 | 20 | .. include:: description.rst 21 | 22 | ENVIRONMENT 23 | =========== 24 | 25 | :TAPE: If set, replaces the `--device` option. 26 | 27 | :PROXMOX_TAPE_DRIVE: If set, replaces the `--drive` option. 28 | 29 | .. include:: ../pbs-copyright.rst 30 | -------------------------------------------------------------------------------- /docs/pmt/options.rst: -------------------------------------------------------------------------------- 1 | All commands support the following parameters to specify the tape device: 2 | 3 | --device Path to the Linux tape device 4 | 5 | --drive Use drive from Proxmox Backup Server configuration. 6 | 7 | 8 | Commands which generate output support the ``--output-format`` 9 | parameter. It accepts the following values: 10 | 11 | :``text``: Text format (default). Human readable. 12 | 13 | :``json``: JSON (single line). 14 | 15 | :``json-pretty``: JSON (multiple lines, nicely formatted). 16 | -------------------------------------------------------------------------------- /docs/pmtx/description.rst: -------------------------------------------------------------------------------- 1 | The ``pmtx`` command controls SCSI media changer devices (tape 2 | autoloader). 3 | 4 | -------------------------------------------------------------------------------- /docs/pmtx/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ========================== 4 | pmtx 5 | ========================== 6 | 7 | Synopsis 8 | ========== 9 | 10 | .. include:: synopsis.rst 11 | 12 | Common Options 13 | ============== 14 | 15 | All command supports the following parameters to specify the changer device: 16 | 17 | --device Path to Linux generic SCSI device (e.g. '/dev/sg4') 18 | 19 | --changer Use changer from Proxmox Backup Server configuration. 20 | 21 | 22 | Commands generating output supports the ``--output-format`` 23 | parameter. It accepts the following values: 24 | 25 | :``text``: Text format (default). Human readable. 26 | 27 | :``json``: JSON (single line). 28 | 29 | :``json-pretty``: JSON (multiple lines, nicely formatted). 30 | 31 | Description 32 | ============ 33 | 34 | .. include:: description.rst 35 | 36 | ENVIRONMENT 37 | =========== 38 | 39 | :CHANGER: If set, replaces the `--device` option 40 | 41 | :PROXMOX_TAPE_DRIVE: If set, use the Proxmox Backup Server 42 | configuration to find the associated changer device. 43 | 44 | .. include:: ../pbs-copyright.rst 45 | -------------------------------------------------------------------------------- /docs/proxmox-backup-client/description.rst: -------------------------------------------------------------------------------- 1 | This tool implements a backup server client, i.e. it can connect to a 2 | backup servers to issue management commands and to create or restore 3 | backups. 4 | 5 | -------------------------------------------------------------------------------- /docs/proxmox-backup-client/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ===================== 4 | proxmox-backup-client 5 | ===================== 6 | 7 | Synopsis 8 | ========== 9 | 10 | .. include:: synopsis.rst 11 | 12 | Catalog Shell Commands 13 | ====================== 14 | 15 | Those command are available when you start an intercative restore shell: 16 | 17 | :: 18 | 19 | proxmox-backup-client shell 20 | 21 | 22 | .. include:: catalog-shell-synopsis.rst 23 | 24 | 25 | Common Options 26 | ============== 27 | 28 | .. include:: ../output-format.rst 29 | 30 | 31 | Description 32 | ============ 33 | 34 | .. include:: description.rst 35 | 36 | 37 | .. include:: ../pbs-copyright.rst 38 | -------------------------------------------------------------------------------- /docs/proxmox-backup-debug/description.rst: -------------------------------------------------------------------------------- 1 | Implements debugging functionality to inspect Proxmox Backup datastore 2 | files, verify the integrity of chunks. 3 | 4 | The 'diff' subcommand allows comparing .pxar archives for two 5 | arbitrary snapshots. A list of added/modified/deleted files will be displayed. 6 | 7 | Also contains an 'api' subcommand where arbitrary api paths can be called 8 | (get/create/set/delete) as well as display their parameters (usage) and 9 | their child-links (ls). 10 | 11 | By default, it connects to the proxmox-backup-proxy on localhost via https, 12 | but by setting the environment variable `PROXMOX_DEBUG_API_CODE` to `1` the 13 | tool directly calls the corresponding code. 14 | 15 | .. WARNING:: Using `PROXMOX_DEBUG_API_CODE` can be dangerous and is only intended 16 | for debugging purposes. It is not intended for use on a production system. 17 | 18 | -------------------------------------------------------------------------------- /docs/proxmox-backup-debug/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ==================== 4 | proxmox-backup-debug 5 | ==================== 6 | 7 | Synopsis 8 | ======== 9 | 10 | .. include:: synopsis.rst 11 | 12 | Common Options 13 | ============== 14 | 15 | .. include:: ../output-format.rst 16 | 17 | Description 18 | ============ 19 | 20 | .. include:: description.rst 21 | 22 | .. include:: ../pbs-copyright.rst 23 | -------------------------------------------------------------------------------- /docs/proxmox-backup-manager/description.rst: -------------------------------------------------------------------------------- 1 | This tool exposes the whole backup server management API on the 2 | command line. 3 | -------------------------------------------------------------------------------- /docs/proxmox-backup-manager/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ========================== 4 | proxmox-backup-manager 5 | ========================== 6 | 7 | Synopsis 8 | ======== 9 | 10 | .. include:: synopsis.rst 11 | 12 | Description 13 | =========== 14 | 15 | .. include:: description.rst 16 | 17 | 18 | .. include:: ../pbs-copyright.rst 19 | -------------------------------------------------------------------------------- /docs/proxmox-backup-proxy/description.rst: -------------------------------------------------------------------------------- 1 | This daemon exposes the whole Proxmox Backup Server API on TCP port 8007 using 2 | HTTPS. It runs as user ``backup`` and has very limited permissions. Operations 3 | requiring more permissions are forwarded to the local ``proxmox-backup`` 4 | service. 5 | -------------------------------------------------------------------------------- /docs/proxmox-backup-proxy/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ========================== 4 | proxmox-backup-proxy 5 | ========================== 6 | 7 | Synopsis 8 | ========== 9 | 10 | This daemon is normally started and managed as ``systemd`` service:: 11 | 12 | systemctl start proxmox-backup-proxy 13 | 14 | systemctl stop proxmox-backup-proxy 15 | 16 | systemctl status proxmox-backup-proxy 17 | 18 | For debugging, you can start the daemon in foreground using:: 19 | 20 | proxmox-backup-proxy 21 | 22 | .. NOTE:: You need to stop the service before starting the daemon in 23 | foreground. 24 | 25 | Description 26 | ============ 27 | 28 | .. include:: description.rst 29 | 30 | .. include:: ../pbs-copyright.rst 31 | -------------------------------------------------------------------------------- /docs/proxmox-backup/description.rst: -------------------------------------------------------------------------------- 1 | This daemon exposes the Proxmox Backup Server management API on 2 | ``127.0.0.1:82``. It runs as ``root`` and has permission to do all 3 | privileged operations. 4 | 5 | NOTE: The daemon listens to a local address only, so you cannot access 6 | it from outside. The ``proxmox-backup-proxy`` daemon exposes the API 7 | to the outside world. 8 | -------------------------------------------------------------------------------- /docs/proxmox-backup/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ========================== 4 | proxmox-backup 5 | ========================== 6 | 7 | Synopsis 8 | ========== 9 | 10 | This daemon is normally started and managed as ``systemd`` service:: 11 | 12 | systemctl start proxmox-backup 13 | 14 | systemctl stop proxmox-backup 15 | 16 | systemctl status proxmox-backup 17 | 18 | For debugging, you can start the daemon in foreground using:: 19 | 20 | proxmox-backup-api 21 | 22 | .. NOTE:: You need to stop the service before starting the daemon in 23 | foreground. 24 | 25 | Description 26 | ============ 27 | 28 | .. include:: description.rst 29 | 30 | .. include:: ../pbs-copyright.rst 31 | -------------------------------------------------------------------------------- /docs/proxmox-file-restore/description.rst: -------------------------------------------------------------------------------- 1 | Command-line tool for restoring files and directories from Proxmox Backup 2 | archives. In contrast to proxmox-backup-client, this supports both 3 | container/host and VM backups. 4 | 5 | -------------------------------------------------------------------------------- /docs/proxmox-file-restore/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ==================== 4 | proxmox-file-restore 5 | ==================== 6 | 7 | Synopsis 8 | ======== 9 | 10 | .. include:: synopsis.rst 11 | 12 | Description 13 | ============ 14 | 15 | .. include:: description.rst 16 | 17 | .. include:: ../pbs-copyright.rst 18 | -------------------------------------------------------------------------------- /docs/proxmox-tape/description.rst: -------------------------------------------------------------------------------- 1 | This tool can configure and manage tape backups. 2 | -------------------------------------------------------------------------------- /docs/proxmox-tape/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ============ 4 | proxmox-tape 5 | ============ 6 | 7 | Synopsis 8 | ======== 9 | 10 | .. include:: synopsis.rst 11 | 12 | Description 13 | =========== 14 | 15 | .. include:: description.rst 16 | 17 | .. include:: ../pbs-copyright.rst 18 | -------------------------------------------------------------------------------- /docs/prune-simulator/clear-trigger.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/proxmox/proxmox-backup/4940514b0f05d6cd6a5f711edfdd47c1fa41b537/docs/prune-simulator/clear-trigger.png -------------------------------------------------------------------------------- /docs/prune-simulator/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Proxmox Backup Server Prune Simulator 7 | 8 | 9 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /docs/pxar-format-overview.dot: -------------------------------------------------------------------------------- 1 | digraph g { 2 | graph [ 3 | rankdir = "LR" 4 | fontname="Helvetica" 5 | ]; 6 | node [ 7 | fontsize = "16" 8 | shape = "record" 9 | ]; 10 | edge [ 11 | ]; 12 | 13 | "archive" [ 14 | label = "archive.pxar" 15 | shape = "record" 16 | ]; 17 | 18 | "rootdir" [ 19 | label = " ENTRY| \{XATTR\}\* extended attribute list\l | \{ACL_USER\}\* USER ACL entries\l | \{ACL_GROUP\}\* GROUP ACL entries\l| \[ACL_GROUP_OBJ\] the ACL_GROUP_OBJ \l| \[ACL_DEFAULT\] the various default ACL fields\l|\{ACL_DEFAULT_USER\}\* USER ACL entries\l|\{ACL_DEFAULT_GROUP\}\* GROUP ACL entries\l|\[FCAPS\] file capability in Linux disk format\l|\[QUOTA_PROJECT_ID\] the ext4/xfs quota project ID\l| { PAYLOAD | SYMLINK | DEVICE | { \{DirectoryEntries\}\* | GOODBYE}}" 20 | shape = "record" 21 | ]; 22 | 23 | 24 | "entry" [ 25 | label = " size: u64 = 64\l|type: u64 = ENTRY\l|feature_flags: u64\l|mode: u64\l|flags: u64\l|uid: u64\l|gid: u64\l|mtime: u64\l" 26 | labeljust = "l" 27 | shape = "record" 28 | ]; 29 | 30 | 31 | 32 | "direntry" [ 33 | label = " FILENAME |{ENTRY | HARDLINK}" 34 | shape = "record" 35 | ]; 36 | 37 | "archive" -> "rootdir":f0 38 | 39 | "rootdir":f0 -> "entry":f0 40 | 41 | "rootdir":de -> "direntry":f0 42 | 43 | } -------------------------------------------------------------------------------- /docs/pxar-tool.rst: -------------------------------------------------------------------------------- 1 | pxar Command-line Tool 2 | ====================== 3 | 4 | .. include:: pxar/description.rst 5 | 6 | -------------------------------------------------------------------------------- /docs/pxar/man1.rst: -------------------------------------------------------------------------------- 1 | :orphan: 2 | 3 | ==== 4 | pxar 5 | ==== 6 | 7 | .. Avoid errors with sphinx ref role 8 | .. role:: ref(emphasis) 9 | 10 | Synopsis 11 | ========== 12 | 13 | .. include:: synopsis.rst 14 | 15 | Description 16 | ============ 17 | 18 | .. include:: description.rst 19 | 20 | .. include:: ../pbs-copyright.rst 21 | -------------------------------------------------------------------------------- /docs/services.rst: -------------------------------------------------------------------------------- 1 | Service Daemons 2 | --------------- 3 | 4 | ``proxmox-backup-proxy`` 5 | ~~~~~~~~~~~~~~~~~~~~~~~~ 6 | 7 | .. include:: proxmox-backup-proxy/description.rst 8 | 9 | 10 | ``proxmox-backup`` 11 | ~~~~~~~~~~~~~~~~~~ 12 | 13 | .. include:: proxmox-backup/description.rst 14 | 15 | -------------------------------------------------------------------------------- /docs/sysadmin.rst: -------------------------------------------------------------------------------- 1 | .. _sysadmin_host_administration: 2 | 3 | Host System Administration 4 | ========================== 5 | 6 | `Proxmox Backup`_ is based on the famous Debian_ Linux 7 | distribution. This means that you have access to the entire range of 8 | Debian packages, and that the base system is well documented. The `Debian 9 | Administrator's Handbook`_ is available online, and provides a 10 | comprehensive introduction to the Debian operating system. 11 | 12 | A standard Proxmox Backup installation uses the default 13 | repositories from Debian, so you get bug fixes and security updates 14 | through that channel. In addition, we provide our own package 15 | repository to roll out all Proxmox related packages. This includes 16 | updates to some Debian packages when necessary. 17 | 18 | We also deliver a specially optimized Linux kernel, based on the Ubuntu 19 | kernel. This kernel includes drivers for ZFS_. 20 | 21 | The following sections will concentrate on backup related topics. They 22 | will explain things which are different on Proxmox Backup, or 23 | tasks which are commonly used on Proxmox Backup. For other topics, 24 | please refer to the standard Debian documentation. 25 | 26 | 27 | .. include:: local-zfs.rst 28 | 29 | .. include:: system-booting.rst 30 | 31 | .. include:: certificate-management.rst 32 | 33 | .. include:: services.rst 34 | 35 | .. include:: command-line-tools.rst 36 | -------------------------------------------------------------------------------- /docs/todos.rst: -------------------------------------------------------------------------------- 1 | Documentation Todo List 2 | ======================= 3 | 4 | This is an auto-generated list of the todo references in the documentation. 5 | 6 | .. todolist:: 7 | -------------------------------------------------------------------------------- /etc/Makefile: -------------------------------------------------------------------------------- 1 | include ../defines.mk 2 | 3 | UNITS := \ 4 | proxmox-backup-daily-update.timer \ 5 | 6 | DYNAMIC_UNITS := \ 7 | proxmox-backup-banner.service \ 8 | proxmox-backup-daily-update.service \ 9 | proxmox-backup.service \ 10 | proxmox-backup-proxy.service 11 | 12 | all: $(UNITS) $(DYNAMIC_UNITS) pbs-enterprise.list 13 | 14 | clean: 15 | rm -f $(DYNAMIC_UNITS) 16 | 17 | .SUFFIXES: .service.in .service 18 | .service.in.service: 19 | sed \ 20 | -e 's!%LIBEXECDIR%!$(LIBEXECDIR)!g' \ 21 | -e 's!%PROXY_USER%!$(PROXY_USER)!g' \ 22 | $< >$@.tmp 23 | mv $@.tmp $@ 24 | -------------------------------------------------------------------------------- /etc/pbs-enterprise.list: -------------------------------------------------------------------------------- 1 | deb https://enterprise.proxmox.com/debian/pbs bookworm pbs-enterprise 2 | -------------------------------------------------------------------------------- /etc/proxmox-backup-banner.service.in: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Proxmox Backup Server Login Banner 3 | ConditionPathExists=%LIBEXECDIR%/proxmox-backup/proxmox-backup-banner 4 | ConditionPathExists=!/usr/bin/pvebanner 5 | DefaultDependencies=no 6 | After=local-fs.target 7 | Before=console-getty.service 8 | 9 | [Service] 10 | ExecStart=%LIBEXECDIR%/proxmox-backup/proxmox-backup-banner 11 | Type=oneshot 12 | RemainAfterExit=yes 13 | 14 | [Install] 15 | WantedBy=getty.target 16 | -------------------------------------------------------------------------------- /etc/proxmox-backup-daily-update.service.in: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Daily Proxmox Backup Server update and maintenance activities 3 | After=network-online.target 4 | Wants=network-online.target 5 | 6 | [Service] 7 | Type=oneshot 8 | ExecStart=%LIBEXECDIR%/proxmox-backup/proxmox-daily-update 9 | -------------------------------------------------------------------------------- /etc/proxmox-backup-daily-update.timer: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Daily Proxmox Backup Server update and maintenance activities 3 | 4 | [Timer] 5 | OnCalendar=*-*-* 1:00 6 | RandomizedDelaySec=5h 7 | Persistent=true 8 | 9 | [Install] 10 | WantedBy=timers.target 11 | -------------------------------------------------------------------------------- /etc/proxmox-backup-proxy.service.in: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Proxmox Backup API Proxy Server 3 | Wants=network-online.target 4 | After=network.target 5 | Wants=proxmox-backup.service 6 | After=proxmox-backup.service 7 | 8 | [Service] 9 | Type=notify 10 | ExecStart=%LIBEXECDIR%/proxmox-backup/proxmox-backup-proxy 11 | ExecReload=/bin/kill -HUP $MAINPID 12 | PIDFile=/run/proxmox-backup/proxy.pid 13 | Restart=on-failure 14 | User=%PROXY_USER% 15 | Group=%PROXY_USER% 16 | 17 | [Install] 18 | WantedBy=multi-user.target 19 | -------------------------------------------------------------------------------- /etc/proxmox-backup.service.in: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Proxmox Backup API Server 3 | Wants=network-online.target 4 | After=network.target 5 | 6 | [Service] 7 | Type=notify 8 | ExecStart=%LIBEXECDIR%/proxmox-backup/proxmox-backup-api 9 | ExecReload=/bin/kill -HUP $MAINPID 10 | PIDFile=/run/proxmox-backup/api.pid 11 | Restart=on-failure 12 | 13 | [Install] 14 | WantedBy=multi-user.target 15 | -------------------------------------------------------------------------------- /examples/test_chunk_speed.rs: -------------------------------------------------------------------------------- 1 | extern crate proxmox_backup; 2 | 3 | use pbs_datastore::Chunker; 4 | 5 | fn main() { 6 | let mut buffer = Vec::new(); 7 | 8 | for i in 0..20 * 1024 * 1024 { 9 | for j in 0..4 { 10 | let byte = ((i >> (j << 3)) & 0xff) as u8; 11 | //println!("BYTE {}", byte); 12 | buffer.push(byte); 13 | } 14 | } 15 | let mut chunker = Chunker::new(64 * 1024); 16 | 17 | let count = 5; 18 | 19 | let start = std::time::SystemTime::now(); 20 | 21 | let mut chunk_count = 0; 22 | 23 | for _i in 0..count { 24 | let mut pos = 0; 25 | let mut _last = 0; 26 | while pos < buffer.len() { 27 | let k = chunker.scan(&buffer[pos..]); 28 | if k == 0 { 29 | //println!("LAST {}", pos); 30 | break; 31 | } else { 32 | _last = pos; 33 | pos += k; 34 | chunk_count += 1; 35 | //println!("CHUNK {} {}", pos, pos-last); 36 | } 37 | } 38 | } 39 | 40 | let elapsed = start.elapsed().unwrap(); 41 | let elapsed = (elapsed.as_secs() as f64) + (elapsed.subsec_millis() as f64) / 1000.0; 42 | 43 | let mbytecount = ((count * buffer.len()) as f64) / (1024.0 * 1024.0); 44 | let avg_chunk_size = mbytecount / (chunk_count as f64); 45 | let mbytes_per_sec = mbytecount / elapsed; 46 | println!( 47 | "SPEED = {} MB/s, avg chunk size = {} KB", 48 | mbytes_per_sec, 49 | avg_chunk_size * 1024.0 50 | ); 51 | } 52 | -------------------------------------------------------------------------------- /examples/upload-speed.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Error; 2 | 3 | use pbs_api_types::{Authid, BackupNamespace, BackupType}; 4 | use pbs_client::{BackupWriter, HttpClient, HttpClientOptions}; 5 | 6 | async fn upload_speed() -> Result { 7 | let host = "localhost"; 8 | let datastore = "store2"; 9 | 10 | let auth_id = Authid::root_auth_id(); 11 | 12 | let options = HttpClientOptions::default() 13 | .interactive(true) 14 | .ticket_cache(true); 15 | 16 | let client = HttpClient::new(host, 8007, auth_id, options)?; 17 | 18 | let backup_time = proxmox_time::epoch_i64(); 19 | 20 | let client = BackupWriter::start( 21 | &client, 22 | None, 23 | datastore, 24 | &BackupNamespace::root(), 25 | &(BackupType::Host, "speedtest".to_string(), backup_time).into(), 26 | false, 27 | true, 28 | ) 29 | .await?; 30 | 31 | println!("start upload speed test"); 32 | let res = client.upload_speedtest().await?; 33 | 34 | Ok(res) 35 | } 36 | 37 | fn main() { 38 | match proxmox_async::runtime::main(upload_speed()) { 39 | Ok(mbs) => { 40 | println!("average upload speed: {} MB/s", mbs); 41 | } 42 | Err(err) => { 43 | eprintln!("ERROR: {}", err); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /pbs-api-types/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "pbs-api-types" 3 | version = "0.1.0" 4 | authors.workspace = true 5 | edition.workspace = true 6 | description = "general API type helpers for PBS" 7 | 8 | [dependencies] 9 | anyhow.workspace = true 10 | const_format.workspace = true 11 | hex.workspace = true 12 | lazy_static.workspace = true 13 | percent-encoding.workspace = true 14 | regex.workspace = true 15 | serde.workspace = true 16 | serde_plain.workspace = true 17 | 18 | proxmox-auth-api = { workspace = true, features = [ "api-types" ] } 19 | proxmox-human-byte.workspace = true 20 | proxmox-lang.workspace=true 21 | proxmox-schema = { workspace = true, features = [ "api-macro" ] } 22 | proxmox-serde.workspace = true 23 | proxmox-time.workspace = true 24 | proxmox-uuid = { workspace = true, features = [ "serde" ] } 25 | -------------------------------------------------------------------------------- /pbs-api-types/src/file_restore.rs: -------------------------------------------------------------------------------- 1 | use serde::{Deserialize, Serialize}; 2 | 3 | use proxmox_schema::api; 4 | 5 | #[api] 6 | #[derive(Serialize, Deserialize)] 7 | #[serde(rename_all = "kebab-case")] 8 | /// General status information about a running VM file-restore daemon 9 | pub struct RestoreDaemonStatus { 10 | /// VM uptime in seconds 11 | pub uptime: i64, 12 | /// time left until auto-shutdown, keep in mind that this is useless when 'keep-timeout' is 13 | /// not set, as then the status call will have reset the timer before returning the value 14 | pub timeout: i64, 15 | } 16 | 17 | #[api] 18 | #[derive(Serialize, Deserialize, PartialEq, Eq)] 19 | #[serde(rename_all = "kebab-case")] 20 | /// The desired format of the result. 21 | pub enum FileRestoreFormat { 22 | /// Plain file (only works for single files) 23 | Plain, 24 | /// PXAR archive 25 | Pxar, 26 | /// ZIP archive 27 | Zip, 28 | /// TAR archive 29 | Tar, 30 | } 31 | -------------------------------------------------------------------------------- /pbs-api-types/src/key_derivation.rs: -------------------------------------------------------------------------------- 1 | use serde::{Deserialize, Serialize}; 2 | 3 | use proxmox_schema::api; 4 | 5 | use crate::CERT_FINGERPRINT_SHA256_SCHEMA; 6 | 7 | #[api(default: "scrypt")] 8 | #[derive(Clone, Copy, Debug, Deserialize, Serialize)] 9 | #[serde(rename_all = "lowercase")] 10 | /// Key derivation function for password protected encryption keys. 11 | pub enum Kdf { 12 | /// Do not encrypt the key. 13 | None, 14 | /// Encrypt they key with a password using SCrypt. 15 | Scrypt, 16 | /// Encrtypt the Key with a password using PBKDF2 17 | PBKDF2, 18 | } 19 | 20 | impl Default for Kdf { 21 | #[inline] 22 | fn default() -> Self { 23 | Kdf::Scrypt 24 | } 25 | } 26 | 27 | #[api( 28 | properties: { 29 | kdf: { 30 | type: Kdf, 31 | }, 32 | fingerprint: { 33 | schema: CERT_FINGERPRINT_SHA256_SCHEMA, 34 | optional: true, 35 | }, 36 | }, 37 | )] 38 | #[derive(Deserialize, Serialize)] 39 | /// Encryption Key Information 40 | pub struct KeyInfo { 41 | /// Path to key (if stored in a file) 42 | #[serde(skip_serializing_if = "Option::is_none")] 43 | pub path: Option, 44 | pub kdf: Kdf, 45 | /// Key creation time 46 | pub created: i64, 47 | /// Key modification time 48 | pub modified: i64, 49 | /// Key fingerprint 50 | #[serde(skip_serializing_if = "Option::is_none")] 51 | pub fingerprint: Option, 52 | /// Password hint 53 | #[serde(skip_serializing_if = "Option::is_none")] 54 | pub hint: Option, 55 | } 56 | -------------------------------------------------------------------------------- /pbs-api-types/src/percent_encoding.rs: -------------------------------------------------------------------------------- 1 | use percent_encoding::{utf8_percent_encode, AsciiSet}; 2 | 3 | /// This used to be: `SIMPLE_ENCODE_SET` plus space, `"`, `#`, `<`, `>`, backtick, `?`, `{`, `}` 4 | pub const DEFAULT_ENCODE_SET: &AsciiSet = &percent_encoding::CONTROLS // 0..1f and 7e 5 | // The SIMPLE_ENCODE_SET adds space and anything >= 0x7e (7e itself is already included above) 6 | .add(0x20) 7 | .add(0x7f) 8 | // the DEFAULT_ENCODE_SET added: 9 | .add(b' ') 10 | .add(b'"') 11 | .add(b'#') 12 | .add(b'<') 13 | .add(b'>') 14 | .add(b'`') 15 | .add(b'?') 16 | .add(b'{') 17 | .add(b'}'); 18 | 19 | /// percent encode a url component 20 | pub fn percent_encode_component(comp: &str) -> String { 21 | utf8_percent_encode(comp, percent_encoding::NON_ALPHANUMERIC).to_string() 22 | } 23 | -------------------------------------------------------------------------------- /pbs-api-types/src/tape/device.rs: -------------------------------------------------------------------------------- 1 | use ::serde::{Deserialize, Serialize}; 2 | 3 | use proxmox_schema::api; 4 | 5 | #[api()] 6 | #[derive(Serialize, Deserialize)] 7 | #[serde(rename_all = "kebab-case")] 8 | /// Optional Device Identification Attributes 9 | pub struct OptionalDeviceIdentification { 10 | /// Vendor (autodetected) 11 | #[serde(skip_serializing_if = "Option::is_none")] 12 | pub vendor: Option, 13 | /// Model (autodetected) 14 | #[serde(skip_serializing_if = "Option::is_none")] 15 | pub model: Option, 16 | /// Serial number (autodetected) 17 | #[serde(skip_serializing_if = "Option::is_none")] 18 | pub serial: Option, 19 | } 20 | 21 | #[api()] 22 | #[derive(Debug, Serialize, Deserialize)] 23 | #[serde(rename_all = "kebab-case")] 24 | /// Kind of device 25 | pub enum DeviceKind { 26 | /// Tape changer (Autoloader, Robot) 27 | Changer, 28 | /// Normal SCSI tape device 29 | Tape, 30 | } 31 | 32 | #[api( 33 | properties: { 34 | kind: { 35 | type: DeviceKind, 36 | }, 37 | }, 38 | )] 39 | #[derive(Debug, Serialize, Deserialize)] 40 | /// Tape device information 41 | pub struct TapeDeviceInfo { 42 | pub kind: DeviceKind, 43 | /// Path to the linux device node 44 | pub path: String, 45 | /// Serial number (autodetected) 46 | pub serial: String, 47 | /// Vendor (autodetected) 48 | pub vendor: String, 49 | /// Model (autodetected) 50 | pub model: String, 51 | /// Device major number 52 | pub major: u32, 53 | /// Device minor number 54 | pub minor: u32, 55 | } 56 | -------------------------------------------------------------------------------- /pbs-api-types/src/tape/media_status.rs: -------------------------------------------------------------------------------- 1 | use serde::{Deserialize, Serialize}; 2 | 3 | use proxmox_schema::api; 4 | 5 | #[api()] 6 | /// Media status 7 | #[derive(Debug, PartialEq, Eq, Copy, Clone, Serialize, Deserialize)] 8 | #[serde(rename_all = "lowercase")] 9 | /// Media Status 10 | pub enum MediaStatus { 11 | /// Media is ready to be written 12 | Writable, 13 | /// Media is full (contains data) 14 | Full, 15 | /// Media is marked as unknown, needs rescan 16 | Unknown, 17 | /// Media is marked as damaged 18 | Damaged, 19 | /// Media is marked as retired 20 | Retired, 21 | } 22 | -------------------------------------------------------------------------------- /pbs-buildcfg/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "pbs-buildcfg" 3 | version.workspace = true 4 | authors.workspace = true 5 | edition.workspace = true 6 | description = "macros used for pbs related paths such as configdir and rundir" 7 | build = "build.rs" 8 | 9 | [dependencies] 10 | -------------------------------------------------------------------------------- /pbs-buildcfg/build.rs: -------------------------------------------------------------------------------- 1 | // build.rs 2 | use std::env; 3 | use std::process::Command; 4 | 5 | fn main() { 6 | let repoid = match env::var("REPOID") { 7 | Ok(repoid) => repoid, 8 | Err(_) => match Command::new("git").args(["rev-parse", "HEAD"]).output() { 9 | Ok(output) => String::from_utf8(output.stdout).unwrap(), 10 | Err(err) => { 11 | panic!("git rev-parse failed: {}", err); 12 | } 13 | }, 14 | }; 15 | 16 | println!("cargo:rustc-env=REPOID={}", repoid); 17 | } 18 | -------------------------------------------------------------------------------- /pbs-client/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "pbs-client" 3 | version = "0.1.0" 4 | authors.workspace = true 5 | edition.workspace = true 6 | description = "The main proxmox backup client crate" 7 | 8 | [dependencies] 9 | anyhow.workspace = true 10 | bitflags.workspace = true 11 | bytes.workspace = true 12 | futures.workspace = true 13 | h2.workspace = true 14 | hex.workspace = true 15 | http.workspace = true 16 | hyper.workspace = true 17 | lazy_static.workspace = true 18 | libc.workspace = true 19 | log.workspace = true 20 | nix.workspace = true 21 | openssl.workspace = true 22 | percent-encoding.workspace = true 23 | pin-project-lite.workspace = true 24 | regex.workspace = true 25 | rustyline.workspace = true 26 | serde.workspace = true 27 | serde_json.workspace = true 28 | tar.workspace = true 29 | tokio = { workspace = true, features = [ "fs", "signal" ] } 30 | tokio-stream.workspace = true 31 | tower-service.workspace = true 32 | xdg.workspace = true 33 | 34 | pathpatterns.workspace = true 35 | 36 | proxmox-async.workspace = true 37 | proxmox-auth-api.workspace = true 38 | proxmox-compression.workspace = true 39 | proxmox-http = { workspace = true, features = [ "rate-limiter" ] } 40 | proxmox-human-byte.workspace = true 41 | proxmox-io = { workspace = true, features = [ "tokio" ] } 42 | proxmox-lang.workspace = true 43 | proxmox-router = { workspace = true, features = [ "cli", "server" ] } 44 | proxmox-schema.workspace = true 45 | proxmox-sys.workspace = true 46 | proxmox-time.workspace = true 47 | 48 | pxar.workspace = true 49 | 50 | pbs-api-types.workspace = true 51 | pbs-buildcfg.workspace = true 52 | pbs-datastore.workspace = true 53 | pbs-tools.workspace = true 54 | -------------------------------------------------------------------------------- /pbs-client/src/backup_specification.rs: -------------------------------------------------------------------------------- 1 | use anyhow::{bail, Error}; 2 | 3 | use proxmox_schema::*; 4 | 5 | const_regex! { 6 | BACKUPSPEC_REGEX = r"^([a-zA-Z0-9_-]+\.(pxar|img|conf|log)):(.+)$"; 7 | } 8 | 9 | pub const BACKUP_SOURCE_SCHEMA: Schema = 10 | StringSchema::new("Backup source specification ([