Compare commits
66 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0936e669f9 | ||
|
|
e16ce82985 | ||
|
|
dbc9d2c223 | ||
|
|
3d9e0b6627 | ||
|
|
6751d3787e | ||
|
|
80e9b5076c | ||
|
|
9b099edbcd | ||
|
|
fc126d7fc1 | ||
|
|
01d885f987 | ||
|
|
326f5e09dd | ||
|
|
9796c20e25 | ||
|
|
6439200564 | ||
|
|
53b80f64b9 | ||
|
|
16afcb7f14 | ||
|
|
7072e8120c | ||
|
|
7f7a367445 | ||
|
|
687c8fb9b1 | ||
|
|
e88c5584bf | ||
|
|
6cbf3e4958 | ||
|
|
0fbc7a85e1 | ||
|
|
d75cf3d629 | ||
|
|
de086eda25 | ||
|
|
dfce0d384e | ||
|
|
2287e64ae6 | ||
|
|
e16f063b41 | ||
|
|
95c1673f6c | ||
|
|
a3344b8c65 | ||
|
|
c3fcfbbda8 | ||
|
|
b63da904ff | ||
|
|
386f447a42 | ||
|
|
462b01c3ac | ||
|
|
d56b17479d | ||
|
|
e2d129f9de | ||
|
|
dc051f2e30 | ||
|
|
ccf5519a03 | ||
|
|
892d781dbc | ||
|
|
fa506db92d | ||
|
|
d8320229f1 | ||
|
|
ff14832915 | ||
|
|
bf0290a766 | ||
|
|
6cff4c6bf6 | ||
|
|
7a7d973f6d | ||
|
|
6a031a4ec8 | ||
|
|
24734478e1 | ||
|
|
6cc67d99a6 | ||
|
|
b7a43abb50 | ||
|
|
520566200a | ||
|
|
0590aee637 | ||
|
|
1ebab6a43f | ||
|
|
7b7ceb0c68 | ||
|
|
6a9a5db597 | ||
|
|
ef8b0c2528 | ||
|
|
6c47db412f | ||
|
|
af63d6f9b5 | ||
|
|
682bb42edd | ||
|
|
5f7852f5a1 | ||
|
|
2997cff520 | ||
|
|
690d061d76 | ||
|
|
7feefff6c5 | ||
|
|
ab1f559f1e | ||
|
|
e2cdac6e70 | ||
|
|
6733f1283b | ||
|
|
9eaded8572 | ||
|
|
891f6a6fe4 | ||
|
|
93088816c7 | ||
|
|
f4c54e9917 |
@ -3,6 +3,3 @@
|
||||
directory = "/usr/share/cargo/registry"
|
||||
[source.crates-io]
|
||||
replace-with = "debian-packages"
|
||||
|
||||
[profile.release]
|
||||
debug=true
|
||||
30
.gitignore
vendored
@ -1,32 +1,16 @@
|
||||
local.mak
|
||||
/target
|
||||
**/*.rs.bk
|
||||
*.5
|
||||
*.7
|
||||
*~
|
||||
*.backup
|
||||
*.backup[0-9]
|
||||
*.backup[0-9][0-9]
|
||||
*.old
|
||||
*.old[0-9]
|
||||
*.old[0-9][0-9]
|
||||
*~
|
||||
/*.build
|
||||
/*.buildinfo
|
||||
/*.changes
|
||||
/*.deb
|
||||
/*.dsc
|
||||
/*.tar*
|
||||
/.do-cargo-build
|
||||
/Cargo.lock
|
||||
/docs/*/synopsis.rst
|
||||
/docs/config/*/config.rst
|
||||
/docs/config/acl/roles.rst
|
||||
/docs/output
|
||||
/docs/proxmox-backup-client/catalog-shell-synopsis.rst
|
||||
# all services are generated from a .in file to set the libexec path
|
||||
/etc/*.service
|
||||
/proxmox-backup-server-dpkg-contents.txt
|
||||
/www/.lint-incremental
|
||||
/www/js/
|
||||
*.5
|
||||
*.7
|
||||
__pycache__/
|
||||
/etc/proxmox-backup.service
|
||||
/etc/proxmox-backup-proxy.service
|
||||
build/
|
||||
local.mak
|
||||
target/
|
||||
|
||||
171
Cargo.toml
@ -1,5 +1,5 @@
|
||||
[workspace.package]
|
||||
version = "4.0.6"
|
||||
version = "2.4.7"
|
||||
authors = [
|
||||
"Dietmar Maurer <dietmar@proxmox.com>",
|
||||
"Dominik Csapak <d.csapak@proxmox.com>",
|
||||
@ -13,7 +13,6 @@ authors = [
|
||||
edition = "2021"
|
||||
license = "AGPL-3"
|
||||
repository = "https://git.proxmox.com/?p=proxmox-backup.git"
|
||||
rust-version = "1.81"
|
||||
|
||||
[package]
|
||||
name = "proxmox-backup"
|
||||
@ -29,6 +28,7 @@ exclude = [ "build", "debian", "tests/catar_data/test_symlink/symlink1"]
|
||||
|
||||
[workspace]
|
||||
members = [
|
||||
"pbs-api-types",
|
||||
"pbs-buildcfg",
|
||||
"pbs-client",
|
||||
"pbs-config",
|
||||
@ -43,6 +43,7 @@ members = [
|
||||
"proxmox-backup-client",
|
||||
"proxmox-file-restore",
|
||||
"proxmox-restore-daemon",
|
||||
"proxmox-rrd",
|
||||
|
||||
"pxar-bin",
|
||||
]
|
||||
@ -53,53 +54,40 @@ path = "src/lib.rs"
|
||||
|
||||
[workspace.dependencies]
|
||||
# proxmox workspace
|
||||
proxmox-apt = { version = "0.99", features = [ "cache" ] }
|
||||
proxmox-apt-api-types = "2"
|
||||
proxmox-async = "0.5"
|
||||
proxmox-auth-api = "1.0.2"
|
||||
proxmox-base64 = "1"
|
||||
proxmox-async = "0.4"
|
||||
proxmox-auth-api = "0.1"
|
||||
proxmox-borrow = "1"
|
||||
proxmox-compression = "1"
|
||||
proxmox-config-digest = "1"
|
||||
proxmox-daemon = "1"
|
||||
proxmox-fuse = "1"
|
||||
proxmox-http = { version = "1", features = [ "client", "http-helpers", "websocket" ] } # see below
|
||||
proxmox-human-byte = "1"
|
||||
proxmox-compression = "0.1.1"
|
||||
proxmox-fuse = "0.1.3"
|
||||
proxmox-http = { version = "0.8.0", features = [ "client", "http-helpers", "websocket" ] } # see below
|
||||
proxmox-io = "1.0.1" # tools and client use "tokio" feature
|
||||
proxmox-lang = "1.1"
|
||||
proxmox-log = "1"
|
||||
proxmox-ldap = "1"
|
||||
proxmox-metrics = "1"
|
||||
proxmox-notify = "1"
|
||||
proxmox-openid = "1"
|
||||
proxmox-rest-server = { version = "1.0.1", features = [ "templates" ] }
|
||||
proxmox-ldap = "0.1"
|
||||
proxmox-metrics = "0.2"
|
||||
proxmox-rest-server = { version = "0.3.0", features = [ "templates" ] }
|
||||
# some use "cli", some use "cli" and "server", pbs-config uses nothing
|
||||
proxmox-router = { version = "3.2.2", default-features = false }
|
||||
proxmox-rrd = "1"
|
||||
proxmox-rrd-api-types = "1.0.2"
|
||||
proxmox-s3-client = { version = "1.0.5", features = [ "impl" ] }
|
||||
# everything but pbs-config and pbs-client use "api-macro"
|
||||
proxmox-schema = "4"
|
||||
proxmox-section-config = "3"
|
||||
proxmox-serde = "1"
|
||||
proxmox-shared-cache = "1"
|
||||
proxmox-shared-memory = "1"
|
||||
proxmox-sortable-macro = "1"
|
||||
proxmox-subscription = { version = "1", features = [ "api-types" ] }
|
||||
proxmox-sys = "1"
|
||||
proxmox-systemd = "1"
|
||||
proxmox-tfa = { version = "6", features = [ "api", "api-types" ] }
|
||||
proxmox-time = "2"
|
||||
proxmox-uuid = { version = "1", features = [ "serde" ] }
|
||||
proxmox-worker-task = "1"
|
||||
pbs-api-types = "1.0.2"
|
||||
proxmox-router = { version = "1.3.1", default_features = false }
|
||||
# everything but pbs-config and pbs-client ues "api-macro"
|
||||
proxmox-schema = "1.3.6"
|
||||
proxmox-section-config = "1"
|
||||
proxmox-serde = "0.1.1"
|
||||
proxmox-shared-memory = "0.2.3"
|
||||
proxmox-sortable-macro = "0.1.2"
|
||||
proxmox-subscription = { version = "0.3", features = [ "api-types" ] }
|
||||
proxmox-sys = "0.4.2"
|
||||
proxmox-tfa = { version = "4", features = [ "api", "api-types" ] }
|
||||
proxmox-time = "1.1.2"
|
||||
proxmox-uuid = "1"
|
||||
|
||||
# other proxmox crates
|
||||
pathpatterns = "1"
|
||||
proxmox-acme = "1"
|
||||
pxar = "1"
|
||||
pathpatterns = "0.1.2"
|
||||
proxmox-acme-rs = "0.4"
|
||||
proxmox-apt = "0.9.4"
|
||||
proxmox-openid = "0.9.9"
|
||||
pxar = "0.10.3"
|
||||
|
||||
# PBS workspace
|
||||
pbs-api-types = { path = "pbs-api-types" }
|
||||
pbs-buildcfg = { path = "pbs-buildcfg" }
|
||||
pbs-client = { path = "pbs-client" }
|
||||
pbs-config = { path = "pbs-config" }
|
||||
@ -109,75 +97,79 @@ pbs-key-config = { path = "pbs-key-config" }
|
||||
pbs-pxar-fuse = { path = "pbs-pxar-fuse" }
|
||||
pbs-tape = { path = "pbs-tape" }
|
||||
pbs-tools = { path = "pbs-tools" }
|
||||
proxmox-rrd = { path = "proxmox-rrd" }
|
||||
|
||||
# regular crates
|
||||
anyhow = "1.0"
|
||||
async-trait = "0.1.56"
|
||||
apt-pkg-native = "0.3.2"
|
||||
bitflags = "2.4"
|
||||
base64 = "0.13"
|
||||
bitflags = "1.2.1"
|
||||
bytes = "1.0"
|
||||
cidr = "0.3"
|
||||
cidr = "0.2.1"
|
||||
crc32fast = "1"
|
||||
const_format = "0.2"
|
||||
crossbeam-channel = "0.5"
|
||||
endian_trait = { version = "0.6", features = ["arrays"] }
|
||||
env_logger = "0.11"
|
||||
env_logger = "0.9"
|
||||
flate2 = "1.0"
|
||||
foreign-types = "0.3"
|
||||
futures = "0.3"
|
||||
h2 = { version = "0.4", features = [ "stream" ] }
|
||||
h2 = { version = "0.3", features = [ "stream" ] }
|
||||
handlebars = "3.0"
|
||||
hex = "0.4.3"
|
||||
hickory-resolver = { version = "0.24.1", default-features = false, features = [ "system-config", "tokio-runtime" ] }
|
||||
http-body-util = "0.1"
|
||||
hyper-util = "0.1"
|
||||
hyper = { version = "1", features = [ "full" ] }
|
||||
http = "0.2"
|
||||
hyper = { version = "0.14", features = [ "full" ] }
|
||||
lazy_static = "1.4"
|
||||
libc = "0.2"
|
||||
log = "0.4.17"
|
||||
nix = "0.29"
|
||||
nix = "0.26.1"
|
||||
nom = "7"
|
||||
num-traits = "0.2"
|
||||
once_cell = "1.3.1"
|
||||
openssl = "0.10.40"
|
||||
pam = "0.7"
|
||||
pam-sys = "0.5"
|
||||
percent-encoding = "2.1"
|
||||
pin-project-lite = "0.2"
|
||||
regex = "1.5.5"
|
||||
rustyline = "14"
|
||||
rustyline = "9"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_cbor = "0.11.1"
|
||||
serde_json = "1.0"
|
||||
serde_plain = "1"
|
||||
siphasher = "0.3"
|
||||
syslog = "6"
|
||||
tar = "0.4"
|
||||
termcolor = "1.1.2"
|
||||
thiserror = "2"
|
||||
thiserror = "1.0"
|
||||
tokio = "1.6"
|
||||
tokio-openssl = "0.6.1"
|
||||
tokio-stream = "0.1.0"
|
||||
tokio-util = { version = "0.7", features = [ "io" ] }
|
||||
tracing = "0.1"
|
||||
tower-service = "0.3.0"
|
||||
udev = "0.9"
|
||||
udev = "0.4"
|
||||
url = "2.1"
|
||||
walkdir = "2"
|
||||
xdg = "2.2"
|
||||
zstd = "0.13"
|
||||
zstd-safe = "7"
|
||||
zstd = { version = "0.6", features = [ "bindgen" ] }
|
||||
|
||||
[dependencies]
|
||||
anyhow.workspace = true
|
||||
async-trait.workspace = true
|
||||
apt-pkg-native.workspace = true
|
||||
base64.workspace = true
|
||||
bitflags.workspace = true
|
||||
bytes.workspace = true
|
||||
cidr.workspace = true
|
||||
const_format.workspace = true
|
||||
crc32fast.workspace = true
|
||||
crossbeam-channel.workspace = true
|
||||
endian_trait.workspace = true
|
||||
flate2.workspace = true
|
||||
futures.workspace = true
|
||||
h2.workspace = true
|
||||
handlebars.workspace = true
|
||||
hex.workspace = true
|
||||
http-body-util.workspace = true
|
||||
http.workspace = true
|
||||
hyper.workspace = true
|
||||
hyper-util = { workspace = true, features = ["server", "server-auto", "server-graceful"] }
|
||||
lazy_static.workspace = true
|
||||
libc.workspace = true
|
||||
log.workspace = true
|
||||
nix.workspace = true
|
||||
@ -185,11 +177,14 @@ nom.workspace = true
|
||||
num-traits.workspace = true
|
||||
once_cell.workspace = true
|
||||
openssl.workspace = true
|
||||
pam-sys.workspace = true
|
||||
pam.workspace = true
|
||||
percent-encoding.workspace = true
|
||||
regex.workspace = true
|
||||
rustyline.workspace = true
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
siphasher.workspace = true
|
||||
syslog.workspace = true
|
||||
termcolor.workspace = true
|
||||
thiserror.workspace = true
|
||||
@ -197,55 +192,43 @@ tokio = { workspace = true, features = [ "fs", "io-util", "io-std", "macros", "n
|
||||
tokio-openssl.workspace = true
|
||||
tokio-stream.workspace = true
|
||||
tokio-util = { workspace = true, features = [ "codec" ] }
|
||||
tracing.workspace = true
|
||||
tower-service.workspace = true
|
||||
udev.workspace = true
|
||||
url.workspace = true
|
||||
walkdir.workspace = true
|
||||
xdg.workspace = true
|
||||
zstd.workspace = true
|
||||
|
||||
#valgrind_request = { git = "https://github.com/edef1c/libvalgrind_request", version = "1.1.0", optional = true }
|
||||
|
||||
# proxmox workspace
|
||||
proxmox-apt.workspace = true
|
||||
proxmox-apt-api-types.workspace = true
|
||||
proxmox-async.workspace = true
|
||||
proxmox-auth-api = { workspace = true, features = [ "api", "pam-authenticator" ] }
|
||||
proxmox-base64.workspace = true
|
||||
proxmox-compression.workspace = true
|
||||
proxmox-config-digest.workspace = true
|
||||
proxmox-daemon.workspace = true
|
||||
proxmox-http = { workspace = true, features = [ "body", "client-trait", "proxmox-async", "rate-limited-stream" ] } # pbs-client doesn't use these
|
||||
proxmox-human-byte.workspace = true
|
||||
proxmox-http = { workspace = true, features = [ "client-trait", "proxmox-async", "rate-limited-stream" ] } # pbs-client doesn't use these
|
||||
proxmox-io.workspace = true
|
||||
proxmox-lang.workspace = true
|
||||
proxmox-log.workspace = true
|
||||
proxmox-ldap.workspace = true
|
||||
proxmox-metrics.workspace = true
|
||||
proxmox-notify = { workspace = true, features = [ "pbs-context" ] }
|
||||
proxmox-openid.workspace = true
|
||||
proxmox-rest-server = { workspace = true, features = [ "rate-limited-stream" ] }
|
||||
proxmox-router = { workspace = true, features = [ "cli", "server"] }
|
||||
proxmox-s3-client.workspace = true
|
||||
proxmox-schema = { workspace = true, features = [ "api-macro" ] }
|
||||
proxmox-section-config.workspace = true
|
||||
proxmox-serde = { workspace = true, features = [ "serde_json" ] }
|
||||
proxmox-shared-cache.workspace = true
|
||||
proxmox-shared-memory.workspace = true
|
||||
proxmox-sortable-macro.workspace = true
|
||||
proxmox-subscription.workspace = true
|
||||
proxmox-sys = { workspace = true, features = [ "timer" ] }
|
||||
proxmox-systemd.workspace = true
|
||||
proxmox-tfa.workspace = true
|
||||
proxmox-time.workspace = true
|
||||
proxmox-uuid.workspace = true
|
||||
proxmox-worker-task.workspace = true
|
||||
pbs-api-types.workspace = true
|
||||
|
||||
# in their respective repo
|
||||
proxmox-acme.workspace = true
|
||||
pathpatterns.workspace = true
|
||||
proxmox-acme-rs.workspace = true
|
||||
proxmox-apt.workspace = true
|
||||
proxmox-openid.workspace = true
|
||||
pxar.workspace = true
|
||||
|
||||
# proxmox-backup workspace/internal crates
|
||||
pbs-api-types.workspace = true
|
||||
pbs-buildcfg.workspace = true
|
||||
pbs-client.workspace = true
|
||||
pbs-config.workspace = true
|
||||
@ -254,50 +237,34 @@ pbs-key-config.workspace = true
|
||||
pbs-tape.workspace = true
|
||||
pbs-tools.workspace = true
|
||||
proxmox-rrd.workspace = true
|
||||
proxmox-rrd-api-types.workspace = true
|
||||
|
||||
# Local path overrides
|
||||
# NOTE: You must run `cargo update` after changing this for it to take effect!
|
||||
[patch.crates-io]
|
||||
#pbs-api-types = { path = "../proxmox/pbs-api-types" }
|
||||
#proxmox-acme = { path = "../proxmox/proxmox-acme" }
|
||||
#proxmox-apt = { path = "../proxmox/proxmox-apt" }
|
||||
#proxmox-apt-api-types = { path = "../proxmox/proxmox-apt-api-types" }
|
||||
#proxmox-acme-rs = { path = "../proxmox-acme-rs" }
|
||||
#proxmox-async = { path = "../proxmox/proxmox-async" }
|
||||
#proxmox-auth-api = { path = "../proxmox/proxmox-auth-api" }
|
||||
#proxmox-base64 = { path = "../proxmox/proxmox-base64" }
|
||||
#proxmox-borrow = { path = "../proxmox/proxmox-borrow" }
|
||||
#proxmox-compression = { path = "../proxmox/proxmox-compression" }
|
||||
#proxmox-config-digest = { path = "../proxmox/proxmox-config-digest" }
|
||||
#proxmox-daemon = { path = "../proxmox/proxmox-daemon" }
|
||||
#proxmox-fuse = { path = "../proxmox-fuse" }
|
||||
#proxmox-http = { path = "../proxmox/proxmox-http" }
|
||||
#proxmox-human-byte = { path = "../proxmox/proxmox-human-byte" }
|
||||
#proxmox-io = { path = "../proxmox/proxmox-io" }
|
||||
#proxmox-lang = { path = "../proxmox/proxmox-lang" }
|
||||
#proxmox-log = { path = "../proxmox/proxmox-log" }
|
||||
#proxmox-ldap = { path = "../proxmox/proxmox-ldap" }
|
||||
#proxmox-metrics = { path = "../proxmox/proxmox-metrics" }
|
||||
#proxmox-notify = { path = "../proxmox/proxmox-notify" }
|
||||
#proxmox-openid = { path = "../proxmox/proxmox-openid" }
|
||||
#proxmox-rest-server = { path = "../proxmox/proxmox-rest-server" }
|
||||
#proxmox-router = { path = "../proxmox/proxmox-router" }
|
||||
#proxmox-rrd = { path = "../proxmox/proxmox-rrd" }
|
||||
#proxmox-rrd-api-types = { path = "../proxmox/proxmox-rrd-api-types" }
|
||||
#proxmox-schema = { path = "../proxmox/proxmox-schema" }
|
||||
#proxmox-section-config = { path = "../proxmox/proxmox-section-config" }
|
||||
#proxmox-serde = { path = "../proxmox/proxmox-serde" }
|
||||
#proxmox-shared-memory = { path = "../proxmox/proxmox-shared-memory" }
|
||||
#proxmox-sortable-macro = { path = "../proxmox/proxmox-sortable-macro" }
|
||||
#proxmox-subscription = { path = "../proxmox/proxmox-subscription" }
|
||||
#proxmox-sys = { path = "../proxmox/proxmox-sys" }
|
||||
#proxmox-systemd = { path = "../proxmox/proxmox-systemd" }
|
||||
#proxmox-tfa = { path = "../proxmox/proxmox-tfa" }
|
||||
#proxmox-time = { path = "../proxmox/proxmox-time" }
|
||||
#proxmox-uuid = { path = "../proxmox/proxmox-uuid" }
|
||||
#proxmox-worker-task = { path = "../proxmox/proxmox-worker-task" }
|
||||
|
||||
#pathpatterns = {path = "../pathpatterns" }
|
||||
#proxmox-apt = { path = "../proxmox-apt" }
|
||||
#proxmox-openid = { path = "../proxmox-openid-rs" }
|
||||
|
||||
#pxar = { path = "../pxar" }
|
||||
|
||||
[features]
|
||||
|
||||
89
Makefile
@ -1,12 +1,10 @@
|
||||
include /usr/share/dpkg/default.mk
|
||||
include /usr/share/rustc/architecture.mk
|
||||
include defines.mk
|
||||
|
||||
PACKAGE := proxmox-backup
|
||||
ARCH := $(DEB_BUILD_ARCH)
|
||||
export DEB_HOST_RUST_TYPE
|
||||
|
||||
SUBDIRS := etc www docs templates
|
||||
SUBDIRS := etc www docs
|
||||
|
||||
# Binaries usable by users
|
||||
USR_BIN := \
|
||||
@ -20,7 +18,7 @@ USR_BIN := \
|
||||
# Binaries usable by admins
|
||||
USR_SBIN := \
|
||||
proxmox-backup-manager \
|
||||
proxmox-backup-debug
|
||||
proxmox-backup-debug \
|
||||
|
||||
# Binaries for services:
|
||||
SERVICE_BIN := \
|
||||
@ -35,27 +33,15 @@ RESTORE_BIN := \
|
||||
|
||||
SUBCRATES != cargo metadata --no-deps --format-version=1 \
|
||||
| jq -r .workspace_members'[]' \
|
||||
| grep "$$PWD/" \
|
||||
| sed -e "s!.*$$PWD/!!g" -e 's/\#.*$$//g' -e 's/)$$//g'
|
||||
| awk '!/^proxmox-backup[[:space:]]/ { printf "%s ", $$1 }'
|
||||
|
||||
# sync with debian/rules!
|
||||
STATIC_TARGET_DIR := target/static-build
|
||||
ifeq ($(BUILD_MODE), release)
|
||||
CARGO_BUILD_ARGS += --release --target $(DEB_HOST_RUST_TYPE)
|
||||
CARGO_STATIC_CONFIG ?= --config debian/cargo_home/config.static.toml
|
||||
CARGO_STATIC_BUILD_ARGS += $(CARGO_STATIC_CONFIG) --release --target $(DEB_HOST_RUST_TYPE) --target-dir $(STATIC_TARGET_DIR)
|
||||
COMPILEDIR := target/$(DEB_HOST_RUST_TYPE)/release
|
||||
STATIC_COMPILEDIR := $(STATIC_TARGET_DIR)/$(DEB_HOST_RUST_TYPE)/release
|
||||
CARGO_BUILD_ARGS += --release
|
||||
COMPILEDIR := target/release
|
||||
else
|
||||
CARGO_BUILD_ARGS += --target $(DEB_HOST_RUST_TYPE)
|
||||
CARGO_STATIC_BUILD_ARGS += --target $(DEB_HOST_RUST_TYPE) --target-dir $(STATIC_TARGET_DIR)
|
||||
COMPILEDIR := target/$(DEB_HOST_RUST_TYPE)/debug
|
||||
STATIC_COMPILEDIR := $(STATIC_TARGET_DIR)/$(DEB_HOST_RUST_TYPE)/debug
|
||||
COMPILEDIR := target/debug
|
||||
endif
|
||||
|
||||
STATIC_RUSTC_FLAGS := -C target-feature=+crt-static -L $(STATIC_COMPILEDIR)/deps-stubs/
|
||||
# end sync with debian/rules
|
||||
|
||||
ifeq ($(valgrind), yes)
|
||||
CARGO_BUILD_ARGS += --features valgrind
|
||||
endif
|
||||
@ -65,9 +51,6 @@ CARGO ?= cargo
|
||||
COMPILED_BINS := \
|
||||
$(addprefix $(COMPILEDIR)/,$(USR_BIN) $(USR_SBIN) $(SERVICE_BIN) $(RESTORE_BIN))
|
||||
|
||||
STATIC_BINS := \
|
||||
$(addprefix $(STATIC_COMPILEDIR)/,proxmox-backup-client-static pxar-static)
|
||||
|
||||
export DEB_VERSION DEB_VERSION_UPSTREAM
|
||||
|
||||
SERVER_DEB=$(PACKAGE)-server_$(DEB_VERSION)_$(ARCH).deb
|
||||
@ -76,12 +59,10 @@ CLIENT_DEB=$(PACKAGE)-client_$(DEB_VERSION)_$(ARCH).deb
|
||||
CLIENT_DBG_DEB=$(PACKAGE)-client-dbgsym_$(DEB_VERSION)_$(ARCH).deb
|
||||
RESTORE_DEB=proxmox-backup-file-restore_$(DEB_VERSION)_$(ARCH).deb
|
||||
RESTORE_DBG_DEB=proxmox-backup-file-restore-dbgsym_$(DEB_VERSION)_$(ARCH).deb
|
||||
STATIC_CLIENT_DEB=$(PACKAGE)-client-static_$(DEB_VERSION)_$(ARCH).deb
|
||||
STATIC_CLIENT_DBG_DEB=$(PACKAGE)-client-static-dbgsym_$(DEB_VERSION)_$(ARCH).deb
|
||||
DOC_DEB=$(PACKAGE)-docs_$(DEB_VERSION)_all.deb
|
||||
|
||||
DEBS=$(SERVER_DEB) $(SERVER_DBG_DEB) $(CLIENT_DEB) $(CLIENT_DBG_DEB) \
|
||||
$(RESTORE_DEB) $(RESTORE_DBG_DEB) $(STATIC_CLIENT_DEB) $(STATIC_CLIENT_DBG_DEB)
|
||||
$(RESTORE_DEB) $(RESTORE_DBG_DEB) $(DEBUG_DEB) $(DEBUG_DBG_DEB)
|
||||
|
||||
DSC = rust-$(PACKAGE)_$(DEB_VERSION).dsc
|
||||
|
||||
@ -89,7 +70,7 @@ DESTDIR=
|
||||
|
||||
tests ?= --workspace
|
||||
|
||||
all: proxmox-backup-client-static $(SUBDIRS)
|
||||
all: $(SUBDIRS)
|
||||
|
||||
.PHONY: $(SUBDIRS)
|
||||
$(SUBDIRS):
|
||||
@ -112,7 +93,7 @@ build:
|
||||
cp -a debian \
|
||||
Cargo.toml src \
|
||||
$(SUBCRATES) \
|
||||
docs etc examples tests www zsh-completions templates \
|
||||
docs etc examples tests www zsh-completions \
|
||||
defines.mk Makefile \
|
||||
./build/
|
||||
rm -f build/Cargo.lock
|
||||
@ -127,31 +108,22 @@ proxmox-backup-docs: build
|
||||
cd build; dpkg-buildpackage -b -us -uc --no-pre-clean
|
||||
lintian $(DOC_DEB)
|
||||
|
||||
.PHONY: deb dsc deb-nodoc deb-nostrip
|
||||
# copy the local target/ dir as a build-cache
|
||||
.PHONY: deb dsc deb-nodoc
|
||||
deb-nodoc: build
|
||||
cd build; dpkg-buildpackage -b -us -uc --no-pre-clean --build-profiles=nodoc
|
||||
lintian $(DEBS)
|
||||
|
||||
deb-nostrip: build
|
||||
cd build; DEB_BUILD_OPTIONS=nostrip dpkg-buildpackage -b -us -uc
|
||||
lintian $(DEBS) $(DOC_DEB)
|
||||
|
||||
$(DEBS): deb
|
||||
deb: build
|
||||
cd build; dpkg-buildpackage -b -us -uc
|
||||
lintian $(DEBS) $(DOC_DEB)
|
||||
|
||||
.PHONY: dsc
|
||||
dsc:
|
||||
rm -rf $(DSC) build/
|
||||
$(MAKE) $(DSC)
|
||||
lintian $(DSC)
|
||||
|
||||
dsc: $(DSC)
|
||||
$(DSC): build
|
||||
cd build; dpkg-buildpackage -S -us -uc -d
|
||||
|
||||
sbuild: $(DSC)
|
||||
sbuild $<
|
||||
lintian $(DSC)
|
||||
|
||||
.PHONY: clean distclean deb clean
|
||||
distclean: clean
|
||||
@ -159,6 +131,7 @@ clean: clean-deb
|
||||
$(foreach i,$(SUBDIRS), \
|
||||
$(MAKE) -C $(i) clean ;)
|
||||
$(CARGO) clean
|
||||
rm -f .do-cargo-build
|
||||
|
||||
# allows one to avoid running cargo clean when one just wants to tidy up after a package build
|
||||
clean-deb:
|
||||
@ -166,7 +139,8 @@ clean-deb:
|
||||
rm -f *.deb *.dsc *.tar.* *.buildinfo *.build *.changes
|
||||
|
||||
.PHONY: dinstall
|
||||
dinstall: $(SERVER_DEB) $(SERVER_DBG_DEB) $(CLIENT_DEB) $(CLIENT_DBG_DEB)
|
||||
dinstall: $(SERVER_DEB) $(SERVER_DBG_DEB) $(CLIENT_DEB) $(CLIENT_DBG_DEB) \
|
||||
$(DEBUG_DEB) $(DEBUG_DBG_DEB)
|
||||
dpkg -i $^
|
||||
|
||||
# make sure we build binaries before docs
|
||||
@ -174,9 +148,11 @@ docs: $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen
|
||||
|
||||
.PHONY: cargo-build
|
||||
cargo-build:
|
||||
rm -f .do-cargo-build
|
||||
$(MAKE) $(COMPILED_BINS)
|
||||
|
||||
$(COMPILED_BINS) $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen &:
|
||||
$(COMPILED_BINS) $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen: .do-cargo-build
|
||||
.do-cargo-build:
|
||||
$(CARGO) build $(CARGO_BUILD_ARGS) \
|
||||
--package proxmox-backup-banner \
|
||||
--bin proxmox-backup-banner \
|
||||
@ -195,7 +171,6 @@ $(COMPILED_BINS) $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen &:
|
||||
--bin proxmox-restore-daemon \
|
||||
--package proxmox-backup \
|
||||
--bin docgen \
|
||||
--bin pbs3to4 \
|
||||
--bin proxmox-backup-api \
|
||||
--bin proxmox-backup-manager \
|
||||
--bin proxmox-backup-proxy \
|
||||
@ -205,25 +180,12 @@ $(COMPILED_BINS) $(COMPILEDIR)/dump-catalog-shell-cli $(COMPILEDIR)/docgen &:
|
||||
--bin sg-tape-cmd
|
||||
touch "$@"
|
||||
|
||||
.PHONY: proxmox-backup-client-static
|
||||
proxmox-backup-client-static:
|
||||
$(MAKE) $(STATIC_BINS)
|
||||
|
||||
$(STATIC_BINS) &:
|
||||
mkdir -p $(STATIC_COMPILEDIR)/deps-stubs/ && \
|
||||
echo '!<arch>' > $(STATIC_COMPILEDIR)/deps-stubs/libsystemd.a # workaround for to greedy linkage and proxmox-systemd
|
||||
OPENSSL_STATIC=1 \
|
||||
RUSTFLAGS="$(STATIC_RUSTC_FLAGS)" \
|
||||
$(CARGO) build $(CARGO_STATIC_BUILD_ARGS) --package pxar-bin --bin pxar
|
||||
OPENSSL_STATIC=1 \
|
||||
RUSTFLAGS="$(STATIC_RUSTC_FLAGS)" \
|
||||
$(CARGO) build $(CARGO_STATIC_BUILD_ARGS) --package proxmox-backup-client --bin proxmox-backup-client
|
||||
|
||||
.PHONY: lint
|
||||
lint:
|
||||
cargo clippy -- -A clippy::all -D clippy::correctness
|
||||
|
||||
install: $(COMPILED_BINS) $(STATIC_BINS)
|
||||
install: $(COMPILED_BINS)
|
||||
install -dm755 $(DESTDIR)$(BINDIR)
|
||||
install -dm755 $(DESTDIR)$(ZSH_COMPL_DEST)
|
||||
$(foreach i,$(USR_BIN), \
|
||||
@ -233,7 +195,7 @@ install: $(COMPILED_BINS) $(STATIC_BINS)
|
||||
$(foreach i,$(USR_SBIN), \
|
||||
install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(SBINDIR)/ ; \
|
||||
install -m644 zsh-completions/_$(i) $(DESTDIR)$(ZSH_COMPL_DEST)/ ;)
|
||||
install -m755 $(COMPILEDIR)/pbs3to4 $(DESTDIR)$(SBINDIR)/
|
||||
install -m755 $(COMPILEDIR)/pbs2to3 $(DESTDIR)$(SBINDIR)/
|
||||
install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup
|
||||
install -dm755 $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/file-restore
|
||||
$(foreach i,$(RESTORE_BIN), \
|
||||
@ -242,19 +204,16 @@ install: $(COMPILED_BINS) $(STATIC_BINS)
|
||||
install -m4755 -o root -g root $(COMPILEDIR)/sg-tape-cmd $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/sg-tape-cmd
|
||||
$(foreach i,$(SERVICE_BIN), \
|
||||
install -m755 $(COMPILEDIR)/$(i) $(DESTDIR)$(LIBEXECDIR)/proxmox-backup/ ;)
|
||||
install -m755 $(STATIC_COMPILEDIR)/proxmox-backup-client $(DESTDIR)$(BINDIR)/proxmox-backup-client-static
|
||||
install -m755 $(STATIC_COMPILEDIR)/pxar $(DESTDIR)$(BINDIR)/pxar-static
|
||||
$(MAKE) -C www install
|
||||
$(MAKE) -C docs install
|
||||
$(MAKE) -C templates install
|
||||
|
||||
.PHONY: upload
|
||||
upload: UPLOAD_DIST ?= $(DEB_DISTRIBUTION)
|
||||
upload: $(SERVER_DEB) $(CLIENT_DEB) $(RESTORE_DEB) $(DOC_DEB) $(STATIC_CLIENT_DEB)
|
||||
upload: $(SERVER_DEB) $(CLIENT_DEB) $(RESTORE_DEB) $(DOC_DEB) $(DEBUG_DEB)
|
||||
# check if working directory is clean
|
||||
git diff --exit-code --stat && git diff --exit-code --stat --staged
|
||||
tar cf - $(SERVER_DEB) $(SERVER_DBG_DEB) $(DOC_DEB) $(CLIENT_DEB) $(CLIENT_DBG_DEB) \
|
||||
tar cf - $(SERVER_DEB) $(SERVER_DBG_DEB) $(DOC_DEB) $(CLIENT_DEB) \
|
||||
$(CLIENT_DBG_DEB) $(DEBUG_DEB) $(DEBUG_DBG_DEB) \
|
||||
| ssh -X repoman@repo.proxmox.com upload --product pbs --dist $(UPLOAD_DIST)
|
||||
tar cf - $(CLIENT_DEB) $(CLIENT_DBG_DEB) | ssh -X repoman@repo.proxmox.com upload --product "pve,pmg,pbs-client" --dist $(UPLOAD_DIST)
|
||||
tar cf - $(STATIC_CLIENT_DEB) $(STATIC_CLIENT_DBG_DEB) | ssh -X repoman@repo.proxmox.com upload --product "pbs-client" --dist $(UPLOAD_DIST)
|
||||
tar cf - $(RESTORE_DEB) $(RESTORE_DBG_DEB) | ssh -X repoman@repo.proxmox.com upload --product "pve" --dist $(UPLOAD_DIST)
|
||||
|
||||
17
README.rst
@ -5,11 +5,8 @@ Build & Release Notes
|
||||
``rustup`` Toolchain
|
||||
====================
|
||||
|
||||
We normally want to build with the ``rustc`` Debian package (see below). If you
|
||||
still want to use ``rustup`` for other reasons (e.g. to easily switch between
|
||||
the official stable, beta, and nightly compilers), you should set the following
|
||||
``rustup`` configuration to use the Debian-provided ``rustc`` compiler
|
||||
by default:
|
||||
We normally want to build with the ``rustc`` Debian package. To do that
|
||||
you can set the following ``rustup`` configuration:
|
||||
|
||||
# rustup toolchain link system /usr
|
||||
# rustup default system
|
||||
@ -33,7 +30,7 @@ pre-release version number (e.g., "0.1.1-dev.1" instead of "0.1.0").
|
||||
Local cargo config
|
||||
==================
|
||||
|
||||
This repository ships with a ``.cargo/config.toml`` that replaces the crates.io
|
||||
This repository ships with a ``.cargo/config`` that replaces the crates.io
|
||||
registry with packaged crates located in ``/usr/share/cargo/registry``.
|
||||
|
||||
A similar config is also applied building with dh_cargo. Cargo.lock needs to be
|
||||
@ -47,11 +44,11 @@ example for proxmox crate above).
|
||||
|
||||
Build
|
||||
=====
|
||||
on Debian 12 Bookworm
|
||||
on Debian 11 Bullseye
|
||||
|
||||
Setup:
|
||||
1. # echo 'deb http://download.proxmox.com/debian/devel/ bookworm main' | sudo tee /etc/apt/sources.list.d/proxmox-devel.list
|
||||
2. # sudo wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
|
||||
1. # echo 'deb http://download.proxmox.com/debian/devel/ bullseye main' | sudo tee /etc/apt/sources.list.d/proxmox-devel.list
|
||||
2. # sudo wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
|
||||
3. # sudo apt update
|
||||
4. # sudo apt install devscripts debcargo clang
|
||||
5. # git clone git://git.proxmox.com/git/proxmox-backup.git
|
||||
@ -61,7 +58,7 @@ Note: 2. may be skipped if you already added the PVE or PBS package repository
|
||||
|
||||
You are now able to build using the Makefile or cargo itself, e.g.::
|
||||
|
||||
# make deb
|
||||
# make deb-all
|
||||
# # or for a non-package build
|
||||
# cargo build --all --release
|
||||
|
||||
|
||||
1310
debian/changelog
vendored
1
debian/compat
vendored
Normal file
@ -0,0 +1 @@
|
||||
12
|
||||
363
debian/control
vendored
@ -1,181 +1,158 @@
|
||||
Source: rust-proxmox-backup
|
||||
Section: admin
|
||||
Priority: optional
|
||||
Build-Depends: bash-completion,
|
||||
cargo:native (>= 0.65.0~),
|
||||
debhelper (>= 12~),
|
||||
debhelper-compat (= 13),
|
||||
dh-cargo (>= 24),
|
||||
fonts-dejavu-core <!nodoc>,
|
||||
fonts-lato <!nodoc>,
|
||||
fonts-open-sans <!nodoc>,
|
||||
graphviz <!nodoc>,
|
||||
jq,
|
||||
latexmk <!nodoc>,
|
||||
libacl1-dev,
|
||||
libfuse3-dev,
|
||||
librust-anyhow-1+default-dev,
|
||||
librust-async-trait-0.1+default-dev (>= 0.1.56-~~),
|
||||
librust-bitflags-2+default-dev (>= 2.4-~~),
|
||||
librust-bytes-1+default-dev,
|
||||
librust-cidr-0.3+default-dev,
|
||||
librust-const-format-0.2+default-dev,
|
||||
librust-crc32fast-1+default-dev,
|
||||
librust-crossbeam-channel-0.5+default-dev,
|
||||
librust-endian-trait-0.6+arrays-dev,
|
||||
librust-endian-trait-0.6+default-dev,
|
||||
librust-env-logger-0.11+default-dev,
|
||||
librust-foreign-types-0.3+default-dev,
|
||||
librust-futures-0.3+default-dev,
|
||||
librust-h2-0.4+default-dev,
|
||||
librust-h2-0.4+stream-dev,
|
||||
librust-hex-0.4+default-dev (>= 0.4.3-~~),
|
||||
librust-hex-0.4+serde-dev (>= 0.4.3-~~),
|
||||
librust-hickory-resolver-0.24+system-config-dev (>= 0.24.1-~~),
|
||||
librust-hickory-resolver-0.24+tokio-runtime-dev (>= 0.24.1-~~),
|
||||
librust-http-body-util-0.1+default-dev,
|
||||
librust-hyper-1+default-dev,
|
||||
librust-hyper-1+full-dev,
|
||||
librust-hyper-util-0.1+client-dev,
|
||||
librust-hyper-util-0.1+client-legacy-dev,
|
||||
librust-hyper-util-0.1+default-dev,
|
||||
librust-hyper-util-0.1+http1-dev,
|
||||
librust-hyper-util-0.1+http2-dev,
|
||||
librust-hyper-util-0.1+server-auto-dev,
|
||||
librust-hyper-util-0.1+server-dev,
|
||||
librust-hyper-util-0.1+server-graceful-dev,
|
||||
librust-hyper-util-0.1+service-dev,
|
||||
librust-hyper-util-0.1+tokio-dev,
|
||||
librust-libc-0.2+default-dev,
|
||||
librust-log-0.4+default-dev (>= 0.4.17-~~),
|
||||
librust-nix-0.29+default-dev,
|
||||
librust-nix-0.29+feature-dev,
|
||||
librust-nix-0.29+mount-dev,
|
||||
librust-nix-0.29+reboot-dev,
|
||||
librust-nom-7+default-dev,
|
||||
librust-num-traits-0.2+default-dev,
|
||||
librust-once-cell-1+default-dev (>= 1.3.1-~~),
|
||||
librust-openssl-0.10+default-dev (>= 0.10.40-~~),
|
||||
librust-pathpatterns-1+default-dev,
|
||||
librust-pbs-api-types-1+default-dev (>= 1.0.2~~),
|
||||
librust-percent-encoding-2+default-dev (>= 2.1-~~),
|
||||
librust-pin-project-lite-0.2+default-dev,
|
||||
librust-proxmox-acme-1+default-dev,
|
||||
librust-proxmox-apt-0.99+cache-dev,
|
||||
librust-proxmox-apt-0.99+default-dev,
|
||||
librust-proxmox-apt-api-types-2+default-dev,
|
||||
librust-proxmox-async-0.5+default-dev,
|
||||
librust-proxmox-auth-api-1+api-dev (>= 1.0.2),
|
||||
librust-proxmox-auth-api-1+default-dev,
|
||||
librust-proxmox-auth-api-1+pam-authenticator-dev,
|
||||
librust-proxmox-base64-1+default-dev,
|
||||
librust-proxmox-borrow-1+default-dev,
|
||||
librust-proxmox-compression-1+default-dev,
|
||||
librust-proxmox-config-digest-1+default-dev,
|
||||
librust-proxmox-daemon-1+default-dev,
|
||||
librust-proxmox-fuse-1+default-dev,
|
||||
librust-proxmox-http-1+body-dev,
|
||||
librust-proxmox-http-1+client-dev,
|
||||
librust-proxmox-http-1+client-trait-dev,
|
||||
librust-proxmox-http-1+default-dev,
|
||||
librust-proxmox-http-1+http-helpers-dev,
|
||||
librust-proxmox-http-1+proxmox-async-dev,
|
||||
librust-proxmox-http-1+rate-limited-stream-dev,
|
||||
librust-proxmox-http-1+rate-limiter-dev,
|
||||
librust-proxmox-http-1+websocket-dev,
|
||||
librust-proxmox-human-byte-1+default-dev,
|
||||
librust-proxmox-io-1+default-dev (>= 1.0.1-~~),
|
||||
librust-proxmox-io-1+tokio-dev (>= 1.0.1-~~),
|
||||
librust-proxmox-lang-1+default-dev (>= 1.1-~~),
|
||||
librust-proxmox-ldap-1+default-dev,
|
||||
librust-proxmox-log-1+default-dev,
|
||||
librust-proxmox-metrics-1+default-dev,
|
||||
librust-proxmox-notify-1+default-dev,
|
||||
librust-proxmox-notify-1+pbs-context-dev,
|
||||
librust-proxmox-openid-1+default-dev,
|
||||
librust-proxmox-rest-server-1+default-dev (>= 1.0.1),
|
||||
librust-proxmox-rest-server-1+rate-limited-stream-dev,
|
||||
librust-proxmox-rest-server-1+templates-dev,
|
||||
librust-proxmox-router-3+cli-dev (>= 3.2.2-~),
|
||||
librust-proxmox-router-3+server-dev,
|
||||
librust-proxmox-rrd-1+default-dev,
|
||||
librust-proxmox-rrd-api-types-1+default-dev (>= 1.0.2-~~),
|
||||
librust-proxmox-s3-client-1-dev (>= 1.0.5),
|
||||
librust-proxmox-schema-4+api-macro-dev,
|
||||
librust-proxmox-schema-4+default-dev,
|
||||
librust-proxmox-section-config-3+default-dev,
|
||||
librust-proxmox-serde-1+default-dev,
|
||||
librust-proxmox-serde-1+serde-json-dev,
|
||||
librust-proxmox-shared-cache-1+default-dev,
|
||||
librust-proxmox-shared-memory-1+default-dev,
|
||||
librust-proxmox-sortable-macro-1+default-dev,
|
||||
librust-proxmox-subscription-1+api-types-dev,
|
||||
librust-proxmox-subscription-1+default-dev,
|
||||
librust-proxmox-sys-1+acl-dev,
|
||||
librust-proxmox-sys-1+crypt-dev,
|
||||
librust-proxmox-sys-1+default-dev,
|
||||
librust-proxmox-sys-1+logrotate-dev,
|
||||
librust-proxmox-sys-1+timer-dev,
|
||||
librust-proxmox-systemd-1+default-dev,
|
||||
librust-proxmox-tfa-6+api-dev,
|
||||
librust-proxmox-tfa-6+api-types-dev,
|
||||
librust-proxmox-tfa-6+default-dev,
|
||||
librust-proxmox-time-2+default-dev,
|
||||
librust-proxmox-uuid-1+default-dev,
|
||||
librust-proxmox-uuid-1+serde-dev,
|
||||
librust-proxmox-worker-task-1+default-dev,
|
||||
librust-pxar-1+default-dev,
|
||||
librust-regex-1+default-dev (>= 1.5.5-~~),
|
||||
librust-rustyline-14+default-dev,
|
||||
librust-serde-1+default-dev,
|
||||
librust-serde-1+derive-dev,
|
||||
librust-serde-json-1+default-dev,
|
||||
librust-syslog-6+default-dev,
|
||||
librust-tar-0.4+default-dev,
|
||||
librust-termcolor-1+default-dev (>= 1.1.2-~~),
|
||||
librust-thiserror-2+default-dev,
|
||||
librust-tokio-1+default-dev (>= 1.6-~~),
|
||||
librust-tokio-1+fs-dev (>= 1.6-~~),
|
||||
librust-tokio-1+io-std-dev (>= 1.6-~~),
|
||||
librust-tokio-1+io-util-dev (>= 1.6-~~),
|
||||
librust-tokio-1+macros-dev (>= 1.6-~~),
|
||||
librust-tokio-1+net-dev (>= 1.6-~~),
|
||||
librust-tokio-1+parking-lot-dev (>= 1.6-~~),
|
||||
librust-tokio-1+process-dev (>= 1.6-~~),
|
||||
librust-tokio-1+rt-dev (>= 1.6-~~),
|
||||
librust-tokio-1+rt-multi-thread-dev (>= 1.6-~~),
|
||||
librust-tokio-1+signal-dev (>= 1.6-~~),
|
||||
librust-tokio-1+sync-dev (>= 1.6-~~),
|
||||
librust-tokio-1+time-dev (>= 1.6-~~),
|
||||
librust-tokio-openssl-0.6+default-dev (>= 0.6.1-~~),
|
||||
librust-tokio-stream-0.1+default-dev,
|
||||
librust-tokio-util-0.7+codec-dev,
|
||||
librust-tokio-util-0.7+default-dev,
|
||||
librust-tokio-util-0.7+io-dev,
|
||||
librust-tower-service-0.3+default-dev,
|
||||
librust-tracing-0.1+default-dev,
|
||||
librust-udev-0.9+default-dev,
|
||||
librust-url-2+default-dev (>= 2.1-~~),
|
||||
librust-walkdir-2+default-dev,
|
||||
librust-xdg-2+default-dev (>= 2.2-~~),
|
||||
librust-zstd-0.13+default-dev,
|
||||
librust-zstd-safe-7+default-dev,
|
||||
libsgutils2-dev,
|
||||
libstd-rust-dev,
|
||||
libsystemd-dev (>= 246-~~),
|
||||
patchelf,
|
||||
proxmox-widget-toolkit-dev <!nodoc>,
|
||||
proxmox-biome,
|
||||
python3-docutils,
|
||||
python3-pygments,
|
||||
python3-sphinx <!nodoc>,
|
||||
rsync,
|
||||
rustc:native,
|
||||
texlive-fonts-extra <!nodoc>,
|
||||
texlive-fonts-recommended <!nodoc>,
|
||||
texlive-xetex <!nodoc>,
|
||||
uuid-dev,
|
||||
xindy <!nodoc>,
|
||||
Build-Depends: debhelper (>= 12),
|
||||
dh-cargo (>= 24),
|
||||
cargo:native (>= 0.65.0~),
|
||||
rustc:native,
|
||||
libstd-rust-dev,
|
||||
librust-anyhow-1+default-dev,
|
||||
librust-apt-pkg-native-0.3+default-dev (>= 0.3.2-~~),
|
||||
librust-base64-0.13+default-dev,
|
||||
librust-bitflags-1+default-dev (>= 1.2.1-~~),
|
||||
librust-bytes-1+default-dev,
|
||||
librust-cidr-0.2+default-dev (>= 0.2.1-~~),
|
||||
librust-crc32fast-1+default-dev,
|
||||
librust-crossbeam-channel-0.5+default-dev,
|
||||
librust-endian-trait-0.6+arrays-dev,
|
||||
librust-endian-trait-0.6+default-dev,
|
||||
librust-env-logger-0.9+default-dev,
|
||||
librust-flate2-1+default-dev,
|
||||
librust-foreign-types-0.3+default-dev,
|
||||
librust-futures-0.3+default-dev,
|
||||
librust-h2-0.3+default-dev,
|
||||
librust-h2-0.3+stream-dev,
|
||||
librust-handlebars-3+default-dev,
|
||||
librust-hex-0.4+default-dev (>= 0.4.3-~~),
|
||||
librust-hex-0.4+serde-dev (>= 0.4.3-~~),
|
||||
librust-http-0.2+default-dev,
|
||||
librust-hyper-0.14+default-dev,
|
||||
librust-hyper-0.14+full-dev,
|
||||
librust-lazy-static-1+default-dev (>= 1.4-~~),
|
||||
librust-libc-0.2+default-dev,
|
||||
librust-log-0.4+default-dev (>= 0.4.17-~~),
|
||||
librust-nix-0.26+default-dev (>= 0.26.1-~~),
|
||||
librust-nom-7+default-dev,
|
||||
librust-num-traits-0.2+default-dev,
|
||||
librust-once-cell-1+default-dev (>= 1.3.1-~~),
|
||||
librust-openssl-0.10+default-dev (>= 0.10.40-~~),
|
||||
librust-pam-0.7+default-dev,
|
||||
librust-pam-sys-0.5+default-dev,
|
||||
librust-pathpatterns-0.1+default-dev (>= 0.1.2-~~),
|
||||
librust-percent-encoding-2+default-dev (>= 2.1-~~),
|
||||
librust-pin-project-lite-0.2+default-dev,
|
||||
librust-proxmox-acme-rs-0.4+default-dev,
|
||||
librust-proxmox-apt-0.9+default-dev (>= 0.9.4),
|
||||
librust-proxmox-async-0.4+default-dev,
|
||||
librust-proxmox-auth-api-0.1+api-dev,
|
||||
librust-proxmox-auth-api-0.1+api-types-dev,
|
||||
librust-proxmox-auth-api-0.1+default-dev,
|
||||
librust-proxmox-auth-api-0.1+pam-authenticator-dev,
|
||||
librust-proxmox-borrow-1+default-dev,
|
||||
librust-proxmox-compression-0.1+default-dev (>= 0.1.1-~~),
|
||||
librust-proxmox-fuse-0.1+default-dev (>= 0.1.3-~~),
|
||||
librust-proxmox-http-0.8+client-dev,
|
||||
librust-proxmox-http-0.8+client-trait-dev,
|
||||
librust-proxmox-http-0.8+default-dev,
|
||||
librust-proxmox-http-0.8+http-helpers-dev,
|
||||
librust-proxmox-http-0.8+proxmox-async-dev,
|
||||
librust-proxmox-http-0.8+rate-limited-stream-dev,
|
||||
librust-proxmox-http-0.8+rate-limiter-dev,
|
||||
librust-proxmox-http-0.8+websocket-dev,
|
||||
librust-proxmox-io-1+default-dev (>= 1.0.1-~~),
|
||||
librust-proxmox-io-1+tokio-dev (>= 1.0.1-~~),
|
||||
librust-proxmox-lang-1+default-dev (>= 1.1-~~),
|
||||
librust-proxmox-ldap-0.1+default-dev,
|
||||
librust-proxmox-metrics-0.2+default-dev,
|
||||
librust-proxmox-openid-0.9+default-dev (>= 0.9.9-~~),
|
||||
librust-proxmox-rest-server-0.3+default-dev,
|
||||
librust-proxmox-rest-server-0.3+rate-limited-stream-dev,
|
||||
librust-proxmox-rest-server-0.3+templates-dev,
|
||||
librust-proxmox-router-1+cli-dev (>= 1.3.1-~~),
|
||||
librust-proxmox-router-1+default-dev (>= 1.3.1-~~),
|
||||
librust-proxmox-router-1+server-dev (>= 1.3.1-~~),
|
||||
librust-proxmox-schema-1+api-macro-dev (>= 1.3.6-~~),
|
||||
librust-proxmox-schema-1+default-dev (>= 1.3.6-~~),
|
||||
librust-proxmox-section-config-1+default-dev,
|
||||
librust-proxmox-serde-0.1+default-dev (>= 0.1.1-~~),
|
||||
librust-proxmox-serde-0.1+serde-json-dev (>= 0.1.1-~~),
|
||||
librust-proxmox-shared-memory-0.2+default-dev (>= 0.2.3-~~),
|
||||
librust-proxmox-sortable-macro-0.1+default-dev (>= 0.1.2-~~),
|
||||
librust-proxmox-subscription-0.3+api-types-dev,
|
||||
librust-proxmox-subscription-0.3+default-dev,
|
||||
librust-proxmox-sys-0.4+acl-dev (>= 0.4.2-~~),
|
||||
librust-proxmox-sys-0.4+crypt-dev (>= 0.4.2-~~),
|
||||
librust-proxmox-sys-0.4+default-dev (>= 0.4.2-~~),
|
||||
librust-proxmox-sys-0.4+logrotate-dev (>= 0.4.2-~~),
|
||||
librust-proxmox-sys-0.4+timer-dev (>= 0.4.2-~~),
|
||||
librust-proxmox-tfa-4+api-dev,
|
||||
librust-proxmox-tfa-4+api-types-dev,
|
||||
librust-proxmox-tfa-4+default-dev,
|
||||
librust-proxmox-time-1+default-dev (>= 1.1.2-~~),
|
||||
librust-proxmox-uuid-1+default-dev,
|
||||
librust-proxmox-uuid-1+serde-dev,
|
||||
librust-pxar-0.10+default-dev (>= 0.10.3-~~),
|
||||
librust-regex-1+default-dev (>= 1.5.5-~~),
|
||||
librust-rustyline-9+default-dev,
|
||||
librust-serde-1+default-dev,
|
||||
librust-serde-1+derive-dev,
|
||||
librust-serde-cbor-0.11+default-dev (>= 0.11.1-~~),
|
||||
librust-serde-json-1+default-dev,
|
||||
librust-serde-plain-1+default-dev,
|
||||
librust-siphasher-0.3+default-dev,
|
||||
librust-syslog-6+default-dev,
|
||||
librust-tar-0.4+default-dev,
|
||||
librust-termcolor-1+default-dev (>= 1.1.2-~~),
|
||||
librust-thiserror-1+default-dev,
|
||||
librust-tokio-1+default-dev (>= 1.6-~~),
|
||||
librust-tokio-1+fs-dev (>= 1.6-~~),
|
||||
librust-tokio-1+io-std-dev (>= 1.6-~~),
|
||||
librust-tokio-1+io-util-dev (>= 1.6-~~),
|
||||
librust-tokio-1+macros-dev (>= 1.6-~~),
|
||||
librust-tokio-1+net-dev (>= 1.6-~~),
|
||||
librust-tokio-1+parking-lot-dev (>= 1.6-~~),
|
||||
librust-tokio-1+process-dev (>= 1.6-~~),
|
||||
librust-tokio-1+rt-dev (>= 1.6-~~),
|
||||
librust-tokio-1+rt-multi-thread-dev (>= 1.6-~~),
|
||||
librust-tokio-1+signal-dev (>= 1.6-~~),
|
||||
librust-tokio-1+sync-dev (>= 1.6-~~),
|
||||
librust-tokio-1+time-dev (>= 1.6-~~),
|
||||
librust-tokio-openssl-0.6+default-dev (>= 0.6.1-~~),
|
||||
librust-tokio-stream-0.1+default-dev,
|
||||
librust-tokio-util-0.7+codec-dev,
|
||||
librust-tokio-util-0.7+default-dev,
|
||||
librust-tokio-util-0.7+io-dev,
|
||||
librust-tower-service-0.3+default-dev,
|
||||
librust-udev-0.4+default-dev,
|
||||
librust-url-2+default-dev (>= 2.1-~~),
|
||||
librust-walkdir-2+default-dev,
|
||||
librust-xdg-2+default-dev (>= 2.2-~~),
|
||||
librust-zstd-0.6+bindgen-dev,
|
||||
librust-zstd-0.6+default-dev,
|
||||
libacl1-dev,
|
||||
libfuse3-dev,
|
||||
libsystemd-dev (>= 246-~~),
|
||||
uuid-dev,
|
||||
libsgutils2-dev,
|
||||
bash-completion,
|
||||
debhelper (>= 12~),
|
||||
fonts-dejavu-core <!nodoc>,
|
||||
fonts-lato <!nodoc>,
|
||||
fonts-open-sans <!nodoc>,
|
||||
graphviz <!nodoc>,
|
||||
jq,
|
||||
latexmk <!nodoc>,
|
||||
patchelf,
|
||||
proxmox-widget-toolkit-dev <!nodoc>,
|
||||
pve-eslint (>= 7.18.0~),
|
||||
python3-docutils,
|
||||
python3-pygments,
|
||||
python3-sphinx <!nodoc>,
|
||||
rsync,
|
||||
texlive-fonts-extra <!nodoc>,
|
||||
texlive-fonts-recommended <!nodoc>,
|
||||
texlive-xetex <!nodoc>,
|
||||
xindy <!nodoc>
|
||||
Maintainer: Proxmox Support Team <support@proxmox.com>
|
||||
Standards-Version: 4.5.1
|
||||
Vcs-Git: git://git.proxmox.com/git/proxmox-backup.git
|
||||
@ -186,11 +163,10 @@ Rules-Requires-Root: binary-targets
|
||||
Package: proxmox-backup-server
|
||||
Architecture: any
|
||||
Depends: fonts-font-awesome,
|
||||
gdisk,
|
||||
libjs-extjs (>= 7~),
|
||||
libjs-qrcodejs (>= 1.20201119),
|
||||
libproxmox-acme-plugins,
|
||||
libsgutils2-1.48,
|
||||
libsgutils2-2,
|
||||
libzstd1 (>= 1.3.8),
|
||||
lvm2,
|
||||
openssh-server,
|
||||
@ -198,48 +174,47 @@ Depends: fonts-font-awesome,
|
||||
postfix | mail-transport-agent,
|
||||
proxmox-backup-docs,
|
||||
proxmox-mini-journalreader,
|
||||
proxmox-widget-toolkit (>= 4.3.3),
|
||||
proxmox-widget-toolkit (>= 3.5.2),
|
||||
pve-xtermjs (>= 4.7.0-1),
|
||||
sg3-utils,
|
||||
smartmontools,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends},
|
||||
Recommends: ifupdown2,
|
||||
proxmox-mail-forward,
|
||||
Recommends: zfsutils-linux,
|
||||
ifupdown2,
|
||||
proxmox-offline-mirror-helper,
|
||||
zfsutils-linux,
|
||||
proxmox-mail-forward,
|
||||
Description: Proxmox Backup Server daemon with tools and GUI
|
||||
This package contains the Proxmox Backup Server daemons and related
|
||||
tools. This includes a web-based graphical user interface.
|
||||
|
||||
Package: proxmox-backup-client
|
||||
Architecture: any
|
||||
Depends: qrencode, ${misc:Depends}, ${shlibs:Depends},
|
||||
Depends: qrencode,
|
||||
${misc:Depends},
|
||||
${shlibs:Depends},
|
||||
Description: Proxmox Backup Client tools
|
||||
This package contains the Proxmox Backup client, which provides a
|
||||
simple command line tool to create and restore backups.
|
||||
|
||||
Package: proxmox-backup-client-static
|
||||
Architecture: any
|
||||
Depends: qrencode, ${misc:Depends},
|
||||
Conflicts: proxmox-backup-client,
|
||||
Description: Proxmox Backup Client tools (statically linked)
|
||||
This package contains the Proxmox Backup client, which provides a
|
||||
simple command line tool to create and restore backups.
|
||||
|
||||
Package: proxmox-backup-docs
|
||||
Build-Profiles: <!nodoc>
|
||||
Section: doc
|
||||
Depends: fonts-font-awesome, libjs-extjs, libjs-mathjax, ${misc:Depends},
|
||||
Depends: fonts-font-awesome,
|
||||
libjs-extjs,
|
||||
libjs-mathjax,
|
||||
${misc:Depends},
|
||||
Architecture: all
|
||||
Description: Proxmox Backup Documentation
|
||||
This package contains the Proxmox Backup Documentation files.
|
||||
|
||||
Package: proxmox-backup-file-restore
|
||||
Architecture: any
|
||||
Depends: ${misc:Depends}, ${shlibs:Depends},
|
||||
Recommends: proxmox-backup-restore-image, pve-qemu-kvm (>= 5.0.0-9),
|
||||
Breaks: proxmox-backup-restore-image (<< 0.3.1),
|
||||
Depends: ${misc:Depends},
|
||||
${shlibs:Depends},
|
||||
Recommends: pve-qemu-kvm (>= 5.0.0-9),
|
||||
proxmox-backup-restore-image,
|
||||
Breaks: proxmox-backup-restore-image (<< 0.3.1)
|
||||
Description: Proxmox Backup single file restore tools for pxar and block device backups
|
||||
This package contains the Proxmox Backup single file restore client for
|
||||
restoring individual files and folders from both host/container and VM/block
|
||||
|
||||
2
debian/copyright
vendored
@ -1,4 +1,4 @@
|
||||
Copyright (C) 2019 - 2025 Proxmox Server Solutions GmbH
|
||||
Copyright (C) 2019 - 2023 Proxmox Server Solutions GmbH
|
||||
|
||||
This software is written by Proxmox Server Solutions GmbH <support@proxmox.com>
|
||||
|
||||
|
||||
7
debian/lintian-overrides
vendored
@ -1,8 +1,7 @@
|
||||
proxmox-backup-server: elevated-privileges 4755 root/root [usr/lib/x86_64-linux-gnu/proxmox-backup/sg-tape-cmd]
|
||||
proxmox-backup-server: mail-transport-agent-dependency-does-not-specify-default-mta
|
||||
proxmox-backup-server: package-installs-apt-sources [etc/apt/sources.list.d/pbs-enterprise.sources]
|
||||
proxmox-backup-server: systemd-service-file-refers-to-unusual-wantedby-target getty.target [usr/lib/systemd/system/proxmox-backup-banner.service]
|
||||
proxmox-backup-server: package-installs-apt-sources [etc/apt/sources.list.d/pbs-enterprise.list]
|
||||
proxmox-backup-server: elevated-privileges 4755 root/root [usr/lib/x86_64-linux-gnu/proxmox-backup/sg-tape-cmd]
|
||||
proxmox-backup-server: systemd-service-file-refers-to-unusual-wantedby-target getty.target [lib/systemd/system/proxmox-backup-banner.service]
|
||||
proxmox-backup-server: uses-dpkg-database-directly [usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-api]
|
||||
proxmox-backup-server: uses-dpkg-database-directly [usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-proxy]
|
||||
proxmox-backup-server: uses-dpkg-database-directly [usr/sbin/pbs3to4]
|
||||
proxmox-backup-server: uses-dpkg-database-directly [usr/sbin/proxmox-backup-debug]
|
||||
|
||||
74
debian/postinst
vendored
@ -4,23 +4,31 @@ set -e
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
update_sync_job() {
|
||||
job="$1"
|
||||
|
||||
echo "Updating sync job '$job' to make old 'remove-vanished' default explicit.."
|
||||
proxmox-backup-manager sync-job update "$job" --remove-vanished true \
|
||||
|| echo "Failed, please check sync.cfg manually!"
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
# need to have user backup in the tape group
|
||||
usermod -a -G tape backup
|
||||
|
||||
# FIXME: remove after beta is over and add hunk to actively remove the repo
|
||||
BETA_SOURCES="/etc/apt/sources.list.d/pbs-test-for-beta.sources"
|
||||
if test -e /proxmox_install_mode && ! test -f "$BETA_SOURCES"; then
|
||||
echo "Adding pbs-test repo to '$BETA_SOURCES' to enable updates during Proxmox Backup Server 4.0 BETA"
|
||||
printf 'Types: deb\nURIs: http://download.proxmox.com/debian/pbs\nSuites: trixie\nComponents: pbs-test\nSigned-By: /usr/share/keyrings/proxmox-archive-keyring.gpg\n' \
|
||||
| tee "$BETA_SOURCES"
|
||||
fi
|
||||
|
||||
# modeled after dh_systemd_start output
|
||||
systemctl --system daemon-reload >/dev/null || true
|
||||
if [ -n "$2" ]; then
|
||||
_dh_action=try-reload-or-restart
|
||||
if dpkg --compare-versions "$2" 'lt' '1.0.7-1'; then
|
||||
# there was an issue with reloading and systemd being confused in older daemon versions
|
||||
# so restart instead of reload if upgrading from there, see commit 0ec79339f7aebf9
|
||||
# FIXME: remove with PBS 2.1
|
||||
echo "Upgrading from older proxmox-backup-server: restart (not reload) daemons"
|
||||
_dh_action=try-restart
|
||||
else
|
||||
_dh_action=try-reload-or-restart
|
||||
fi
|
||||
else
|
||||
_dh_action=start
|
||||
fi
|
||||
@ -33,25 +41,45 @@ case "$1" in
|
||||
flock -w 30 /var/log/proxmox-backup/tasks/active.lock sed -i 's/:termproxy::\([^@]\+\): /:termproxy::\1@pam: /' /var/log/proxmox-backup/tasks/active || true
|
||||
fi
|
||||
|
||||
# TODO: remove with 4.1+, this was just exposed on internal testing.
|
||||
if dpkg --compare-versions "$2" 'lt' '4.0.5~'; then
|
||||
if [ -e /etc/proxmox-backup/s3.cfg ]; then
|
||||
sed -i 's/^s3client:/s3-endpoint:/' /etc/proxmox-backup/s3.cfg \
|
||||
|| echo "Failed to rename 's3client' config section-type to 's3-endpoint' in /etc/proxmox-backup/s3.cfg."
|
||||
if dpkg --compare-versions "$2" 'lt' '2.2.2~'; then
|
||||
echo "moving prune schedule from datacenter config to new prune job config"
|
||||
proxmox-backup-manager update-to-prune-jobs-config \
|
||||
|| echo "Failed to move prune jobs, please check manually"
|
||||
true
|
||||
fi
|
||||
|
||||
if dpkg --compare-versions "$2" 'lt' '2.3.1~' && test -e /etc/proxmox-backup/.datastore.lck; then
|
||||
lock_user="$(stat --format '%U' /etc/proxmox-backup/.datastore.lck)"
|
||||
if [ "${lock_user}" != "backup" ]; then
|
||||
echo "updating /etc/proxmox-backup/.datastore.lck from wrong user '${lock_user}' to 'backup'"
|
||||
chown backup:backup /etc/proxmox-backup/.datastore.lck \
|
||||
|| printf "Failed to fix datastore.lck user, please retry manually with:\n\n\t%s\n\n" \
|
||||
"chown backup:backup /etc/proxmox-backup/.datastore.lck"
|
||||
fi
|
||||
fi
|
||||
|
||||
# TODO: remove with PBS 5+
|
||||
if dpkg --compare-versions "$2" 'lt' '4.0.2~'; then
|
||||
proxmox-backup-manager migrate-config default-notification-mode \
|
||||
|| echo "Failed migrate tape-job/datastore notification mode, please check manually"
|
||||
fi
|
||||
if dpkg --compare-versions "$2" 'lt' '2.1.3~' && test -e /etc/proxmox-backup/sync.cfg; then
|
||||
prev_job=""
|
||||
|
||||
if dpkg --compare-versions "$2" 'lt' '3.3.5~'; then
|
||||
# ensure old locking is used by the daemon until a reboot happened
|
||||
touch "/run/proxmox-backup/old-locking"
|
||||
# read from HERE doc because POSIX sh limitations
|
||||
while read -r key value; do
|
||||
if test "$key" = "sync:"; then
|
||||
if test -n "$prev_job"; then
|
||||
# previous job doesn't have an explicit value
|
||||
update_sync_job "$prev_job"
|
||||
fi
|
||||
prev_job=$value
|
||||
else
|
||||
prev_job=""
|
||||
fi
|
||||
done <<EOF
|
||||
$(grep -e '^sync:' -e 'remove-vanished' /etc/proxmox-backup/sync.cfg)
|
||||
EOF
|
||||
if test -n "$prev_job"; then
|
||||
# last job doesn't have an explicit value
|
||||
update_sync_job "$prev_job"
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
;;
|
||||
|
||||
|
||||
@ -1,2 +0,0 @@
|
||||
debian/proxmox-backup-client.bc proxmox-backup-client
|
||||
debian/pxar.bc pxar
|
||||
4
debian/proxmox-backup-client-static.install
vendored
@ -1,4 +0,0 @@
|
||||
usr/share/man/man1/proxmox-backup-client.1
|
||||
usr/share/man/man1/pxar.1
|
||||
usr/share/zsh/vendor-completions/_proxmox-backup-client
|
||||
usr/share/zsh/vendor-completions/_pxar
|
||||
@ -1,2 +0,0 @@
|
||||
proxmox-backup-client-static: embedded-library zlib [usr/bin/proxmox-backup-client]
|
||||
proxmox-backup-client-static: embedded-library zlib [usr/bin/pxar]
|
||||
4
debian/proxmox-backup-docs.links
vendored
@ -1,6 +1,6 @@
|
||||
/usr/share/doc/proxmox-backup/proxmox-backup.pdf /usr/share/doc/proxmox-backup/html/proxmox-backup.pdf
|
||||
/usr/share/javascript/extjs /usr/share/doc/proxmox-backup/html/prune-simulator/extjs
|
||||
/usr/share/javascript/extjs /usr/share/doc/proxmox-backup/html/lto-barcode/extjs
|
||||
/usr/share/fonts-font-awesome/ /usr/share/doc/proxmox-backup/html/lto-barcode/font-awesome
|
||||
/usr/share/javascript/extjs /usr/share/doc/proxmox-backup/html/api-viewer/extjs
|
||||
/usr/share/javascript/extjs /usr/share/doc/proxmox-backup/html/lto-barcode/extjs
|
||||
/usr/share/javascript/extjs /usr/share/doc/proxmox-backup/html/prune-simulator/extjs
|
||||
/usr/share/javascript/mathjax /usr/share/doc/proxmox-backup/html/_static/mathjax
|
||||
|
||||
2
debian/proxmox-backup-file-restore.install
vendored
@ -1,4 +1,4 @@
|
||||
usr/bin/proxmox-file-restore
|
||||
usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore/proxmox-restore-daemon
|
||||
usr/share/man/man1/proxmox-file-restore.1
|
||||
usr/share/zsh/vendor-completions/_proxmox-file-restore
|
||||
usr/lib/x86_64-linux-gnu/proxmox-backup/file-restore/proxmox-restore-daemon
|
||||
|
||||
2
debian/proxmox-backup-file-restore.postinst
vendored
@ -9,7 +9,7 @@ update_initramfs() {
|
||||
CACHE_PATH_DBG="/var/cache/proxmox-backup/file-restore-initramfs-debug.img"
|
||||
|
||||
# cleanup first, in case proxmox-file-restore was uninstalled since we do
|
||||
# not want an unusable image lying around
|
||||
# not want an unuseable image lying around
|
||||
rm -f "$CACHE_PATH"
|
||||
|
||||
if [ ! -f "$INST_PATH/initramfs.img" ]; then
|
||||
|
||||
75
debian/proxmox-backup-server.install
vendored
@ -1,76 +1,43 @@
|
||||
etc/pbs-enterprise.sources /etc/apt/sources.list.d/
|
||||
etc/proxmox-backup-banner.service /usr/lib/systemd/system/
|
||||
etc/proxmox-backup-daily-update.service /usr/lib/systemd/system/
|
||||
etc/proxmox-backup-daily-update.timer /usr/lib/systemd/system/
|
||||
etc/proxmox-backup-proxy.service /usr/lib/systemd/system/
|
||||
etc/proxmox-backup.service /usr/lib/systemd/system/
|
||||
etc/removable-device-attach@.service /usr/lib/systemd/system/
|
||||
usr/bin/pmt
|
||||
usr/bin/pmtx
|
||||
usr/bin/proxmox-tape
|
||||
etc/proxmox-backup-proxy.service /lib/systemd/system/
|
||||
etc/proxmox-backup.service /lib/systemd/system/
|
||||
etc/proxmox-backup-banner.service /lib/systemd/system/
|
||||
etc/proxmox-backup-daily-update.service /lib/systemd/system/
|
||||
etc/proxmox-backup-daily-update.timer /lib/systemd/system/
|
||||
etc/pbs-enterprise.list /etc/apt/sources.list.d/
|
||||
usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-api
|
||||
usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-banner
|
||||
usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-proxy
|
||||
usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-backup-banner
|
||||
usr/lib/x86_64-linux-gnu/proxmox-backup/proxmox-daily-update
|
||||
usr/lib/x86_64-linux-gnu/proxmox-backup/sg-tape-cmd
|
||||
usr/sbin/pbs3to4
|
||||
usr/sbin/proxmox-backup-debug
|
||||
usr/sbin/proxmox-backup-manager
|
||||
usr/sbin/pbs2to3
|
||||
usr/bin/pmtx
|
||||
usr/bin/pmt
|
||||
usr/bin/proxmox-tape
|
||||
usr/share/javascript/proxmox-backup/index.hbs
|
||||
usr/share/javascript/proxmox-backup/css/ext6-pbs.css
|
||||
usr/share/javascript/proxmox-backup/images
|
||||
usr/share/javascript/proxmox-backup/index.hbs
|
||||
usr/share/javascript/proxmox-backup/js/proxmox-backup-gui.js
|
||||
usr/share/man/man1/pbs3to4.1
|
||||
usr/share/man/man1/pmt.1
|
||||
usr/share/man/man1/pmtx.1
|
||||
usr/share/man/man1/proxmox-backup-debug.1
|
||||
usr/share/man/man1/proxmox-backup-manager.1
|
||||
usr/share/man/man1/proxmox-backup-proxy.1
|
||||
usr/share/man/man1/proxmox-tape.1
|
||||
usr/share/man/man1/pmtx.1
|
||||
usr/share/man/man1/pmt.1
|
||||
usr/share/man/man1/pbs2to3.1
|
||||
usr/share/man/man5/acl.cfg.5
|
||||
usr/share/man/man5/datastore.cfg.5
|
||||
usr/share/man/man5/domains.cfg.5
|
||||
usr/share/man/man5/media-pool.cfg.5
|
||||
usr/share/man/man5/notifications-priv.cfg.5
|
||||
usr/share/man/man5/notifications.cfg.5
|
||||
usr/share/man/man5/proxmox-backup.node.cfg.5
|
||||
usr/share/man/man5/prune.cfg.5
|
||||
usr/share/man/man5/user.cfg.5
|
||||
usr/share/man/man5/remote.cfg.5
|
||||
usr/share/man/man5/sync.cfg.5
|
||||
usr/share/man/man5/tape-job.cfg.5
|
||||
usr/share/man/man5/tape.cfg.5
|
||||
usr/share/man/man5/user.cfg.5
|
||||
usr/share/man/man5/verification.cfg.5
|
||||
usr/share/proxmox-backup/templates/default/acme-err-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/acme-err-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/gc-err-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/gc-err-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/gc-ok-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/gc-ok-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/package-updates-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/package-updates-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/prune-err-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/prune-err-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/prune-ok-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/prune-ok-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/sync-err-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/sync-err-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/sync-ok-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/sync-ok-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/tape-backup-err-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/tape-backup-err-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/tape-backup-ok-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/tape-backup-ok-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/tape-load-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/tape-load-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/test-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/test-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/verify-err-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/verify-err-subject.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/verify-ok-body.txt.hbs
|
||||
usr/share/proxmox-backup/templates/default/verify-ok-subject.txt.hbs
|
||||
usr/share/zsh/vendor-completions/_pmt
|
||||
usr/share/zsh/vendor-completions/_pmtx
|
||||
usr/share/man/man5/media-pool.cfg.5
|
||||
usr/share/man/man5/tape.cfg.5
|
||||
usr/share/man/man5/tape-job.cfg.5
|
||||
usr/share/zsh/vendor-completions/_proxmox-backup-debug
|
||||
usr/share/zsh/vendor-completions/_proxmox-backup-manager
|
||||
usr/share/zsh/vendor-completions/_proxmox-tape
|
||||
usr/share/zsh/vendor-completions/_pmtx
|
||||
usr/share/zsh/vendor-completions/_pmt
|
||||
|
||||
5
debian/proxmox-backup-server.udev
vendored
@ -5,7 +5,7 @@
|
||||
ACTION=="remove", GOTO="persistent_storage_tape_end"
|
||||
ENV{UDEV_DISABLE_PERSISTENT_STORAGE_RULES_FLAG}=="1", GOTO="persistent_storage_tape_end"
|
||||
|
||||
# also see: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
|
||||
# also see: /lib/udev/rules.d/60-persistent-storage-tape.rules
|
||||
|
||||
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="1", IMPORT{program}="scsi_id --sg-version=3 --export --whitelisted -d $devnode", \
|
||||
SYMLINK+="tape/by-id/scsi-$env{ID_SERIAL}-sg"
|
||||
@ -16,6 +16,3 @@ SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="1", ENV{ID_SCSI_SER
|
||||
SYMLINK+="tape/by-id/scsi-$env{ID_SCSI_SERIAL}-sg"
|
||||
|
||||
LABEL="persistent_storage_tape_end"
|
||||
|
||||
# triggers the mounting of a removable device
|
||||
ACTION=="add", SUBSYSTEM=="block", ENV{ID_FS_UUID}!="", TAG+="systemd", ENV{SYSTEMD_WANTS}="removable-device-attach@$env{ID_FS_UUID}"
|
||||
|
||||
25
debian/rules
vendored
@ -7,18 +7,8 @@ include /usr/share/dpkg/pkg-info.mk
|
||||
include /usr/share/rustc/architecture.mk
|
||||
|
||||
export BUILD_MODE=release
|
||||
export CARGO_STATIC_CONFIG=--config debian/cargo_home/config.static.toml
|
||||
|
||||
# sync with Makefile!
|
||||
STATIC_TARGET_DIR := target/static-build
|
||||
ifeq ($(BUILD_MODE), release)
|
||||
STATIC_COMPILEDIR := $(STATIC_TARGET_DIR)/$(DEB_HOST_RUST_TYPE)/release
|
||||
else
|
||||
STATIC_COMPILEDIR := $(STATIC_TARGET_DIR)/$(DEB_HOST_RUST_TYPE)/debug
|
||||
endif
|
||||
# end sync with Makefile!
|
||||
|
||||
export CARGO=/usr/share/cargo/bin/cargo
|
||||
CARGO=/usr/share/cargo/bin/cargo
|
||||
|
||||
export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS
|
||||
export DEB_HOST_RUST_TYPE DEB_HOST_GNU_TYPE
|
||||
@ -38,14 +28,6 @@ override_dh_auto_configure:
|
||||
@perl -ne 'if (/^version\s*=\s*"(\d+(?:\.\d+)+)"/) { my $$v_cargo = $$1; my $$v_deb = "$(DEB_VERSION_UPSTREAM)"; \
|
||||
die "ERROR: d/changelog <-> Cargo.toml version mismatch: $$v_cargo != $$v_deb\n" if $$v_cargo ne $$v_deb; exit(0); }' Cargo.toml
|
||||
$(CARGO) prepare-debian $(CURDIR)/debian/cargo_registry --link-from-system
|
||||
# add a new config for static building, sync with Makefile!
|
||||
cp debian/cargo_home/config.toml debian/cargo_home/config.static.toml
|
||||
sed -ri -e 's!^(rustflags = .*)\]$$!\1, "-C", "target-feature=+crt-static", "-L", "$(STATIC_COMPILEDIR)/deps-stubs/"\]!' debian/cargo_home/config.static.toml
|
||||
# `cargo build` and `cargo install` have different config precedence, symlink
|
||||
# the wrapper config into a place where `build` picks it up as well..
|
||||
# https://doc.rust-lang.org/cargo/commands/cargo-install.html#configuration-discovery
|
||||
mkdir -p .cargo
|
||||
ln -s $(CARGO_HOME)/config.toml $(CURDIR)/.cargo/config.toml
|
||||
dh_auto_configure
|
||||
|
||||
override_dh_auto_build:
|
||||
@ -60,14 +42,11 @@ override_dh_auto_install:
|
||||
dh_auto_install -- \
|
||||
PROXY_USER=backup \
|
||||
LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)
|
||||
mkdir -p debian/proxmox-backup-client-static/usr/bin
|
||||
mv debian/tmp/usr/bin/proxmox-backup-client-static debian/proxmox-backup-client-static/usr/bin/proxmox-backup-client
|
||||
mv debian/tmp/usr/bin/pxar-static debian/proxmox-backup-client-static/usr/bin/pxar
|
||||
|
||||
override_dh_installsystemd:
|
||||
dh_installsystemd -pproxmox-backup-server proxmox-backup-daily-update.timer
|
||||
# note: we start/try-reload-restart services manually in postinst
|
||||
dh_installsystemd --no-start --no-restart-after-upgrade --no-stop-on-upgrade
|
||||
dh_installsystemd --no-start --no-restart-after-upgrade
|
||||
|
||||
override_dh_fixperms:
|
||||
dh_fixperms --exclude sg-tape-cmd
|
||||
|
||||
@ -1,65 +1,55 @@
|
||||
include ../defines.mk
|
||||
|
||||
GENERATED_SYNOPSIS := \
|
||||
config/acl/roles.rst \
|
||||
config/datastore/config.rst \
|
||||
config/domains/config.rst \
|
||||
proxmox-tape/synopsis.rst \
|
||||
proxmox-backup-client/synopsis.rst \
|
||||
proxmox-backup-client/catalog-shell-synopsis.rst \
|
||||
proxmox-backup-manager/synopsis.rst \
|
||||
proxmox-backup-debug/synopsis.rst \
|
||||
proxmox-file-restore/synopsis.rst \
|
||||
pxar/synopsis.rst \
|
||||
pmtx/synopsis.rst \
|
||||
pmt/synopsis.rst \
|
||||
config/media-pool/config.rst \
|
||||
config/notifications-priv/config.rst \
|
||||
config/notifications/config.rst \
|
||||
config/tape/config.rst \
|
||||
config/tape-job/config.rst \
|
||||
config/user/config.rst \
|
||||
config/remote/config.rst \
|
||||
config/sync/config.rst \
|
||||
config/tape-job/config.rst \
|
||||
config/tape/config.rst \
|
||||
config/user/config.rst \
|
||||
config/verification/config.rst \
|
||||
config/prune/config.rst \
|
||||
pmt/synopsis.rst \
|
||||
pmtx/synopsis.rst \
|
||||
proxmox-backup-client/catalog-shell-synopsis.rst \
|
||||
proxmox-backup-client/synopsis.rst \
|
||||
proxmox-backup-debug/synopsis.rst \
|
||||
proxmox-backup-manager/synopsis.rst \
|
||||
proxmox-file-restore/synopsis.rst \
|
||||
proxmox-tape/synopsis.rst \
|
||||
pxar/synopsis.rst \
|
||||
config/acl/roles.rst \
|
||||
config/datastore/config.rst \
|
||||
config/domains/config.rst
|
||||
|
||||
MAN1_PAGES := \
|
||||
pbs3to4.1 \
|
||||
pmt.1 \
|
||||
pmtx.1 \
|
||||
proxmox-backup-client.1 \
|
||||
proxmox-backup-debug.1 \
|
||||
proxmox-backup-manager.1 \
|
||||
proxmox-backup-proxy.1 \
|
||||
proxmox-file-restore.1 \
|
||||
proxmox-tape.1 \
|
||||
pxar.1 \
|
||||
pmtx.1 \
|
||||
pmt.1 \
|
||||
proxmox-tape.1 \
|
||||
proxmox-backup-proxy.1 \
|
||||
proxmox-backup-client.1 \
|
||||
proxmox-backup-manager.1 \
|
||||
proxmox-file-restore.1 \
|
||||
proxmox-backup-debug.1 \
|
||||
pbs2to3.1 \
|
||||
|
||||
# FIXME: prefix all man pages that are not directly relating to an existing executable with
|
||||
# `proxmox-backup.`, like the newer added proxmox-backup.node.cfg but add backwards compatible
|
||||
# symlinks, e.g. with a "5pbs" man page "suffix section".
|
||||
MAN5_PAGES := \
|
||||
acl.cfg.5 \
|
||||
datastore.cfg.5 \
|
||||
domains.cfg.5 \
|
||||
media-pool.cfg.5 \
|
||||
proxmox-backup.node.cfg.5 \
|
||||
notifications-priv.cfg.5 \
|
||||
notifications.cfg.5 \
|
||||
tape.cfg.5 \
|
||||
tape-job.cfg.5 \
|
||||
acl.cfg.5 \
|
||||
user.cfg.5 \
|
||||
remote.cfg.5 \
|
||||
sync.cfg.5 \
|
||||
tape-job.cfg.5 \
|
||||
tape.cfg.5 \
|
||||
user.cfg.5 \
|
||||
verification.cfg.5 \
|
||||
prune.cfg.5 \
|
||||
datastore.cfg.5 \
|
||||
domains.cfg.5
|
||||
|
||||
PRUNE_SIMULATOR_FILES := \
|
||||
prune-simulator/index.html \
|
||||
prune-simulator/clear-trigger.png \
|
||||
prune-simulator/documentation.html \
|
||||
prune-simulator/prune-simulator.js \
|
||||
prune-simulator/clear-trigger.png \
|
||||
prune-simulator/prune-simulator.js
|
||||
|
||||
PRUNE_SIMULATOR_JS_SOURCE := \
|
||||
/usr/share/javascript/proxmox-widget-toolkit-dev/Toolkit.js \
|
||||
@ -91,15 +81,15 @@ API_VIEWER_FILES := \
|
||||
/usr/share/javascript/proxmox-widget-toolkit-dev/APIViewer.js \
|
||||
|
||||
# Sphinx documentation setup
|
||||
SPHINXOPTS = -E
|
||||
SPHINXOPTS =
|
||||
SPHINXBUILD = sphinx-build
|
||||
BUILDDIR = output
|
||||
|
||||
ifeq ($(BUILD_MODE), release)
|
||||
COMPILEDIR := ../target/$(DEB_HOST_RUST_TYPE)/release
|
||||
COMPILEDIR := ../target/release
|
||||
SPHINXOPTS += -t release
|
||||
else
|
||||
COMPILEDIR := ../target/$(DEB_HOST_RUST_TYPE)/debug
|
||||
COMPILEDIR := ../target/debug
|
||||
SPHINXOPTS += -t devbuild
|
||||
endif
|
||||
|
||||
@ -148,9 +138,9 @@ lto-barcode/lto-barcode-generator.js: ${LTO_BARCODE_JS_SOURCE}
|
||||
mv $@.tmp $@
|
||||
|
||||
.PHONY: html
|
||||
html: ${GENERATED_SYNOPSIS} images/proxmox-logo.svg _static/custom.css conf.py ${PRUNE_SIMULATOR_FILES} ${LTO_BARCODE_FILES} ${API_VIEWER_SOURCES}
|
||||
html: ${GENERATED_SYNOPSIS} images/proxmox-logo.svg custom.css conf.py ${PRUNE_SIMULATOR_FILES} ${LTO_BARCODE_FILES} ${API_VIEWER_SOURCES}
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
|
||||
install -m 0644 _static/custom.js _static/custom.css images/proxmox-logo.svg $(BUILDDIR)/html/_static/
|
||||
install -m 0644 custom.js custom.css images/proxmox-logo.svg $(BUILDDIR)/html/_static/
|
||||
install -dm 0755 $(BUILDDIR)/html/prune-simulator
|
||||
install -m 0644 ${PRUNE_SIMULATOR_FILES} $(BUILDDIR)/html/prune-simulator
|
||||
install -dm 0755 $(BUILDDIR)/html/lto-barcode
|
||||
|
||||
@ -88,7 +88,7 @@ class ReflabelMapper(Builder):
|
||||
#pprint(vars(node))
|
||||
|
||||
if hasattr(node, 'expect_referenced_by_id') and len(node['ids']) > 1: # explicit labels
|
||||
filename = str(self.env.doc2path(docname))
|
||||
filename = self.env.doc2path(docname)
|
||||
filename_html = re.sub('.rst', '.html', filename)
|
||||
|
||||
# node['ids'][0] contains a normalized version of the
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
.. _client_usage:
|
||||
|
||||
Backup Client Usage
|
||||
===================
|
||||
|
||||
The command-line client for `Proxmox Backup`_ Server is called
|
||||
The command line client for Proxmox Backup Server is called
|
||||
:command:`proxmox-backup-client`.
|
||||
|
||||
.. _client_repository:
|
||||
@ -25,12 +23,9 @@ port (for example, with NAT and port forwarding configurations).
|
||||
Note that if the server uses an IPv6 address, you have to write it with square
|
||||
brackets (for example, `[fe80::01]`).
|
||||
|
||||
You can pass the repository with the ``--repository`` command-line option, or
|
||||
You can pass the repository with the ``--repository`` command line option, or
|
||||
by setting the ``PBS_REPOSITORY`` environment variable.
|
||||
|
||||
The web interface provides copyable repository text in the datastore summary
|
||||
with the `Show Connection Information` button.
|
||||
|
||||
Below are some examples of valid repositories and their corresponding real
|
||||
values:
|
||||
|
||||
@ -46,24 +41,6 @@ user\@pbs!token@host:store ``user@pbs!token`` host:8007 store
|
||||
[ff80::51]:1234:mydatastore ``root@pam`` [ff80::51]:1234 mydatastore
|
||||
================================ ================== ================== ===========
|
||||
|
||||
.. _statically_linked_client:
|
||||
|
||||
Statically Linked Backup Client
|
||||
-------------------------------
|
||||
|
||||
A statically linked version of the Proxmox Backup client is available for Linux
|
||||
based systems where the regular client is not available. Please note that it is
|
||||
recommended to use the regular client when possible, as the statically linked
|
||||
client is not a full replacement. For example, name resolution will not be
|
||||
performed via the mechanisms provided by libc, but uses a resolver written
|
||||
purely in the Rust programming language. Therefore, features and modules
|
||||
provided by Name Service Switch cannot be used.
|
||||
|
||||
The statically linked client is available via the ``pbs-client`` repository as
|
||||
described in the :ref:`installation <install_pbc>` section.
|
||||
|
||||
.. _environment-variables:
|
||||
|
||||
Environment Variables
|
||||
---------------------
|
||||
|
||||
@ -109,43 +86,6 @@ Environment Variables
|
||||
you can add arbitrary comments after the first newline.
|
||||
|
||||
|
||||
System and Service Credentials
|
||||
------------------------------
|
||||
|
||||
Some of the :ref:`environment variables <environment-variables>` above can be
|
||||
set using `system and service credentials <https://systemd.io/CREDENTIALS/>`_
|
||||
instead.
|
||||
|
||||
============================ ==============================================
|
||||
Environment Variable Credential Name Equivalent
|
||||
============================ ==============================================
|
||||
``PBS_REPOSITORY`` ``proxmox-backup-client.repository``
|
||||
``PBS_PASSWORD`` ``proxmox-backup-client.password``
|
||||
``PBS_ENCRYPTION_PASSWORD`` ``proxmox-backup-client.encryption-password``
|
||||
``PBS_FINGERPRINT`` ``proxmox-backup-client.fingerprint``
|
||||
============================ ==============================================
|
||||
|
||||
For example, the repository password can be stored in an encrypted file as
|
||||
follows:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemd-ask-password -n | systemd-creds encrypt --name=proxmox-backup-client.password - my-api-token.cred
|
||||
|
||||
The credential can then be reused inside of unit files or in a transient scope
|
||||
unit as follows:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# systemd-run --pipe --wait \
|
||||
--property=LoadCredentialEncrypted=proxmox-backup-client.password:/full/path/to/my-api-token.cred \
|
||||
--property=SetCredential=proxmox-backup-client.repository:'my_default_repository' \
|
||||
proxmox-backup-client ...
|
||||
|
||||
Additionally, system credentials (e.g. passed down from the hypervisor to a
|
||||
virtual machine via SMBIOS type 11) can be loaded on a service via
|
||||
`LoadCredential=` as described in the manual page ``systemd.exec(5)``.
|
||||
|
||||
Output Format
|
||||
-------------
|
||||
|
||||
@ -226,7 +166,6 @@ the client. The format is:
|
||||
|
||||
<archive-name>.<type>:<source-path>
|
||||
|
||||
The ``archive-name`` must contain alphanumerics, hyphens and underscores only.
|
||||
Common types are ``.pxar`` for file archives and ``.img`` for block
|
||||
device images. To create a backup of a block device, run the following command:
|
||||
|
||||
@ -315,7 +254,7 @@ Restoring this backup will result in:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# ls -aR restored
|
||||
ls -aR restored
|
||||
restored/:
|
||||
. .. .pxarexclude subfolder0 subfolder1
|
||||
|
||||
@ -325,69 +264,6 @@ Restoring this backup will result in:
|
||||
restored/subfolder1:
|
||||
. .. file2
|
||||
|
||||
The same syntax can also be used directly in the cli with the ``--exclude``
|
||||
parameter. For example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-client backup archive-name.pxar:./linux --exclude /usr
|
||||
|
||||
Multiple paths can be excluded like this:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-client backup archive-name.pxar:./linux --exclude=/usr --exclude=/rust
|
||||
|
||||
.. _client_change_detection_mode:
|
||||
|
||||
Change Detection Mode
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
File-based backups containing a lot of data can take a long time, as the default
|
||||
behavior for the Proxmox backup client is to read all data and encode it into a
|
||||
pxar archive.
|
||||
The encoded stream is split into variable sized chunks. For each chunk, a digest
|
||||
is calculated and used to decide whether the chunk needs to be uploaded or can
|
||||
be indexed without upload, as it is already available on the server (and
|
||||
therefore deduplicated). If the backed up files are largely unchanged,
|
||||
re-reading and then detecting the corresponding chunks don't need to be uploaded
|
||||
after all is time consuming and undesired.
|
||||
|
||||
The backup client's ``change-detection-mode`` can be switched from default to
|
||||
``metadata`` based detection to reduce limitations as described above,
|
||||
instructing the client to avoid re-reading files with unchanged metadata
|
||||
whenever possible.
|
||||
When using this mode, instead of the regular pxar archive, the backup snapshot
|
||||
is stored into two separate files: the ``mpxar`` containing the archive's
|
||||
metadata and the ``ppxar`` containing a concatenation of the file contents. This
|
||||
splitting allows for efficient metadata lookups. When creating the backup
|
||||
archives, the current file metadata is compared to the one looked up in the
|
||||
previous ``mpxar`` archive. The operational details are explained more in depth
|
||||
in the :ref:`technical documentation <change-detection-mode-metadata>`.
|
||||
|
||||
Using the ``change-detection-mode`` set to ``data`` allows to create the same
|
||||
split archive as when using the ``metadata`` mode, but without using a previous
|
||||
reference and therefore reencoding all file payloads. For details of this mode
|
||||
please see the :ref:`technical documentation <change-detection-mode-data>`.
|
||||
|
||||
.. _client_change_detection_mode_table:
|
||||
|
||||
============ ===================================================================
|
||||
Mode Description
|
||||
============ ===================================================================
|
||||
``legacy`` (current default): Encode all files into a self contained pxar
|
||||
archive.
|
||||
``data`` Encode all files into a split data and metadata pxar archive.
|
||||
``metadata`` Encode changed files, reuse unchanged from previous snapshot,
|
||||
creating a split archive.
|
||||
============ ===================================================================
|
||||
|
||||
The following shows an example for the client invocation with the `metadata`
|
||||
mode:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-client backup archive-name.pxar:./linux --change-detection-mode=metadata
|
||||
|
||||
.. _client_encryption:
|
||||
|
||||
@ -515,7 +391,7 @@ To set up a master key:
|
||||
It is recommended that you keep your master key safe, but easily accessible, in
|
||||
order for quick disaster recovery. For this reason, the best place to store it
|
||||
is in your password manager, where it is immediately recoverable. As a backup to
|
||||
this, you should also save the key to a USB flash drive and store that in a secure
|
||||
this, you should also save the key to a USB drive and store that in a secure
|
||||
place. This way, it is detached from any system, but is still easy to recover
|
||||
from, in case of emergency. Finally, in preparation for the worst case scenario,
|
||||
you should also consider keeping a paper copy of your master key locked away in
|
||||
@ -528,8 +404,6 @@ version of your master key. The following command sends the output of the
|
||||
proxmox-backup-client key paperkey --output-format text > qrkey.txt
|
||||
|
||||
|
||||
.. _client_restoring_data:
|
||||
|
||||
Restoring Data
|
||||
--------------
|
||||
|
||||
@ -598,7 +472,7 @@ to use the interactive recovery shell.
|
||||
bin boot dev etc home lib lib32
|
||||
...
|
||||
|
||||
The interactive recovery shell is a minimal command-line interface that
|
||||
The interactive recovery shell is a minimal command line interface that
|
||||
utilizes the metadata stored in the catalog to quickly list, navigate and
|
||||
search for files in a file archive.
|
||||
To restore files, you can select them individually or match them with a glob
|
||||
@ -755,28 +629,28 @@ following retention options are available:
|
||||
Keep the last ``<N>`` backup snapshots.
|
||||
|
||||
``--keep-hourly <N>``
|
||||
Keep backups for the last ``<N>`` hours. If there is more than one backup for
|
||||
a single hour, only the latest is kept. Hours without backups do not count.
|
||||
Keep backups for the last ``<N>`` hours. If there is more than one
|
||||
backup for a single hour, only the latest is kept.
|
||||
|
||||
``--keep-daily <N>``
|
||||
Keep backups for the last ``<N>`` days. If there is more than one backup for a
|
||||
single day, only the latest is kept. Days without backups do not count.
|
||||
Keep backups for the last ``<N>`` days. If there is more than one
|
||||
backup for a single day, only the latest is kept.
|
||||
|
||||
``--keep-weekly <N>``
|
||||
Keep backups for the last ``<N>`` weeks. If there is more than one backup for
|
||||
a single week, only the latest is kept. Weeks without backup do not count.
|
||||
Keep backups for the last ``<N>`` weeks. If there is more than one
|
||||
backup for a single week, only the latest is kept.
|
||||
|
||||
.. note:: Weeks start on Monday and end on Sunday. The software
|
||||
uses the `ISO week date`_ system and handles weeks at
|
||||
the end of the year correctly.
|
||||
|
||||
``--keep-monthly <N>``
|
||||
Keep backups for the last ``<N>`` months. If there is more than one backup for
|
||||
a single month, only the latest is kept. Months without backups do not count.
|
||||
Keep backups for the last ``<N>`` months. If there is more than one
|
||||
backup for a single month, only the latest is kept.
|
||||
|
||||
``--keep-yearly <N>``
|
||||
Keep backups for the last ``<N>`` years. If there is more than one backup for
|
||||
a single year, only the latest is kept. Years without backups do not count.
|
||||
Keep backups for the last ``<N>`` years. If there is more than one
|
||||
backup for a single year, only the latest is kept.
|
||||
|
||||
The retention options are processed in the order given above. Each option
|
||||
only covers backups within its time period. The next option does not take care
|
||||
@ -841,25 +715,29 @@ Garbage Collection
|
||||
------------------
|
||||
|
||||
The ``prune`` command removes only the backup index files, not the data
|
||||
from the datastore. Deletion of unused backup data from the datastore is done by
|
||||
:ref:`garbage collection<_maintenance_gc>`. It is therefore recommended to
|
||||
schedule garbage collection tasks on a regular basis. The working principle of
|
||||
garbage collection is described in more details in the related :ref:`background
|
||||
section <gc_background>`.
|
||||
from the datastore. This task is left to the garbage collection
|
||||
command. It is recommended to carry out garbage collection on a regular basis.
|
||||
|
||||
To start garbage collection from the client side, run the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-client garbage-collect
|
||||
The garbage collection works in two phases. In the first phase, all
|
||||
data blocks that are still in use are marked. In the second phase,
|
||||
unused data blocks are removed.
|
||||
|
||||
.. note:: This command needs to read all existing backup index files
|
||||
and touches the complete chunk-store. This can take a long time
|
||||
depending on the number of chunks and the speed of the underlying
|
||||
disks.
|
||||
|
||||
The progress of the garbage collection will be displayed as shown in the example
|
||||
below:
|
||||
.. note:: The garbage collection will only remove chunks that haven't been used
|
||||
for at least one day (exactly 24h 5m). This grace period is necessary because
|
||||
chunks in use are marked by touching the chunk which updates the ``atime``
|
||||
(access time) property. Filesystems are mounted with the ``relatime`` option
|
||||
by default. This results in a better performance by only updating the
|
||||
``atime`` property if the last access has been at least 24 hours ago. The
|
||||
downside is that touching a chunk within these 24 hours will not always
|
||||
update its ``atime`` property.
|
||||
|
||||
Chunks in the grace period will be logged at the end of the garbage
|
||||
collection task as *Pending removals*.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
Backup Protocol
|
||||
===============
|
||||
|
||||
`Proxmox Backup`_ Server uses a REST-based API. While the management
|
||||
Proxmox Backup Server uses a REST-based API. While the management
|
||||
interface uses normal HTTP, the actual backup and restore interface uses
|
||||
HTTP/2 for improved performance. Both HTTP and HTTP/2 are well known
|
||||
standards, so the following section assumes that you are familiar with
|
||||
|
||||
@ -7,7 +7,7 @@ Introduction and Format
|
||||
-----------------------
|
||||
|
||||
Certain tasks, for example pruning and garbage collection, need to be
|
||||
performed on a regular basis. `Proxmox Backup`_ Server uses a format inspired
|
||||
performed on a regular basis. Proxmox Backup Server uses a format inspired
|
||||
by the systemd Time and Date Specification (see `systemd.time manpage`_)
|
||||
called `calendar events` for its schedules.
|
||||
|
||||
@ -89,11 +89,11 @@ Not all features of systemd calendar events are implemented:
|
||||
Notes on Scheduling
|
||||
-------------------
|
||||
|
||||
In Proxmox Backup, scheduling for most tasks is done in the
|
||||
In `Proxmox Backup`_, scheduling for most tasks is done in the
|
||||
`proxmox-backup-proxy`. This daemon checks all job schedules
|
||||
every minute, to see if any are due. This means that even though
|
||||
`calendar events` can contain seconds, it will only be checked
|
||||
once per minute.
|
||||
|
||||
Also, all schedules will be checked against the timezone set
|
||||
in the Proxmox Backup Server.
|
||||
in the `Proxmox Backup`_ server.
|
||||
|
||||
@ -9,7 +9,7 @@ own (self-signed) certificate. This certificate is used for encrypted
|
||||
communication with the host’s ``proxmox-backup-proxy`` service, for any API
|
||||
call between a user or backup-client and the web-interface.
|
||||
|
||||
Certificate verification when sending backups to a Proxmox Backup Server
|
||||
Certificate verification when sending backups to a `Proxmox Backup`_ server
|
||||
is either done based on pinning the certificate fingerprints in the storage/remote
|
||||
configuration, or by using certificates, signed by a trusted certificate authority.
|
||||
|
||||
@ -18,7 +18,7 @@ configuration, or by using certificates, signed by a trusted certificate authori
|
||||
Certificates for the API and SMTP
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Proxmox Backup stores its certificate and key in:
|
||||
`Proxmox Backup`_ stores its certificate and key in:
|
||||
|
||||
- ``/etc/proxmox-backup/proxy.pem``
|
||||
|
||||
@ -33,19 +33,21 @@ You have the following options for the certificate:
|
||||
commercial Certificate Authority (CA)).
|
||||
|
||||
3. Use an ACME provider like Let’s Encrypt to get a trusted certificate
|
||||
with automatic renewal; this is also integrated in the Proxmox Backup
|
||||
with automatic renewal; this is also integrated in the `Proxmox Backup`_
|
||||
API and web interface.
|
||||
|
||||
Certificates are managed through the Proxmox Backup
|
||||
web-interface/API or using the ``proxmox-backup-manager`` CLI tool.
|
||||
Certificates are managed through the `Proxmox Backup`_
|
||||
web-interface/API or using the the ``proxmox-backup-manager`` CLI tool.
|
||||
|
||||
.. _sysadmin_certs_upload_custom:
|
||||
|
||||
Upload Custom Certificate
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you already have a certificate which you want to use for a `Proxmox Backup`_
|
||||
host, you can simply upload that certificate over the web interface.
|
||||
If you already have a certificate which you want to use for a Proxmox
|
||||
Mail Gateway host, you can simply upload that certificate over the web
|
||||
interface.
|
||||
|
||||
|
||||
.. image:: images/screenshots/pbs-gui-certs-upload-custom.png
|
||||
:target: _images/pbs-gui-certs-upload-custom.png
|
||||
@ -59,9 +61,9 @@ Note that any certificate key files must not be password protected.
|
||||
Trusted certificates via Let’s Encrypt (ACME)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Proxmox Backup includes an implementation of the **A**\ utomatic
|
||||
`Proxmox Backup`_ includes an implementation of the **A**\ utomatic
|
||||
**C**\ ertificate **M**\ anagement **E**\ nvironment (**ACME**)
|
||||
protocol, allowing Proxmox Backup admins to use an ACME provider
|
||||
protocol, allowing `Proxmox Backup`_ admins to use an ACME provider
|
||||
like Let’s Encrypt for easy setup of TLS certificates, which are
|
||||
accepted and trusted by modern operating systems and web browsers out of
|
||||
the box.
|
||||
@ -89,8 +91,8 @@ contact point for renewal-due or similar notifications from the ACME
|
||||
endpoint.
|
||||
|
||||
You can register or deactivate ACME accounts over the web interface
|
||||
``Certificates -> ACME Accounts`` or using the ``proxmox-backup-manager``
|
||||
command-line tool.
|
||||
``Certificates -> ACME Accounts`` or using the ``proxmox-backup-manager`` command
|
||||
line tool.
|
||||
|
||||
::
|
||||
|
||||
@ -110,7 +112,7 @@ ACME Plugins
|
||||
^^^^^^^^^^^^
|
||||
|
||||
The ACME plugin’s role is to provide automatic verification that you,
|
||||
and thus the Proxmox Backup Server under your operation, are the
|
||||
and thus the `Proxmox Backup`_ server under your operation, are the
|
||||
real owner of a domain. This is the basic building block of automatic
|
||||
certificate management.
|
||||
|
||||
@ -127,7 +129,7 @@ DNS record in the domain’s zone.
|
||||
:align: right
|
||||
:alt: Create ACME Account
|
||||
|
||||
Proxmox Backup supports both of those challenge types out of the
|
||||
`Proxmox Backup`_ supports both of those challenge types out of the
|
||||
box, you can configure plugins either over the web interface under
|
||||
``Certificates -> ACME Challenges``, or using the
|
||||
``proxmox-backup-manager acme plugin add`` command.
|
||||
@ -178,7 +180,7 @@ with Let’s Encrypts ACME.
|
||||
- There **must** be no other listener on port 80.
|
||||
|
||||
- The requested (sub)domain needs to resolve to a public IP of the
|
||||
Proxmox Backup host.
|
||||
`Proxmox Backup`_ host.
|
||||
|
||||
.. _sysadmin_certs_acme_dns_challenge:
|
||||
|
||||
@ -195,7 +197,7 @@ allows provisioning of ``TXT`` records via an API.
|
||||
Configuring ACME DNS APIs for validation
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Proxmox Backup re-uses the DNS plugins developed for the
|
||||
`Proxmox Backup`_ re-uses the DNS plugins developed for the
|
||||
``acme.sh`` [1]_ project. Please refer to its documentation for details
|
||||
on configuration of specific APIs.
|
||||
|
||||
@ -213,7 +215,7 @@ and entering the credential data to access your account over their API.
|
||||
your provider. Configuration values do not need to be quoted with
|
||||
single or double quotes; for some plugins that is even an error.
|
||||
|
||||
As there are many DNS providers and API endpoints, Proxmox Backup
|
||||
As there are many DNS providers and API endpoints, `Proxmox Backup`_
|
||||
automatically generates the form for the credentials, but not all
|
||||
providers are annotated yet. For those you will see a bigger text area,
|
||||
into which you simply need to copy all the credential’s
|
||||
@ -229,7 +231,7 @@ domain/DNS server, in case your primary/real DNS does not support
|
||||
provisioning via an API. Manually set up a permanent ``CNAME`` record
|
||||
for ``_acme-challenge.domain1.example`` pointing to
|
||||
``_acme-challenge.domain2.example``, and set the ``alias`` property in
|
||||
the Proxmox Backup node configuration file ``/etc/proxmox-backup/node.cfg``
|
||||
the `Proxmox Backup`_ node configuration file ``/etc/proxmox-backup/node.cfg``
|
||||
to ``domain2.example`` to allow the DNS server of ``domain2.example`` to
|
||||
validate all challenges for ``domain1.example``.
|
||||
|
||||
@ -276,13 +278,13 @@ expired or if it will expire in the next 30 days.
|
||||
|
||||
.. _manually_change_certificate_over_command_line:
|
||||
|
||||
Manually Change Certificate over the Command Line
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Manually Change Certificate over Command-Line
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you want to get rid of certificate verification warnings, you have to
|
||||
generate a valid certificate for your server.
|
||||
|
||||
Log in to your Proxmox Backup via ssh or use the console:
|
||||
Log in to your `Proxmox Backup`_ via ssh or use the console:
|
||||
|
||||
::
|
||||
|
||||
@ -307,9 +309,9 @@ Follow the instructions on the screen, for example:
|
||||
After you have finished the certificate request, you have to send the
|
||||
file ``req.pem`` to your Certification Authority (CA). The CA will issue
|
||||
the certificate (BASE64 encoded), based on your request – save this file
|
||||
as ``cert.pem`` to your Proxmox Backup.
|
||||
as ``cert.pem`` to your `Proxmox Backup`_.
|
||||
|
||||
To activate the new certificate, do the following on your Proxmox Backup
|
||||
To activate the new certificate, do the following on your `Proxmox Backup`_
|
||||
|
||||
::
|
||||
|
||||
@ -326,9 +328,9 @@ Test your new certificate, using your browser.
|
||||
|
||||
.. note::
|
||||
|
||||
To transfer files to and from your Proxmox Backup, you can use
|
||||
To transfer files to and from your `Proxmox Backup`_, you can use
|
||||
secure copy: If your desktop runs Linux, you can use the ``scp``
|
||||
command-line tool. If your desktop PC runs windows, please use an scp
|
||||
command line tool. If your desktop PC runs windows, please use an scp
|
||||
client like WinSCP (see https://winscp.net/).
|
||||
|
||||
.. [1]
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
Command-line Tools
|
||||
Command Line Tools
|
||||
------------------
|
||||
|
||||
``proxmox-backup-client``
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
Command Syntax
|
||||
==============
|
||||
|
||||
.. NOTE:: Logging verbosity for the command-line tools can be controlled with the
|
||||
.. NOTE:: Logging verbosity for the command line tools can be controlled with the
|
||||
``PBS_LOG`` (for ``pxar``: ``PXAR_LOG``) environment variable. Possible values are `off`,
|
||||
`error`, `warn`, `info`, `debug` and `trace` with `info` being the default.
|
||||
|
||||
|
||||
18
docs/conf.py
@ -71,7 +71,7 @@ master_doc = 'index'
|
||||
|
||||
# General information about the project.
|
||||
project = 'Proxmox Backup'
|
||||
copyright = '2019-2025, Proxmox Server Solutions GmbH'
|
||||
copyright = '2019-2022, Proxmox Server Solutions GmbH'
|
||||
author = 'Proxmox Support Team'
|
||||
|
||||
# The version info for the project you're documenting acts as a replacement for
|
||||
@ -102,22 +102,18 @@ man_pages = [
|
||||
('pxar/man1', 'pxar', 'Proxmox File Archive CLI Tool', [author], 1),
|
||||
('pmt/man1', 'pmt', 'Control Linux Tape Devices', [author], 1),
|
||||
('pmtx/man1', 'pmtx', 'Control SCSI media changer devices (tape autoloaders)', [author], 1),
|
||||
('pbs3to4/man1', 'pbs3to4', 'Proxmox Backup Server upgrade checker script for 3.4+ to current 4.x major upgrades', [author], 1),
|
||||
('pbs2to3/man1', 'pbs2to3', 'Proxmox Backup Server upgrade checker script for 2.4+ to current 3.x major upgrades', [author], 1),
|
||||
# configs
|
||||
('config/acl/man5', 'acl.cfg', 'Access Control Configuration', [author], 5),
|
||||
('config/datastore/man5', 'datastore.cfg', 'Datastore Configuration', [author], 5),
|
||||
('config/domains/man5', 'domains.cfg', 'Realm Configuration', [author], 5),
|
||||
('config/media-pool/man5', 'media-pool.cfg', 'Media Pool Configuration', [author], 5),
|
||||
('config/node/man5', 'proxmox-backup.node.cfg', 'Proxmox Backup Server - Node Configuration', [author], 5),
|
||||
('config/remote/man5', 'remote.cfg', 'Remote Server Configuration', [author], 5),
|
||||
('config/sync/man5', 'sync.cfg', 'Synchronization Job Configuration', [author], 5),
|
||||
('config/tape-job/man5', 'tape-job.cfg', 'Tape Job Configuration', [author], 5),
|
||||
('config/tape/man5', 'tape.cfg', 'Tape Drive and Changer Configuration', [author], 5),
|
||||
('config/user/man5', 'user.cfg', 'User Configuration', [author], 5),
|
||||
('config/verification/man5', 'verification.cfg', 'Verification Job Configuration', [author], 5),
|
||||
('config/prune/man5', 'prune.cfg', 'Prune Job Configuration', [author], 5),
|
||||
('config/notifications/man5', 'notifications.cfg', 'Notification target/matcher configuration', [author], 5),
|
||||
('config/notifications-priv/man5', 'notifications-priv.cfg', 'Notification target secrets', [author], 5),
|
||||
]
|
||||
|
||||
|
||||
@ -126,7 +122,7 @@ man_pages = [
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = 'en'
|
||||
language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
@ -203,12 +199,11 @@ html_theme_options = {
|
||||
'show_powered_by': False,
|
||||
|
||||
'extra_nav_links': {
|
||||
'Proxmox Homepage': 'https://www.proxmox.com',
|
||||
'Proxmox Homepage': 'https://proxmox.com',
|
||||
'PDF': 'proxmox-backup.pdf',
|
||||
'API Viewer' : 'api-viewer/index.html',
|
||||
'Prune Simulator' : 'prune-simulator/index.html',
|
||||
'LTO Barcode Generator' : 'lto-barcode/index.html',
|
||||
'Proxmox Backup Server Wiki' : 'https://pbs.proxmox.com'
|
||||
},
|
||||
|
||||
'sidebar_width': '320px',
|
||||
@ -269,9 +264,6 @@ html_static_path = ['_static']
|
||||
html_js_files = [
|
||||
'custom.js',
|
||||
]
|
||||
html_css_files = [
|
||||
'custom.css',
|
||||
]
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
# .htaccess) here, relative to this directory. These files are copied
|
||||
@ -423,8 +415,6 @@ latex_logo = "images/proxmox-logo.png"
|
||||
#
|
||||
# latex_domain_indices = True
|
||||
|
||||
latex_table_style = ['booktabs', 'colorrows']
|
||||
|
||||
|
||||
# -- Options for Epub output ----------------------------------------------
|
||||
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
=======
|
||||
acl.cfg
|
||||
=======
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
=============
|
||||
datastore.cfg
|
||||
=============
|
||||
|
||||
@ -23,5 +23,5 @@ For LDAP realms, the LDAP bind password is stored in ``ldap_passwords.json``.
|
||||
user-classes inetorgperson,posixaccount,person,user
|
||||
|
||||
|
||||
You can use the ``proxmox-backup-manager openid``, ``proxmox-backup-manager
|
||||
ldap`` and ``proxmox-backup-manager ad`` commands to manipulate this file.
|
||||
You can use the ``proxmox-backup-manager openid`` and ``proxmox-backup-manager ldap`` commands to manipulate
|
||||
this file.
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
===========
|
||||
domains.cfg
|
||||
===========
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
==========================
|
||||
media-pool.cfg
|
||||
==========================
|
||||
|
||||
@ -1,49 +0,0 @@
|
||||
The file contains these options:
|
||||
|
||||
:acme: The ACME account to use on this node.
|
||||
|
||||
:acmedomain0: ACME domain.
|
||||
|
||||
:acmedomain1: ACME domain.
|
||||
|
||||
:acmedomain2: ACME domain.
|
||||
|
||||
:acmedomain3: ACME domain.
|
||||
|
||||
:acmedomain4: ACME domain.
|
||||
|
||||
:http-proxy: Set proxy for apt and subscription checks.
|
||||
|
||||
:email-from: Fallback email from which notifications will be sent.
|
||||
|
||||
:ciphers-tls-1.3: List of TLS ciphers for TLS 1.3 that will be used by the proxy. Colon-separated and in descending priority (https://docs.openssl.org/master/man1/openssl-ciphers/). (Proxy has to be restarted for changes to take effect.)
|
||||
|
||||
:ciphers-tls-1.2: List of TLS ciphers for TLS <= 1.2 that will be used by the proxy. Colon-separated and in descending priority (https://docs.openssl.org/master/man1/openssl-ciphers/). (Proxy has to be restarted for changes to take effect.)
|
||||
|
||||
:default-lang: Default language used in the GUI.
|
||||
|
||||
:description: Node description.
|
||||
|
||||
:task-log-max-days: Maximum days to keep task logs.
|
||||
|
||||
For example:
|
||||
|
||||
::
|
||||
|
||||
acme: local
|
||||
acmedomain0: first.domain.com
|
||||
acmedomain1: second.domain.com
|
||||
acmedomain2: third.domain.com
|
||||
acmedomain3: fourth.domain.com
|
||||
acmedomain4: fifth.domain.com
|
||||
http-proxy: internal.proxy.com
|
||||
email-from: proxmox@mail.com
|
||||
ciphers-tls-1.3: TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_CHACHA20_POLY1305_SHA256
|
||||
ciphers-tls-1.2: RSA_WITH_AES_128_CCM:DHE_RSA_WITH_AES_128_CCM
|
||||
default-lang: en
|
||||
description: Primary PBS instance
|
||||
task-log-max-days: 30
|
||||
|
||||
|
||||
You can use the ``proxmox-backup-manager node`` command to manipulate
|
||||
this file.
|
||||
@ -1,18 +0,0 @@
|
||||
:orphan:
|
||||
|
||||
========
|
||||
node.cfg
|
||||
========
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The file /etc/proxmox-backup/node.cfg is a configuration file for Proxmox
|
||||
Backup Server. It contains the general configuration regarding this node.
|
||||
|
||||
Options
|
||||
=======
|
||||
|
||||
.. include:: format.rst
|
||||
|
||||
.. include:: ../../pbs-copyright.rst
|
||||
@ -1 +0,0 @@
|
||||
This file contains protected credentials for notification targets.
|
||||
@ -1,24 +0,0 @@
|
||||
:orphan:
|
||||
|
||||
======================
|
||||
notifications-priv.cfg
|
||||
======================
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The file /etc/proxmox-backup/notifications-priv.cfg is a configuration file
|
||||
for Proxmox Backup Server. It contains the configuration for the
|
||||
notification system configuration.
|
||||
|
||||
File Format
|
||||
===========
|
||||
|
||||
.. include:: format.rst
|
||||
|
||||
Options
|
||||
=======
|
||||
|
||||
.. include:: config.rst
|
||||
|
||||
.. include:: ../../pbs-copyright.rst
|
||||
@ -1,2 +0,0 @@
|
||||
This file contains configuration for notification targets and notification
|
||||
matchers.
|
||||
@ -1,24 +0,0 @@
|
||||
:orphan:
|
||||
|
||||
==================
|
||||
notifications.cfg
|
||||
==================
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The file /etc/proxmox-backup/notifications.cfg is a configuration file
|
||||
for Proxmox Backup Server. It contains the configuration for the
|
||||
notification system configuration.
|
||||
|
||||
File Format
|
||||
===========
|
||||
|
||||
.. include:: format.rst
|
||||
|
||||
Options
|
||||
=======
|
||||
|
||||
.. include:: config.rst
|
||||
|
||||
.. include:: ../../pbs-copyright.rst
|
||||
@ -1,14 +0,0 @@
|
||||
Each entry starts with the header ``prune: <name>``, followed by the job
|
||||
configuration options.
|
||||
|
||||
::
|
||||
|
||||
prune: prune-store2
|
||||
schedule mon..fri 10:30
|
||||
store my-datastore
|
||||
|
||||
prune: ...
|
||||
|
||||
|
||||
You can use the ``proxmox-backup-manager prune-job`` command to manipulate this
|
||||
file.
|
||||
@ -1,23 +0,0 @@
|
||||
:orphan:
|
||||
|
||||
=========
|
||||
prune.cfg
|
||||
=========
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
The file /etc/proxmox-backup/prune.cfg is a configuration file for Proxmox
|
||||
Backup Server. It contains the prune job configuration.
|
||||
|
||||
File Format
|
||||
===========
|
||||
|
||||
.. include:: format.rst
|
||||
|
||||
Options
|
||||
=======
|
||||
|
||||
.. include:: config.rst
|
||||
|
||||
.. include:: ../../pbs-copyright.rst
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
==========
|
||||
remote.cfg
|
||||
==========
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
========
|
||||
sync.cfg
|
||||
========
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
============
|
||||
tape-job.cfg
|
||||
============
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
========
|
||||
tape.cfg
|
||||
========
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
========
|
||||
user.cfg
|
||||
========
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
================
|
||||
verification.cfg
|
||||
================
|
||||
@ -7,8 +5,8 @@ verification.cfg
|
||||
Description
|
||||
===========
|
||||
|
||||
The file /etc/proxmox-backup/verification.cfg is a configuration file for
|
||||
Proxmox Backup Server. It contains the verification job configuration.
|
||||
The file /etc/proxmox-backup/sync.cfg is a configuration file for Proxmox
|
||||
Backup Server. It contains the verification job configuration.
|
||||
|
||||
File Format
|
||||
===========
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
Configuration Files
|
||||
===================
|
||||
|
||||
All `Proxmox Backup`_ Server configuration files reside in the directory
|
||||
All Proxmox Backup Server configuration files reside in the directory
|
||||
``/etc/proxmox-backup/``.
|
||||
|
||||
|
||||
@ -67,61 +67,6 @@ Options
|
||||
|
||||
.. include:: config/media-pool/config.rst
|
||||
|
||||
``node.cfg``
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Options
|
||||
^^^^^^^
|
||||
|
||||
.. include:: config/node/format.rst
|
||||
|
||||
.. _notifications.cfg:
|
||||
|
||||
``notifications.cfg``
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
File Format
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. include:: config/notifications/format.rst
|
||||
|
||||
|
||||
Options
|
||||
^^^^^^^
|
||||
|
||||
.. include:: config/notifications/config.rst
|
||||
|
||||
.. _notifications_priv.cfg:
|
||||
|
||||
``notifications-priv.cfg``
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
File Format
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. include:: config/notifications-priv/format.rst
|
||||
|
||||
|
||||
Options
|
||||
^^^^^^^
|
||||
|
||||
.. include:: config/notifications-priv/config.rst
|
||||
|
||||
|
||||
``prune.cfg``
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
File Format
|
||||
^^^^^^^^^^^
|
||||
|
||||
.. include:: config/prune/format.rst
|
||||
|
||||
|
||||
Options
|
||||
^^^^^^^
|
||||
|
||||
.. include:: config/prune/config.rst
|
||||
|
||||
|
||||
``tape.cfg``
|
||||
~~~~~~~~~~~~
|
||||
|
||||
@ -10,15 +10,15 @@
|
||||
.. _Zstandard: https://en.wikipedia.org/wiki/Zstandard
|
||||
.. _Proxmox: https://www.proxmox.com
|
||||
.. _Proxmox Community Forum: https://forum.proxmox.com
|
||||
.. _Proxmox Virtual Environment: https://www.proxmox.com/proxmox-virtual-environment
|
||||
.. _Proxmox Backup: https://www.proxmox.com/proxmox-backup-server
|
||||
.. _Proxmox Backup Server Development List: https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
|
||||
.. _Proxmox Virtual Environment: https://www.proxmox.com/proxmox-ve
|
||||
.. _Proxmox Backup: https://pbs.proxmox.com/wiki/index.php/Main_Page
|
||||
.. _PBS Development List: https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
|
||||
.. _reStructuredText: https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html
|
||||
.. _Rust: https://www.rust-lang.org/
|
||||
.. _SHA-256: https://en.wikipedia.org/wiki/SHA-2
|
||||
.. _Sphinx: https://www.sphinx-doc.org
|
||||
.. _Virtual machine: https://en.wikipedia.org/wiki/Virtual_machine
|
||||
.. _APT: https://en.wikipedia.org/wiki/Advanced_Packaging_Tool
|
||||
.. _APT: http://en.wikipedia.org/wiki/Advanced_Packaging_Tool
|
||||
.. _QEMU: https://www.qemu.org/
|
||||
.. _LXC: https://linuxcontainers.org/lxc/introduction/
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
.. _GCM: https://en.wikipedia.org/wiki/Galois/Counter_Mode
|
||||
.. _AGPL3: https://www.gnu.org/licenses/agpl-3.0.en.html
|
||||
.. _Debian: https://www.debian.org/index.html
|
||||
.. _Debian Administrator's Handbook: https://debian-handbook.info/
|
||||
.. _Debian Administrator's Handbook: https://debian-handbook.info/download/stable/debian-handbook.pdf
|
||||
|
||||
.. _LVM: https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)
|
||||
.. _ZFS: https://en.wikipedia.org/wiki/ZFS
|
||||
@ -37,4 +37,4 @@
|
||||
.. _UTC: https://en.wikipedia.org/wiki/Coordinated_Universal_Time
|
||||
.. _ISO Week date: https://en.wikipedia.org/wiki/ISO_week_date
|
||||
|
||||
.. _systemd.time manpage: https://manpages.debian.org/stable/systemd/systemd.time.7.en.html
|
||||
.. _systemd.time manpage: https://manpages.debian.org/buster/systemd/systemd.time.7.en.html
|
||||
|
||||
@ -1,55 +0,0 @@
|
||||
External Metric Server
|
||||
----------------------
|
||||
|
||||
Proxmox Backup Server periodically sends various metrics about your host's memory,
|
||||
network and disk activity to configured external metric servers.
|
||||
|
||||
Currently supported are:
|
||||
|
||||
* InfluxDB (HTTP) (see https://docs.influxdata.com/influxdb/v2/ )
|
||||
* InfluxDB (UDP) (see https://docs.influxdata.com/influxdb/v1/ )
|
||||
|
||||
The external metric server definitions are saved in
|
||||
'/etc/proxmox-backup/metricserver.cfg', and can be edited through the web
|
||||
interface.
|
||||
|
||||
.. note::
|
||||
|
||||
Using HTTP is recommended as UDP support has been dropped in InfluxDB v2.
|
||||
|
||||
InfluxDB (HTTP) plugin configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The plugin can be configured to use the HTTP(s) API of InfluxDB 2.x.
|
||||
InfluxDB 1.8.x does contain a forwards compatible API endpoint for this v2 API.
|
||||
|
||||
Since InfluxDB's v2 API is only available with authentication, you have
|
||||
to generate a token that can write into the correct bucket and set it.
|
||||
|
||||
In the v2 compatible API of 1.8.x, you can use 'user:password' as token
|
||||
(if required), and can omit the 'organization' since that has no meaning in InfluxDB 1.x.
|
||||
|
||||
You can also set the maximum batch size (default 25000000 bytes) with the
|
||||
'max-body-size' setting (this corresponds to the InfluxDB setting with the
|
||||
same name).
|
||||
|
||||
InfluxDB (UDP) plugin configuration
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Proxmox Backup Server can also send data via UDP. This requires the InfluxDB
|
||||
server to be configured correctly. The MTU can also be configured here if
|
||||
necessary.
|
||||
|
||||
Here is an example configuration for InfluxDB (on your InfluxDB server):
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
[[udp]]
|
||||
enabled = true
|
||||
bind-address = "0.0.0.0:8089"
|
||||
database = "proxmox"
|
||||
batch-size = 1000
|
||||
batch-timeout = "1s"
|
||||
|
||||
With this configuration, the InfluxDB server listens on all IP addresses on
|
||||
port 8089, and writes the data in the *proxmox* database.
|
||||
10
docs/faq.rst
@ -4,7 +4,7 @@ FAQ
|
||||
What distribution is Proxmox Backup Server (PBS) based on?
|
||||
----------------------------------------------------------
|
||||
|
||||
`Proxmox Backup`_ Server is based on `Debian GNU/Linux <https://www.debian.org/>`_.
|
||||
Proxmox Backup Server is based on `Debian GNU/Linux <https://www.debian.org/>`_.
|
||||
|
||||
|
||||
Which platforms are supported as a backup source (client)?
|
||||
@ -26,7 +26,7 @@ future plans to support 32-bit processors.
|
||||
How long will my Proxmox Backup Server version be supported?
|
||||
------------------------------------------------------------
|
||||
|
||||
.. csv-table::
|
||||
.. csv-table:: Table Title
|
||||
:file: faq-release-support-table.csv
|
||||
:widths: 30 26 13 13 18
|
||||
:header-rows: 1
|
||||
@ -37,7 +37,7 @@ How can I upgrade Proxmox Backup Server to the next point release?
|
||||
Minor version upgrades, for example upgrading from Proxmox Backup Server in
|
||||
version 3.1 to 3.2 or 3.3, can be done just like any normal update.
|
||||
But, you should still check the `release notes
|
||||
<https://pbs.proxmox.com/wiki/index.php/Roadmap>`_ for any relevant notable,
|
||||
<https://pbs.proxmox.com/wiki/index.php/Roadmap>`_ for any relevant noteable,
|
||||
or breaking change.
|
||||
|
||||
For the update itself use either the Web UI *Node -> Updates* panel or
|
||||
@ -111,7 +111,3 @@ data is then deduplicated on the server. This minimizes both the storage
|
||||
consumed and the impact on the network. Each backup still references all
|
||||
data and such is a full backup. For details see the
|
||||
:ref:`Technical Overview <tech_design_overview>`
|
||||
|
||||
.. todo:: document our stability guarantees, i.e., the separate one for, in
|
||||
increasing duration of how long we'll support it: api compat, backup
|
||||
protocol compat and backup format compat
|
||||
|
||||
@ -8,53 +8,7 @@ Proxmox File Archive Format (``.pxar``)
|
||||
|
||||
.. graphviz:: pxar-format-overview.dot
|
||||
|
||||
.. _pxar-meta-format:
|
||||
|
||||
Proxmox File Archive Format - Meta (``.mpxar``)
|
||||
-----------------------------------------------
|
||||
|
||||
Pxar metadata archive with same structure as a regular pxar archive, with the
|
||||
exception of regular file payloads not being contained within the archive
|
||||
itself, but rather being stored as payload references to the corresponding pxar
|
||||
payload (``.ppxar``) file.
|
||||
|
||||
Can be used to lookup all the archive entries and metadata without the size
|
||||
overhead introduced by the file payloads.
|
||||
|
||||
.. graphviz:: meta-format-overview.dot
|
||||
|
||||
.. _ppxar-format:
|
||||
|
||||
Proxmox File Archive Format - Payload (``.ppxar``)
|
||||
--------------------------------------------------
|
||||
|
||||
Pxar payload file storing regular file payloads to be referenced and accessed by
|
||||
the corresponding pxar metadata (``.mpxar``) archive. Contains a concatenation
|
||||
of regular file payloads, each prefixed by a `PAYLOAD` header. Further, the
|
||||
actual referenced payload entries might be separated by padding (full/partial
|
||||
payloads not referenced), introduced when reusing chunks of a previous backup
|
||||
run, when chunk boundaries did not aligned to payload entry offsets.
|
||||
|
||||
All headers are stored as little-endian.
|
||||
|
||||
.. list-table::
|
||||
:widths: auto
|
||||
|
||||
* - ``PAYLOAD_START_MARKER``
|
||||
- header of ``[u8; 16]`` consisting of type hash and size;
|
||||
marks start
|
||||
* - ``PAYLOAD``
|
||||
- header of ``[u8; 16]`` cosisting of type hash and size;
|
||||
referenced by metadata archive
|
||||
* - Payload
|
||||
- raw regular file payload
|
||||
* - Padding
|
||||
- partial/full unreferenced payloads, caused by unaligned chunk boundary
|
||||
* - ...
|
||||
- further concatenation of payload header, payload and padding
|
||||
* - ``PAYLOAD_TAIL_MARKER``
|
||||
- header of ``[u8; 16]`` consisting of type hash and size;
|
||||
marks end
|
||||
.. _data-blob-format:
|
||||
|
||||
Data Blob Format (``.blob``)
|
||||
|
||||
12
docs/gui.rst
@ -1,7 +1,7 @@
|
||||
Graphical User Interface
|
||||
========================
|
||||
|
||||
`Proxmox Backup`_ Server offers an integrated, web-based interface to manage the
|
||||
Proxmox Backup Server offers an integrated, web-based interface to manage the
|
||||
server. This means that you can carry out all administration tasks through your
|
||||
web browser, and that you don't have to worry about installing extra management
|
||||
tools. The web interface also provides a built-in console, so if you prefer the
|
||||
@ -40,16 +40,6 @@ Proxmox Backup Server supports various languages and authentication back ends
|
||||
.. note:: For convenience, you can save the username on the client side, by
|
||||
selecting the "Save User name" checkbox at the bottom of the window.
|
||||
|
||||
.. _consent_banner:
|
||||
|
||||
Consent Banner
|
||||
^^^^^^^^^^^^^^
|
||||
|
||||
A custom consent banner that has to be accepted before login can be configured
|
||||
in **Configuration -> Other -> General -> Consent Text**. If there is no
|
||||
content, the consent banner will not be displayed. The text will be stored as a
|
||||
base64 string in the ``/etc/proxmox-backup/node.cfg`` config file.
|
||||
|
||||
|
||||
GUI Overview
|
||||
------------
|
||||
|
||||
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 162 KiB |
|
Before Width: | Height: | Size: 164 KiB |
|
Before Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
@ -34,7 +34,6 @@ in the section entitled "GNU Free Documentation License".
|
||||
maintenance.rst
|
||||
sysadmin.rst
|
||||
network-management.rst
|
||||
notifications.rst
|
||||
technical-overview.rst
|
||||
faq.rst
|
||||
|
||||
|
||||
@ -1,157 +0,0 @@
|
||||
.. _installation_medium:
|
||||
|
||||
Installation Medium
|
||||
-------------------
|
||||
|
||||
Proxmox Backup Server can be installed via
|
||||
:ref:`different methods <install_pbs>`. The recommended method is the
|
||||
usage of an installation medium, to simply boot the interactive
|
||||
installer.
|
||||
|
||||
Prepare Installation Medium
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Download the installer ISO image from |DOWNLOADS|.
|
||||
|
||||
The Proxmox Backup Server installation medium is a hybrid ISO image.
|
||||
It works in two ways:
|
||||
|
||||
- An ISO image file ready to burn to a DVD.
|
||||
|
||||
- A raw sector (IMG) image file ready to copy to a USB flash drive (USB stick).
|
||||
|
||||
Using a USB flash drive to install Proxmox Backup Server is the
|
||||
recommended way since it is the faster and more frequently available
|
||||
option these days.
|
||||
|
||||
Prepare a USB Flash Drive as Installation Medium
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The flash drive needs to have at least 2 GB of storage space.
|
||||
|
||||
.. note::
|
||||
|
||||
Do not use *UNetbootin*. It does not work with the Proxmox Backup
|
||||
Server installation image.
|
||||
|
||||
.. important::
|
||||
|
||||
Existing data on the USB flash drive will be overwritten.
|
||||
Therefore, make sure that it does not contain any still needed data
|
||||
and unmount it afterwards again before proceeding.
|
||||
|
||||
Instructions for GNU/Linux
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
On Unix-like operating systems use the ``dd`` command to copy the ISO
|
||||
image to the USB flash drive. First find the correct device name of the
|
||||
USB flash drive (see below). Then run the ``dd`` command. Depending on
|
||||
your environment, you will need to have root privileges to execute
|
||||
``dd``.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# dd bs=1M conv=fdatasync if=./proxmox-backup-server_*.iso of=/dev/XYZ
|
||||
|
||||
.. note::
|
||||
|
||||
Be sure to replace ``/dev/XYZ`` with the correct device name and adapt
|
||||
the input filename (*if*) path.
|
||||
|
||||
.. caution::
|
||||
|
||||
Be very careful, and do not overwrite the wrong disk!
|
||||
|
||||
Find the Correct USB Device Name
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
There are two ways to find out the name of the USB flash drive. The
|
||||
first one is to compare the last lines of the ``dmesg`` command output
|
||||
before and after plugging in the flash drive. The second way is to
|
||||
compare the output of the ``lsblk`` command. Open a terminal and run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# lsblk
|
||||
|
||||
Then plug in your USB flash drive and run the command again:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# lsblk
|
||||
|
||||
A new device will appear. This is the one you want to use. To be on the
|
||||
extra safe side check if the reported size matches your USB flash drive.
|
||||
|
||||
Instructions for macOS
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Open the terminal (query *Terminal* in Spotlight).
|
||||
|
||||
Convert the ``.iso`` file to ``.dmg`` format using the convert option of
|
||||
``hdiutil``, for example:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# hdiutil convert proxmox-backup-server_*.iso -format UDRW -o proxmox-backup-server_*.dmg
|
||||
|
||||
.. note::
|
||||
|
||||
macOS tends to automatically add ``.dmg`` to the output file name.
|
||||
|
||||
To get the current list of devices run the command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# diskutil list
|
||||
|
||||
Now insert the USB flash drive and run this command again to determine
|
||||
which device node has been assigned to it. (e.g., ``/dev/diskX``).
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# diskutil list
|
||||
# diskutil unmountDisk /dev/diskX
|
||||
|
||||
.. note::
|
||||
|
||||
replace *X* with the disk number from the last command.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# sudo dd if=proxmox-backup-server_*.dmg bs=1M of=/dev/rdiskX
|
||||
|
||||
.. note::
|
||||
|
||||
*rdiskX*, instead of *diskX*, in the last command is intended. It
|
||||
will increase the write speed.
|
||||
|
||||
Instructions for Windows
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Using Etcher
|
||||
^^^^^^^^^^^^
|
||||
|
||||
Etcher works out of the box. Download Etcher from https://etcher.io. It
|
||||
will guide you through the process of selecting the ISO and your USB
|
||||
flash drive.
|
||||
|
||||
Using Rufus
|
||||
^^^^^^^^^^^
|
||||
|
||||
Rufus is a more lightweight alternative, but you need to use the **DD
|
||||
mode** to make it work. Download Rufus from https://rufus.ie/. Either
|
||||
install it or use the portable version. Select the destination drive
|
||||
and the downloaded Proxmox ISO file.
|
||||
|
||||
.. important::
|
||||
|
||||
Once you click *Start*, you have to click *No* on the dialog asking to
|
||||
download a different version of Grub. In the next dialog select **DD mode**.
|
||||
|
||||
Use the Installation Medium
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Insert the created USB flash drive (or DVD) into your server. Continue
|
||||
by reading the :ref:`installer <using_the_installer>` chapter, which
|
||||
also describes possible boot issues.
|
||||
@ -7,9 +7,7 @@ Debian_ from the provided package repository.
|
||||
|
||||
.. include:: system-requirements.rst
|
||||
|
||||
.. include:: installation-media.rst
|
||||
|
||||
.. _install_pbs:
|
||||
.. include:: package-repositories.rst
|
||||
|
||||
Server Installation
|
||||
-------------------
|
||||
@ -18,50 +16,40 @@ The backup server stores the actual backed up data and provides a web based GUI
|
||||
for various management tasks such as disk management.
|
||||
|
||||
.. note:: You always need a backup server. It is not possible to use
|
||||
Proxmox Backup without the server part.
|
||||
`Proxmox Backup`_ without the server part.
|
||||
|
||||
Using our provided disk image (ISO file) is the recommended
|
||||
installation method, as it includes a convenient installer, a complete
|
||||
Debian system as well as all necessary packages for the Proxmox Backup
|
||||
Server.
|
||||
The disk image (ISO file) provided by Proxmox includes a complete Debian system
|
||||
as well as all necessary packages for the `Proxmox Backup`_ Server.
|
||||
|
||||
Once you have created an :ref:`installation_medium`, the booted
|
||||
:ref:`installer <using_the_installer>` will guide you through the
|
||||
setup process. It will help you to partition your disks, apply basic
|
||||
settings such as the language, time zone and network configuration,
|
||||
and finally install all required packages within minutes.
|
||||
The installer will guide you through the setup process and allow
|
||||
you to partition the local disk(s), apply basic system configuration
|
||||
(for example timezone, language, network), and install all required packages.
|
||||
The provided ISO will get you started in just a few minutes, and is the
|
||||
recommended method for new and existing users.
|
||||
|
||||
As an alternative to the interactive installer, advanced users may
|
||||
wish to install Proxmox Backup Server
|
||||
:ref:`unattended <install_pbs_unattended>`.
|
||||
Alternatively, `Proxmox Backup`_ Server can be installed on top of an
|
||||
existing Debian system.
|
||||
|
||||
With sufficient Debian knowledge, you can also install Proxmox Backup
|
||||
Server :ref:`on top of Debian <install_pbs_on_debian>` yourself.
|
||||
Install `Proxmox Backup`_ Server using the Installer
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
While not recommended, Proxmox Backup Server could also be installed
|
||||
:ref:`on Proxmox VE <install_pbs_on_pve>`.
|
||||
Download the ISO from |DOWNLOADS|.
|
||||
It includes the following:
|
||||
|
||||
.. include:: using-the-installer.rst
|
||||
* The `Proxmox Backup`_ Server installer, which partitions the local
|
||||
disk(s) with ext4, xfs or ZFS, and installs the operating system
|
||||
|
||||
.. _install_pbs_unattended:
|
||||
* Complete operating system (Debian Linux, 64-bit)
|
||||
|
||||
Install `Proxmox Backup`_ Server Unattended
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
It is possible to install Proxmox Backup Server automatically in an
|
||||
unattended manner. This enables you to fully automate the setup process on
|
||||
bare-metal. Once the installation is complete and the host has booted up,
|
||||
automation tools like Ansible can be used to further configure the installation.
|
||||
* Proxmox Linux kernel with ZFS support
|
||||
|
||||
The necessary options for the installer must be provided in an answer file.
|
||||
This file allows the use of filter rules to determine which disks and network
|
||||
cards should be used.
|
||||
* Complete tool-set to administer backups and all necessary resources
|
||||
|
||||
To use the automated installation, it is first necessary to prepare an
|
||||
installation ISO. For more details and information on the unattended
|
||||
installation see `our wiki
|
||||
<https://pve.proxmox.com/wiki/Automated_Installation>`_.
|
||||
* Web based management interface
|
||||
|
||||
.. note:: During the installation process, the complete server
|
||||
is used by default and all existing data is removed.
|
||||
|
||||
.. _install_pbs_on_debian:
|
||||
|
||||
Install `Proxmox Backup`_ Server on Debian
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -72,8 +60,8 @@ standard Debian installation. After configuring the
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt update
|
||||
# apt install proxmox-backup-server
|
||||
# apt-get update
|
||||
# apt-get install proxmox-backup-server
|
||||
|
||||
The above commands keep the current (Debian) kernel and install a minimal
|
||||
set of required packages.
|
||||
@ -83,13 +71,13 @@ does, please use the following:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt update
|
||||
# apt install proxmox-backup
|
||||
# apt-get update
|
||||
# apt-get install proxmox-backup
|
||||
|
||||
This will install all required packages, the Proxmox kernel with ZFS_
|
||||
support, and a set of common and useful packages.
|
||||
|
||||
.. caution:: Installing Proxmox Backup on top of an existing Debian_
|
||||
.. caution:: Installing `Proxmox Backup`_ on top of an existing Debian_
|
||||
installation looks easy, but it assumes that the base system and local
|
||||
storage have been set up correctly. In general this is not trivial, especially
|
||||
when LVM_ or ZFS_ is used. The network configuration is completely up to you
|
||||
@ -99,8 +87,6 @@ support, and a set of common and useful packages.
|
||||
your web browser, using HTTPS on port 8007. For example at
|
||||
``https://<ip-or-dns-name>:8007``
|
||||
|
||||
.. _install_pbs_on_pve:
|
||||
|
||||
Install Proxmox Backup Server on `Proxmox VE`_
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
@ -109,8 +95,8 @@ After configuring the
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt update
|
||||
# apt install proxmox-backup-server
|
||||
# apt-get update
|
||||
# apt-get install proxmox-backup-server
|
||||
|
||||
.. caution:: Installing the backup server directly on the hypervisor
|
||||
is not recommended. It is safer to use a separate physical
|
||||
@ -121,12 +107,10 @@ After configuring the
|
||||
your web browser, using HTTPS on port 8007. For example at
|
||||
``https://<ip-or-dns-name>:8007``
|
||||
|
||||
.. _install_pbc:
|
||||
|
||||
Client Installation
|
||||
-------------------
|
||||
|
||||
Install Proxmox Backup Client on Debian
|
||||
Install `Proxmox Backup`_ Client on Debian
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Proxmox ships as a set of Debian packages to be installed on top of a standard
|
||||
@ -135,29 +119,10 @@ you need to run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt update
|
||||
# apt install proxmox-backup-client
|
||||
# apt-get update
|
||||
# apt-get install proxmox-backup-client
|
||||
|
||||
Install Statically Linked Proxmox Backup Client
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Proxmox provides a statically linked build of the Proxmox backup client that
|
||||
should run on any modern x86-64 Linux system.
|
||||
.. note:: The client-only repository should be usable by most recent Debian and
|
||||
Ubuntu derivatives.
|
||||
|
||||
It is currently available as a Debian package. After configuring the
|
||||
:ref:`package_repositories_client_only_apt`, you need to run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# apt update
|
||||
# apt install proxmox-backup-client-static
|
||||
|
||||
This package conflicts with the `proxmox-backup-client` package, as both
|
||||
provide the client as an executable in the `/usr/bin/proxmox-backup-client`
|
||||
path.
|
||||
|
||||
You can copy this executable to other, e.g. non-Debian based Linux systems.
|
||||
|
||||
For details on using the Proxmox Backup Client, see :ref:`client_usage`.
|
||||
|
||||
.. include:: package-repositories.rst
|
||||
|
||||
@ -4,8 +4,8 @@ Introduction
|
||||
What is Proxmox Backup Server?
|
||||
------------------------------
|
||||
|
||||
`Proxmox Backup`_ Server is an enterprise-class, client-server backup solution
|
||||
that is capable of backing up :term:`virtual machine<Virtual machine>`\ s,
|
||||
Proxmox Backup Server is an enterprise-class, client-server backup solution that
|
||||
is capable of backing up :term:`virtual machine<Virtual machine>`\ s,
|
||||
:term:`container<Container>`\ s, and physical hosts. It is specially optimized
|
||||
for the `Proxmox Virtual Environment`_ platform and allows you to back up your
|
||||
data securely, even between remote sites, providing easy management through a
|
||||
@ -30,7 +30,7 @@ backup data and provides an API to create and manage datastores. With the
|
||||
API, it's also possible to manage disks and other server-side resources.
|
||||
|
||||
The backup client uses this API to access the backed up data. You can use the
|
||||
``proxmox-backup-client`` command-line tool to create and restore file backups.
|
||||
``proxmox-backup-client`` command line tool to create and restore file backups.
|
||||
For QEMU_ and LXC_ within `Proxmox Virtual Environment`_, we deliver an
|
||||
integrated client.
|
||||
|
||||
@ -178,7 +178,7 @@ Mailing Lists
|
||||
Proxmox Backup Server is fully open-source and contributions are welcome! Here
|
||||
is the primary communication channel for developers:
|
||||
|
||||
:Mailing list for developers: `Proxmox Backup Server Development List`_
|
||||
:Mailing list for developers: `Proxmox Backup Sever Development List`_
|
||||
|
||||
Bug Tracker
|
||||
~~~~~~~~~~~
|
||||
|
||||
@ -121,7 +121,7 @@ Create a new pool with cache (L2ARC)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
It is possible to use a dedicated cache drive partition to increase
|
||||
the read performance (use SSDs).
|
||||
the performance (use SSD).
|
||||
|
||||
For `<device>`, you can use multiple devices, as is shown in
|
||||
"Create a new pool with RAID*".
|
||||
@ -134,7 +134,7 @@ Create a new pool with log (ZIL)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
It is possible to use a dedicated cache drive partition to increase
|
||||
the write performance (use SSDs).
|
||||
the performance (SSD).
|
||||
|
||||
For `<device>`, you can use multiple devices, as is shown in
|
||||
"Create a new pool with RAID*".
|
||||
@ -172,7 +172,7 @@ Changing a failed device
|
||||
Changing a failed bootable device
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Depending on how `Proxmox Backup`_ was installed, it is either using `grub` or
|
||||
Depending on how Proxmox Backup was installed, it is either using `grub` or
|
||||
`systemd-boot` as a bootloader.
|
||||
|
||||
In either case, the first steps of copying the partition table, reissuing GUIDs
|
||||
@ -195,7 +195,7 @@ With `systemd-boot`:
|
||||
# proxmox-boot-tool init <new ESP>
|
||||
|
||||
.. NOTE:: `ESP` stands for EFI System Partition, which is setup as partition #2 on
|
||||
bootable disks setup by the Proxmox Backup installer. For details, see
|
||||
bootable disks setup by the `Proxmox Backup`_ installer. For details, see
|
||||
:ref:`Setting up a new partition for use as synced ESP <systembooting-proxmox-boot-setup>`.
|
||||
|
||||
With `grub`:
|
||||
@ -214,17 +214,17 @@ Activate e-mail notification
|
||||
ZFS comes with an event daemon, ``ZED``, which monitors events generated by the
|
||||
ZFS kernel module. The daemon can also send emails upon ZFS events, such as pool
|
||||
errors. Newer ZFS packages ship the daemon in a separate package ``zfs-zed``,
|
||||
which should already be installed by default in Proxmox Backup.
|
||||
which should already be installed by default in `Proxmox Backup`_.
|
||||
|
||||
You can configure the daemon via the file ``/etc/zfs/zed.d/zed.rc``, using your
|
||||
preferred editor. The required setting for email notification is
|
||||
preferred editor. The required setting for email notfication is
|
||||
``ZED_EMAIL_ADDR``, which is set to ``root`` by default.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
ZED_EMAIL_ADDR="root"
|
||||
|
||||
Please note that Proxmox Backup forwards mails to `root` to the email address
|
||||
Please note that `Proxmox Backup`_ forwards mails to `root` to the email address
|
||||
configured for the root user.
|
||||
|
||||
|
||||
@ -264,7 +264,6 @@ systems with more than 256 GiB of total memory, where simply setting
|
||||
|
||||
# update-initramfs -u
|
||||
|
||||
.. _zfs_swap:
|
||||
|
||||
Swap on ZFS
|
||||
^^^^^^^^^^^
|
||||
@ -291,17 +290,17 @@ an editor of your choice and add the following line:
|
||||
vm.swappiness = 10
|
||||
|
||||
.. table:: Linux kernel `swappiness` parameter values
|
||||
:widths: 1, 3
|
||||
:widths:auto
|
||||
|
||||
=================== ===============================================================
|
||||
Value Strategy
|
||||
=================== ===============================================================
|
||||
vm.swappiness = 0 The kernel will swap only to avoid an 'out of memory' condition
|
||||
vm.swappiness = 1 Minimum amount of swapping without disabling it entirely.
|
||||
vm.swappiness = 10 Sometimes recommended to improve performance when sufficient memory exists in a system.
|
||||
vm.swappiness = 60 The default value.
|
||||
vm.swappiness = 100 The kernel will swap aggressively.
|
||||
=================== ===============================================================
|
||||
==================== ===============================================================
|
||||
Value Strategy
|
||||
==================== ===============================================================
|
||||
vm.swappiness = 0 The kernel will swap only to avoid an 'out of memory' condition
|
||||
vm.swappiness = 1 Minimum amount of swapping without disabling it entirely.
|
||||
vm.swappiness = 10 Sometimes recommended to improve performance when sufficient memory exists in a system.
|
||||
vm.swappiness = 60 The default value.
|
||||
vm.swappiness = 100 The kernel will swap aggressively.
|
||||
==================== ===============================================================
|
||||
|
||||
ZFS compression
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
@ -46,23 +46,6 @@ Ext.define('LabelSetupPanel', {
|
||||
let params = view.getValues();
|
||||
list.getStore().add(params);
|
||||
},
|
||||
|
||||
validitychange: function() {
|
||||
let me = this;
|
||||
let isValid = true;
|
||||
me.getView().query('field').forEach((field) => {
|
||||
if (!field.isValid()) {
|
||||
isValid = false;
|
||||
}
|
||||
});
|
||||
me.lookup('addButton').setDisabled(!isValid);
|
||||
},
|
||||
|
||||
control: {
|
||||
'field': {
|
||||
validitychange: 'validitychange',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
items: [
|
||||
@ -84,7 +67,7 @@ Ext.define('LabelSetupPanel', {
|
||||
xtype: 'ltoTapeType',
|
||||
name: 'tape_type',
|
||||
fieldLabel: 'Type',
|
||||
value: 'L9',
|
||||
value: 'L8',
|
||||
},
|
||||
{
|
||||
xtype: 'ltoLabelStyle',
|
||||
@ -110,7 +93,6 @@ Ext.define('LabelSetupPanel', {
|
||||
{
|
||||
xtype: 'button',
|
||||
text: 'Add',
|
||||
reference: 'addButton',
|
||||
handler: 'onAdd',
|
||||
},
|
||||
],
|
||||
|
||||
@ -108,7 +108,7 @@ Ext.define('PageCalibration', {
|
||||
xtype: 'numberfield',
|
||||
value: 'a4',
|
||||
name: 's_x',
|
||||
fieldLabel: 'Measured Start Offset Sx (mm)',
|
||||
fieldLabel: 'Meassured Start Offset Sx (mm)',
|
||||
allowBlank: false,
|
||||
labelWidth: 200,
|
||||
},
|
||||
@ -116,7 +116,7 @@ Ext.define('PageCalibration', {
|
||||
xtype: 'numberfield',
|
||||
value: 'a4',
|
||||
name: 'd_x',
|
||||
fieldLabel: 'Measured Length Dx (mm)',
|
||||
fieldLabel: 'Meassured Length Dx (mm)',
|
||||
allowBlank: false,
|
||||
labelWidth: 200,
|
||||
},
|
||||
@ -124,7 +124,7 @@ Ext.define('PageCalibration', {
|
||||
xtype: 'numberfield',
|
||||
value: 'a4',
|
||||
name: 's_y',
|
||||
fieldLabel: 'Measured Start Offset Sy (mm)',
|
||||
fieldLabel: 'Meassured Start Offset Sy (mm)',
|
||||
allowBlank: false,
|
||||
labelWidth: 200,
|
||||
},
|
||||
@ -132,7 +132,7 @@ Ext.define('PageCalibration', {
|
||||
xtype: 'numberfield',
|
||||
value: 'a4',
|
||||
name: 'd_y',
|
||||
fieldLabel: 'Measured Length Dy (mm)',
|
||||
fieldLabel: 'Meassured Length Dy (mm)',
|
||||
allowBlank: false,
|
||||
labelWidth: 200,
|
||||
},
|
||||
|
||||
@ -11,20 +11,12 @@ Ext.define('LtoTapeType', {
|
||||
store: {
|
||||
field: ['value', 'text'],
|
||||
data: [
|
||||
{ value: 'L9', text: "LTO-9" },
|
||||
{ value: 'LZ', text: "LTO-9 (WORM)" },
|
||||
{ value: 'L8', text: "LTO-8" },
|
||||
{ value: 'LY', text: "LTO-8 (WORM)" },
|
||||
{ value: 'L7', text: "LTO-7" },
|
||||
{ value: 'LX', text: "LTO-7 (WORM)" },
|
||||
{ value: 'L6', text: "LTO-6" },
|
||||
{ value: 'LW', text: "LTO-6 (WORM)" },
|
||||
{ value: 'L5', text: "LTO-5" },
|
||||
{ value: 'LV', text: "LTO-5 (WORM)" },
|
||||
{ value: 'L4', text: "LTO-4" },
|
||||
{ value: 'LU', text: "LTO-4 (WORM)" },
|
||||
{ value: 'L3', text: "LTO-3" },
|
||||
{ value: 'LT', text: "LTO-3 (WORM)" },
|
||||
{ value: 'CU', text: "Cleaning Unit" },
|
||||
],
|
||||
},
|
||||
|
||||
@ -6,64 +6,35 @@ Maintenance Tasks
|
||||
Pruning
|
||||
-------
|
||||
|
||||
Prune lets you specify which backup snapshots you want to keep, removing others.
|
||||
When pruning a snapshot, only the snapshot metadata (manifest, indices, blobs,
|
||||
log and notes) is removed. The chunks containing the actual backup data and
|
||||
previously referenced by the pruned snapshot, have to be removed by a garbage
|
||||
collection run.
|
||||
|
||||
.. Caution:: Take into consideration that sensitive information stored in a
|
||||
given data chunk will outlive pruned snapshots and remain present in the
|
||||
datastore as long as referenced by at least one backup snapshot. Further,
|
||||
*even* if no snapshot references a given chunk, it will remain present until
|
||||
removed by the garbage collection.
|
||||
|
||||
Moreover, file-level backups created using the change detection mode
|
||||
``metadata`` can reference backup chunks containing files which have vanished
|
||||
since the previous backup. These files might still be accessible by reading
|
||||
the chunks raw data (client or server side).
|
||||
|
||||
To remove chunks containing sensitive data, prune any snapshot made while the
|
||||
data was part of the backup input and run a garbage collection. Further, if
|
||||
using file-based backups with change detection mode ``metadata``,
|
||||
additionally prune all snapshots since the sensitive data was no longer part
|
||||
of the backup input and run a garbage collection.
|
||||
|
||||
The no longer referenced chunks will then be marked for deletion on the next
|
||||
garbage collection run and removed by a subsequent run after the grace
|
||||
period.
|
||||
|
||||
The following retention options are available for pruning:
|
||||
Prune lets you specify which backup snapshots you want to keep.
|
||||
The following retention options are available:
|
||||
|
||||
``keep-last <N>``
|
||||
Keep the last ``<N>`` backup snapshots.
|
||||
|
||||
``keep-hourly <N>``
|
||||
Keep backups for the last ``<N>`` hours. If there is more than one backup for
|
||||
a single hour, only the latest is retained. Hours without backups do not
|
||||
count.
|
||||
Keep backups for the last ``<N>`` hours. If there is more than one
|
||||
backup for a single hour, only the latest is retained.
|
||||
|
||||
``keep-daily <N>``
|
||||
Keep backups for the last ``<N>`` days. If there is more than one backup for a
|
||||
single day, only the latest is retained. Days without backups do not count.
|
||||
Keep backups for the last ``<N>`` days. If there is more than one
|
||||
backup for a single day, only the latest is retained.
|
||||
|
||||
``keep-weekly <N>``
|
||||
Keep backups for the last ``<N>`` weeks. If there is more than one backup for
|
||||
a single week, only the latest is retained. Weeks without backup do not count.
|
||||
Keep backups for the last ``<N>`` weeks. If there is more than one
|
||||
backup for a single week, only the latest is retained.
|
||||
|
||||
.. note:: Weeks start on Monday and end on Sunday. The software
|
||||
uses the `ISO week date`_ system and handles weeks at
|
||||
the end of the year correctly.
|
||||
|
||||
``keep-monthly <N>``
|
||||
Keep backups for the last ``<N>`` months. If there is more than one backup for
|
||||
a single month, only the latest is retained. Months without backups do not
|
||||
count.
|
||||
Keep backups for the last ``<N>`` months. If there is more than one
|
||||
backup for a single month, only the latest is retained.
|
||||
|
||||
``keep-yearly <N>``
|
||||
Keep backups for the last ``<N>`` years. If there is more than one backup for
|
||||
a single year, only the latest is retained. Years without backups do not
|
||||
count.
|
||||
Keep backups for the last ``<N>`` years. If there is more than one
|
||||
backup for a single year, only the latest is retained.
|
||||
|
||||
The retention options are processed in the order given above. Each option
|
||||
only covers backups within its time period. The next option does not take care
|
||||
@ -197,12 +168,10 @@ It's recommended to setup a schedule to ensure that unused space is cleaned up
|
||||
periodically. For most setups a weekly schedule provides a good interval to
|
||||
start.
|
||||
|
||||
.. _gc_background:
|
||||
|
||||
GC Background
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
In `Proxmox Backup`_ Server, backup data is not saved directly, but rather as
|
||||
In Proxmox Backup Server, backup data is not saved directly, but rather as
|
||||
chunks that are referred to by the indexes of each backup snapshot. This
|
||||
approach enables reuse of chunks through deduplication, among other benefits
|
||||
that are detailed in the :ref:`tech_design_overview`.
|
||||
@ -224,31 +193,17 @@ datastore or interfering with other backups.
|
||||
The garbage collection (GC) process is performed per datastore and is split
|
||||
into two phases:
|
||||
|
||||
- Phase one (Mark):
|
||||
- Phase one: Mark
|
||||
All index files are read, and the access time of the referred chunk files is
|
||||
updated.
|
||||
|
||||
All index files are read, and the access time (``atime``) of the referenced
|
||||
chunk files is updated.
|
||||
|
||||
- Phase two (Sweep):
|
||||
|
||||
The task iterates over all chunks and checks their file access time against a
|
||||
cutoff time. The cutoff time is given by either the oldest backup writer
|
||||
instance, if present, or 24 hours and 5 minutes before the start of the
|
||||
garbage collection.
|
||||
|
||||
Garbage collection considers chunk files with access time older than the
|
||||
cutoff time to be neither referenced by any backup snapshot's index, nor part
|
||||
of any currently running backup job. Therefore, these chunks can safely be
|
||||
deleted.
|
||||
|
||||
Chunks within the grace period will not be deleted and logged at the end of
|
||||
the garbage collection task as *Pending removals*.
|
||||
|
||||
.. note:: The grace period for backup chunk removal is not arbitrary, but stems
|
||||
from the fact that filesystems are typically mounted with the ``relatime``
|
||||
option by default. This results in better performance by only updating the
|
||||
``atime`` property if a file has been modified since the last access or the
|
||||
last access has been at least 24 hours ago.
|
||||
- Phase two: Sweep
|
||||
The task iterates over all chunks, checks their file access time, and if it
|
||||
is older than the cutoff time (i.e., the time when GC started, plus some
|
||||
headroom for safety and Linux file system behavior), the task knows that the
|
||||
chunk was neither referred to in any backup index nor part of any currently
|
||||
running backup that has no index to scan for. As such, the chunk can be
|
||||
safely deleted.
|
||||
|
||||
Manually Starting GC
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
@ -319,10 +274,26 @@ the **Actions** column in the table.
|
||||
Notifications
|
||||
-------------
|
||||
|
||||
Proxmox Backup Server can send you notifications about automatically
|
||||
Proxmox Backup Server can send you notification emails about automatically
|
||||
scheduled verification, garbage-collection and synchronization tasks results.
|
||||
|
||||
Refer to the :ref:`notifications` chapter for more details.
|
||||
By default, notifications are sent to the email address configured for the
|
||||
`root@pam` user. You can instead set this user for each datastore.
|
||||
|
||||
.. image:: images/screenshots/pbs-gui-datastore-options.png
|
||||
:target: _images/pbs-gui-datastore-options.png
|
||||
:align: right
|
||||
:alt: Datastore Options
|
||||
|
||||
You can also change the level of notification received per task type, the
|
||||
following options are available:
|
||||
|
||||
* Always: send a notification for any scheduled task, independent of the
|
||||
outcome
|
||||
|
||||
* Errors: send a notification for any scheduled task that results in an error
|
||||
|
||||
* Never: do not send any notification at all
|
||||
|
||||
.. _maintenance_mode:
|
||||
|
||||
|
||||
@ -6,11 +6,11 @@ Managing Remotes & Sync
|
||||
:term:`Remote`
|
||||
--------------
|
||||
|
||||
A remote refers to a separate `Proxmox Backup`_ Server installation and a user
|
||||
on that installation, from which you can `sync` datastores to a local datastore
|
||||
with a `Sync Job`. You can configure remotes in the web interface, under
|
||||
**Configuration -> Remotes**. Alternatively, you can use the ``remote``
|
||||
subcommand. The configuration information for remotes is stored in the file
|
||||
A remote refers to a separate Proxmox Backup Server installation and a user on that
|
||||
installation, from which you can `sync` datastores to a local datastore with a
|
||||
`Sync Job`. You can configure remotes in the web interface, under **Configuration
|
||||
-> Remotes**. Alternatively, you can use the ``remote`` subcommand. The
|
||||
configuration information for remotes is stored in the file
|
||||
``/etc/proxmox-backup/remote.cfg``.
|
||||
|
||||
.. image:: images/screenshots/pbs-gui-remote-add.png
|
||||
@ -69,13 +69,6 @@ sync-job`` command. The configuration information for sync jobs is stored at
|
||||
in the GUI, or use the ``create`` subcommand. After creating a sync job, you can
|
||||
either start it manually from the GUI or provide it with a schedule (see
|
||||
:ref:`calendar-event-scheduling`) to run regularly.
|
||||
Backup snapshots, groups and namespaces which are no longer available on the
|
||||
**Remote** datastore can be removed from the local datastore as well by setting
|
||||
the ``remove-vanished`` option for the sync job.
|
||||
Setting the ``verified-only`` or ``encrypted-only`` flags allows to limit the
|
||||
sync jobs to backup snapshots which have been verified or encrypted,
|
||||
respectively. This is particularly of interest when sending backups to a less
|
||||
trusted remote backup server.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
@ -123,33 +116,8 @@ of the specified criteria are synced. The available criteria are:
|
||||
The same filter is applied to local groups, for handling of the
|
||||
``remove-vanished`` option.
|
||||
|
||||
A ``group-filter`` can be inverted by prepending ``exclude:`` to it.
|
||||
|
||||
* Regular expression example, excluding the match:
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager sync-job update ID --group-filter exclude:regex:'^vm/1\d{2,3}$'
|
||||
|
||||
For mixing include and exclude filter, following rules apply:
|
||||
|
||||
- no filters: all backup groups
|
||||
- include: only those matching the include filters
|
||||
- exclude: all but those matching the exclude filters
|
||||
- both: those matching the include filters, but without those matching the exclude filters
|
||||
|
||||
.. note:: The ``protected`` flag of remote backup snapshots will not be synced.
|
||||
|
||||
Enabling the advanced option 'resync-corrupt' will re-sync all snapshots that have
|
||||
failed to verify during the last :ref:`maintenance_verification`. Hence, a verification
|
||||
job needs to be run before a sync job with 'resync-corrupt' can be carried out. Be aware
|
||||
that a 'resync-corrupt'-job needs to check the manifests of all snapshots in a datastore
|
||||
and might take much longer than regular sync jobs.
|
||||
|
||||
If the ``run-on-mount`` flag is set, the sync job will be automatically started whenever a
|
||||
relevant removable datastore is mounted. If mounting a removable datastore would start
|
||||
multiple sync jobs, these jobs will be run sequentially in alphabetical order based on
|
||||
their ID.
|
||||
|
||||
Namespace Support
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -236,54 +204,9 @@ Bandwidth Limit
|
||||
|
||||
Syncing a datastore to an archive can produce a lot of traffic and impact other
|
||||
users of the network. In order to avoid network or storage congestion, you can
|
||||
limit the bandwidth of a sync job in pull direction by setting the ``rate-in``
|
||||
option either in the web interface or using the ``proxmox-backup-manager``
|
||||
command-line tool:
|
||||
limit the bandwidth of the sync job by setting the ``rate-in`` option either in
|
||||
the web interface or using the ``proxmox-backup-manager`` command-line tool:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager sync-job update ID --rate-in 20MiB
|
||||
|
||||
For sync jobs in push direction use the ``rate-out`` option instead. To allow
|
||||
for traffic bursts, you can set the size of the token bucket filter used for
|
||||
traffic limiting via ``burst-in`` or ``burst-out`` parameters.
|
||||
|
||||
Sync Direction Push
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Sync jobs can be configured for pull or push direction. Sync jobs in push
|
||||
direction are not identical in behaviour because of the limited access to the
|
||||
target datastore via the remote servers API. Most notably, pushed content will
|
||||
always be owned by the user configured in the remote configuration, being
|
||||
independent from the local user as configured in the sync job. Latter is used
|
||||
exclusively for permission check and scope checks on the pushing side.
|
||||
|
||||
.. note:: It is strongly advised to create a dedicated remote configuration for
|
||||
each individual sync job in push direction, using a dedicated user on the
|
||||
remote. Otherwise, sync jobs pushing to the same target might remove each
|
||||
others snapshots and/or groups, if the remove vanished flag is set or skip
|
||||
snapshots if the backup time is not incremental.
|
||||
This is because the backup groups on the target are owned by the user
|
||||
given in the remote configuration.
|
||||
|
||||
The following permissions are required for a sync job in push direction:
|
||||
|
||||
#. ``Remote.Audit`` on ``/remote/{remote}`` and ``Remote.DatastoreBackup`` on
|
||||
``/remote/{remote}/{remote-store}/{remote-ns}`` path or subnamespace.
|
||||
#. At least ``Datastore.Read`` and ``Datastore.Audit`` on the local source
|
||||
datastore namespace (``/datastore/{store}/{ns}``) or ``Datastore.Backup`` if
|
||||
owner of the sync job.
|
||||
#. ``Remote.DatastorePrune`` on ``/remote/{remote}/{remote-store}/{remote-ns}``
|
||||
path to remove vanished snapshots and groups. Make sure to use a dedicated
|
||||
remote for each sync job in push direction as noted above.
|
||||
#. ``Remote.DatastoreModify`` on ``/remote/{remote}/{remote-store}/{remote-ns}``
|
||||
path to remove vanished namespaces. A remote user with limited access should
|
||||
be used on the remote backup server instance. Consider the implications as
|
||||
noted below.
|
||||
|
||||
.. note:: ``Remote.DatastoreModify`` will allow to remove whole namespaces on the
|
||||
remote target datastore, independent of ownership. Make sure the user as
|
||||
configured in remote.cfg has limited permissions on the remote side.
|
||||
|
||||
.. note:: Sync jobs in push direction require namespace support on the remote
|
||||
Proxmox Backup Server instance (minimum version 2.2).
|
||||
|
||||
@ -5,12 +5,12 @@ Markdown Primer
|
||||
|
||||
"Markdown is a text-to-HTML conversion tool for web writers. Markdown allows
|
||||
you to write using an easy-to-read, easy-to-write plain text format, then
|
||||
convert it to structurally valid XHTML (or HTML)."
|
||||
convertit to structurally valid XHTML (or HTML)."
|
||||
|
||||
-- John Gruber, https://daringfireball.net/projects/markdown/
|
||||
|
||||
|
||||
The "Notes" panel of the `Proxmox Backup`_ Server web-interface supports
|
||||
The "Notes" panel of the Proxmox Backup Server web-interface supports
|
||||
rendering Markdown text.
|
||||
|
||||
Proxmox Backup Server supports CommonMark with most extensions of GFM (GitHub
|
||||
|
||||
@ -1,50 +0,0 @@
|
||||
digraph g {
|
||||
graph [
|
||||
rankdir = "LR"
|
||||
fontname="Helvetica"
|
||||
];
|
||||
node [
|
||||
fontsize = "16"
|
||||
shape = "record"
|
||||
];
|
||||
edge [
|
||||
];
|
||||
|
||||
"archive" [
|
||||
label = "archive.mpxar"
|
||||
shape = "record"
|
||||
];
|
||||
|
||||
"rootdir" [
|
||||
label = "<fv>FORMAT_VERSION\l|PRELUDE\l|<f0>ENTRY\l|\{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|{<pl> PAYLOAD_REF|SYMLINK|DEVICE|{<de> \{DirectoryEntries\}\*|GOODBYE}}"
|
||||
shape = "record"
|
||||
];
|
||||
|
||||
|
||||
"entry" [
|
||||
label = "<f0> 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"
|
||||
labeljust = "l"
|
||||
shape = "record"
|
||||
];
|
||||
|
||||
|
||||
|
||||
"direntry" [
|
||||
label = "<f0> FILENAME\l|{ENTRY\l|HARDLINK\l}"
|
||||
shape = "record"
|
||||
];
|
||||
|
||||
"payloadrefentry" [
|
||||
label = "<f0> offset: u64\l|size: u64\l"
|
||||
shape = "record"
|
||||
];
|
||||
|
||||
"archive" -> "rootdir":fv
|
||||
|
||||
"rootdir":f0 -> "entry":f0
|
||||
|
||||
"rootdir":de -> "direntry":f0
|
||||
|
||||
"rootdir":pl -> "payloadrefentry":f0
|
||||
|
||||
}
|
||||
@ -8,10 +8,10 @@ Network Management
|
||||
:align: right
|
||||
:alt: System and Network Configuration Overview
|
||||
|
||||
`Proxmox Backup`_ Server provides both a web interface and a command-line tool
|
||||
for network configuration. You can find the configuration options in the web
|
||||
Proxmox Backup Server provides both a web interface and a command line tool for
|
||||
network configuration. You can find the configuration options in the web
|
||||
interface under the **Network Interfaces** section of the **Configuration** menu
|
||||
tree item. The command-line tool is accessed via the ``network`` subcommand.
|
||||
tree item. The command line tool is accessed via the ``network`` subcommand.
|
||||
These interfaces allow you to carry out some basic network management tasks,
|
||||
such as adding, configuring, and removing network interfaces.
|
||||
|
||||
|
||||
@ -1,373 +0,0 @@
|
||||
.. _notifications:
|
||||
|
||||
Notifications
|
||||
=============
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
* Proxmox Backup Server emits :ref:`notification_events` in case of noteworthy
|
||||
events in the system. These events are processed based on the global
|
||||
notification settings. Each notification event includes metadata, such as a
|
||||
timestamp, severity level, type, and additional event-specific fields.
|
||||
* :ref:`notification_matchers` route a notification event to one or more
|
||||
notification targets. A matcher can have match rules to selectively route
|
||||
based on the metadata of a notification event.
|
||||
* :ref:`notification_targets` are a destination to which a notification event
|
||||
is routed to by a matcher. There are multiple types of target, mail-based
|
||||
(Sendmail and SMTP) and Gotify.
|
||||
|
||||
Global notification settings can be configured in the GUI under *Configuration →
|
||||
Notifications*. The configuration is stored in :ref:`notifications.cfg` and
|
||||
:ref:`notifications_priv.cfg` - the latter contains sensitive configuration
|
||||
options such as passwords or authentication tokens for notification targets and
|
||||
can only be read by ``root``.
|
||||
|
||||
.. _notification_targets:
|
||||
|
||||
Notification Targets
|
||||
--------------------
|
||||
|
||||
Proxmox Backup Server offers multiple types of notification targets.
|
||||
|
||||
.. _notification_targets_sendmail:
|
||||
|
||||
Sendmail
|
||||
^^^^^^^^
|
||||
The sendmail binary is a program commonly found on Unix-like operating systems
|
||||
that handles the sending of email messages. It is a command-line utility that
|
||||
allows users and applications to send emails directly from the command line or
|
||||
from within scripts.
|
||||
|
||||
The sendmail notification target uses the ``sendmail`` binary to send emails to
|
||||
a list of configured users or email addresses. If a user is selected as a
|
||||
recipient, the email address configured in user's settings will be used. For
|
||||
the ``root@pam`` user, this is the email address entered during installation. A
|
||||
user's email address can be configured in ``Configuration → Access Control →
|
||||
User Management``. If a user has no associated email address, no email will be
|
||||
sent.
|
||||
|
||||
.. NOTE:: In standard Proxmox Backup Server installations, the ``sendmail``
|
||||
binary is provided by Postfix. It may be necessary to configure Postfix so
|
||||
that it can deliver mails correctly - for example by setting an external
|
||||
mail relay (smart host). In case of failed delivery, check the system logs
|
||||
for messages logged by the Postfix daemon.
|
||||
|
||||
See :ref:`notifications.cfg` for all configuration options.
|
||||
|
||||
.. _notification_targets_smtp:
|
||||
|
||||
SMTP
|
||||
^^^^
|
||||
SMTP notification targets can send emails directly to an SMTP mail relay. This
|
||||
target does not use the system's MTA to deliver emails. Similar to sendmail
|
||||
targets, if a user is selected as a recipient, the user's configured email
|
||||
address will be used.
|
||||
|
||||
.. NOTE:: Unlike sendmail targets, SMTP targets do not have any queuing/retry
|
||||
mechanism in case of a failed mail delivery.
|
||||
|
||||
See :ref:`notifications.cfg` for all configuration options.
|
||||
|
||||
.. _notification_targets_gotify:
|
||||
|
||||
Gotify
|
||||
^^^^^^
|
||||
`Gotify <http://gotify.net>`_ is an open-source self-hosted notification server
|
||||
that allows you to send push notifications to various devices and applications.
|
||||
It provides a simple API and web interface, making it easy to integrate with
|
||||
different platforms and services.
|
||||
|
||||
.. NOTE:: Gotify targets will respect the HTTP proxy settings from
|
||||
Configuration → Other → HTTP proxy
|
||||
|
||||
See :ref:`notifications.cfg` for all configuration options.
|
||||
|
||||
.. _notification_targets_webhook:
|
||||
Webhook
|
||||
^^^^^^^
|
||||
Webhook notification targets perform HTTP requests to a configurable URL.
|
||||
|
||||
The following configuration options are available:
|
||||
|
||||
* ``url``: The URL to which to perform the HTTP requests. Supports templating
|
||||
to inject message contents, metadata and secrets.
|
||||
* ``method``: HTTP Method to use (POST/PUT/GET)
|
||||
* ``header``: Array of HTTP headers that should be set for the request.
|
||||
Supports templating to inject message contents, metadata and secrets.
|
||||
* ``body``: HTTP body that should be sent. Supports templating to inject
|
||||
message contents, metadata and secrets.
|
||||
* ``secret``: Array of secret key-value pairs. These will be stored in a
|
||||
protected configuration file only readable by root. Secrets can be
|
||||
accessed in body/header/URL templates via the ``secrets`` namespace.
|
||||
* ``comment``: Comment for this target.
|
||||
|
||||
For configuration options that support templating, the `Handlebars
|
||||
<https://handlebarsjs.com>`_ syntax can be used to access the following
|
||||
properties:
|
||||
|
||||
* ``{{ title }}``: The rendered notification title
|
||||
* ``{{ message }}``: The rendered notification body
|
||||
* ``{{ severity }}``: The severity of the notification (``info``, ``notice``,
|
||||
``warning``, ``error``, ``unknown``)
|
||||
* ``{{ timestamp }}``: The notification's timestamp as a UNIX epoch (in
|
||||
seconds).
|
||||
* ``{{ fields.<name> }}``: Sub-namespace for any metadata fields of the
|
||||
notification. For instance, ``fields.type`` contains the notification
|
||||
type - for all available fields refer to :ref:`notification_events`.
|
||||
* ``{{ secrets.<name> }}``: Sub-namespace for secrets. For instance, a secret
|
||||
named ``token`` is accessible via ``secrets.token``.
|
||||
|
||||
For convenience, the following helpers are available:
|
||||
|
||||
* ``{{ url-encode <value/property> }}``: URL-encode a property/literal.
|
||||
* ``{{ escape <value/property> }}``: Escape any control characters that cannot
|
||||
be safely represented as a JSON string.
|
||||
* ``{{ json <value/property> }}``: Render a value as JSON. This can be useful
|
||||
to pass a whole sub-namespace (e.g. ``fields``) as a part of a JSON payload
|
||||
(e.g. ``{{ json fields }}``).
|
||||
|
||||
|
||||
.. NOTE:: Webhook targets will respect the HTTP proxy settings from
|
||||
Configuration → Other → HTTP proxy
|
||||
|
||||
Example - ntfy.sh
|
||||
"""""""""""""""""
|
||||
|
||||
* Method: ``POST``
|
||||
* URL: ``https://ntfy.sh/{{ secrets.channel }}``
|
||||
* Headers:
|
||||
|
||||
* ``Markdown``: ``Yes``
|
||||
* Body::
|
||||
|
||||
```
|
||||
{{ message }}
|
||||
```
|
||||
|
||||
* Secrets:
|
||||
|
||||
* ``channel``: ``<your ntfy.sh channel>``
|
||||
|
||||
Example - Discord
|
||||
"""""""""""""""""
|
||||
|
||||
* Method: ``POST``
|
||||
* URL: ``https://discord.com/api/webhooks/{{ secrets.token }}``
|
||||
* Headers:
|
||||
|
||||
* ``Content-Type``: ``application/json``
|
||||
|
||||
* Body::
|
||||
|
||||
{
|
||||
"content": "``` {{ escape message }}```"
|
||||
}
|
||||
|
||||
* Secrets:
|
||||
|
||||
* ``token``: ``<token>``
|
||||
|
||||
Example - Slack
|
||||
"""""""""""""""
|
||||
|
||||
* Method: ``POST``
|
||||
* URL: ``https://hooks.slack.com/services/{{ secrets.token }}``
|
||||
* Headers:
|
||||
|
||||
* ``Content-Type``: ``application/json``
|
||||
|
||||
* Body::
|
||||
|
||||
{
|
||||
"text": "``` {{escape message}}```",
|
||||
"type": "mrkdwn"
|
||||
}
|
||||
|
||||
* Secrets:
|
||||
|
||||
* ``token``: ``<token>``
|
||||
|
||||
.. _notification_matchers:
|
||||
|
||||
Notification Matchers
|
||||
---------------------
|
||||
|
||||
Notification matchers route notifications to notification targets based on
|
||||
their matching rules. These rules can match certain properties of a
|
||||
notification, such as the timestamp (``match-calendar``), the severity of the
|
||||
notification (``match-severity``) or metadata fields (``match-field``). If a
|
||||
notification is matched by a matcher, all targets configured for the matcher
|
||||
will receive the notification.
|
||||
|
||||
An arbitrary number of matchers can be created, each with with their own
|
||||
matching rules and targets to notify. Every target is notified at most once for
|
||||
every notification, even if the target is used in multiple matchers.
|
||||
|
||||
A matcher without rules matches any notification; the configured targets will
|
||||
always be notified.
|
||||
|
||||
See :ref:`notifications.cfg` for all configuration options.
|
||||
|
||||
Calendar Matching Rules
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
A calendar matcher matches a notification's timestamp.
|
||||
|
||||
Examples:
|
||||
|
||||
* ``match-calendar 8-12``
|
||||
* ``match-calendar 8:00-15:30``
|
||||
* ``match-calendar mon-fri 9:00-17:00``
|
||||
* ``match-calendar sun,tue-wed,fri 9-17``
|
||||
|
||||
Field Matching Rules
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
Notifications have a selection of metadata fields that can be matched. When
|
||||
using ``exact`` as a matching mode, a ``,`` can be used as a separator. The
|
||||
matching rule then matches if the metadata field has **any** of the specified
|
||||
values.
|
||||
|
||||
Examples:
|
||||
|
||||
* ``match-field exact:type=gc`` Only match notifications for garbage collection
|
||||
jobs
|
||||
* ``match-field exact:type=prune,verify`` Match prune job and verification job
|
||||
notifications.
|
||||
* ``match-field regex:datastore=^backup-.*$`` Match any datastore starting with
|
||||
``backup``.
|
||||
|
||||
If a notification does not have the matched field, the rule will **not** match.
|
||||
For instance, a ``match-field regex:datastore=.*`` directive will match any
|
||||
notification that has a ``datastore`` metadata field, but will not match if the
|
||||
field does not exist.
|
||||
|
||||
Severity Matching Rules
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
A notification has a associated severity that can be matched.
|
||||
|
||||
Examples:
|
||||
|
||||
* ``match-severity error``: Only match errors
|
||||
* ``match-severity warning,error``: Match warnings and error
|
||||
|
||||
The following severities are in use:
|
||||
``info``, ``notice``, ``warning``, ``error``, ``unknown``.
|
||||
|
||||
.. _notification_events:
|
||||
|
||||
Notification Events
|
||||
-------------------
|
||||
|
||||
The following table contains a list of all notification events in Proxmox
|
||||
Backup server, their type, severity and additional metadata fields. ``type`` as
|
||||
well as any other metadata field may be used in ``match-field`` match rules.
|
||||
|
||||
================================ ==================== ========== ==============================================================
|
||||
Event ``type`` Severity Metadata fields (in addition to ``type``)
|
||||
================================ ==================== ========== ==============================================================
|
||||
ACME certificate renewal failed ``acme`` ``error`` ``hostname``
|
||||
Garbage collection failure ``gc`` ``error`` ``datastore``, ``hostname``
|
||||
Garbage collection success ``gc`` ``info`` ``datastore``, ``hostname``
|
||||
Package updates available ``package-updates`` ``info`` ``hostname``
|
||||
Prune job failure ``prune`` ``error`` ``datastore``, ``hostname``, ``job-id``
|
||||
Prune job success ``prune`` ``info`` ``datastore``, ``hostname``, ``job-id``
|
||||
Remote sync failure ``sync`` ``error`` ``datastore``, ``hostname``, ``job-id``
|
||||
Remote sync success ``sync`` ``info`` ``datastore``, ``hostname``, ``job-id``
|
||||
Tape backup job failure ``tape-backup`` ``error`` ``datastore``, ``hostname``, ``media-pool``, ``job-id``
|
||||
Tape backup job success ``tape-backup`` ``info`` ``datastore``, ``hostname``, ``media-pool``, ``job-id``
|
||||
Tape loading request ``tape-load`` ``notice`` ``hostname``
|
||||
Verification job failure ``verification`` ``error`` ``datastore``, ``hostname``, ``job-id``
|
||||
Verification job success ``verification`` ``info`` ``datastore``, ``hostname``, ``job-id``
|
||||
================================ ==================== ========== ==============================================================
|
||||
|
||||
The following table contains a description of all use metadata fields. All of
|
||||
these can be used in ``match-field`` match rules.
|
||||
|
||||
==================== ===================================
|
||||
Metadata field Description
|
||||
==================== ===================================
|
||||
``datastore`` The name of the datastore
|
||||
``hostname`` The hostname of the backup server
|
||||
``job-id`` Job ID
|
||||
``media-pool`` The name of the tape media pool
|
||||
``type`` Notification event type
|
||||
==================== ===================================
|
||||
|
||||
.. NOTE:: The daily task checking for any available system updates only sends
|
||||
notifications if the node has an active subscription.
|
||||
|
||||
System Mail Forwarding
|
||||
----------------------
|
||||
Certain local system daemons, such as ``smartd``, send notification emails to
|
||||
the local ``root`` user. These mails are converted into notification events
|
||||
with the type ``system-mail`` and with a severity of ``unknown``.
|
||||
|
||||
When the email is forwarded to a sendmail target, the mail's content and
|
||||
headers are forwarded as-is. For all other targets, the system tries to extract
|
||||
both a subject line and the main text body from the email content. In instances
|
||||
where emails solely consist of HTML content, they will be transformed into
|
||||
plain text format during this process.
|
||||
|
||||
Permissions
|
||||
-----------
|
||||
In order to modify/view the configuration for notification targets, the
|
||||
``Sys.Modify/Sys.Audit`` permissions are required for the
|
||||
``/system/notifications`` ACL node.
|
||||
|
||||
.. _notification_mode:
|
||||
|
||||
Notification Mode
|
||||
-----------------
|
||||
Datastores and tape backup/restore job configuration have a
|
||||
``notification-mode`` option which can have one of two values:
|
||||
|
||||
* Send notifications based on the global notification settings (``notification-system``).
|
||||
|
||||
* Send notification emails via the system's ``sendmail`` command
|
||||
(``legacy-sendmail``). Any targets or matchers from the global notification
|
||||
settings are ignored. This mode is equivalent to the notification behavior
|
||||
for Proxmox Backup Server versions before 3.2. It might be removed in a
|
||||
later release of Proxmox Backup Server.
|
||||
|
||||
|
||||
Settings for ``legacy-sendmail`` notification mode
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If ``notification-mode`` is set to ``legacy-sendmail``, Proxmox Backup Server
|
||||
will send notification emails via the system's ``sendmail`` command to the
|
||||
email address configured for the user set in the ``notify-user`` option
|
||||
(falling back to ``root@pam`` if not set).
|
||||
|
||||
For datastores, you can also change the level of notifications received per
|
||||
task type via the ``notify`` option.
|
||||
|
||||
* Always: send a notification for any scheduled task, independent of the
|
||||
outcome
|
||||
|
||||
* Errors: send a notification for any scheduled task that results in an error
|
||||
|
||||
* Never: do not send any notification at all
|
||||
|
||||
The ``notify-user`` and ``notify`` options are ignored when using the global
|
||||
notification settings (``notification-mode`` is set to
|
||||
``notification-system``).
|
||||
|
||||
Overriding Notification Templates
|
||||
---------------------------------
|
||||
|
||||
Proxmox Backup Server uses Handlebars templates to render notifications. The
|
||||
original templates provided by Proxmox Backup Server are stored in
|
||||
``/usr/share/proxmox-backup/templates/default/``.
|
||||
|
||||
Notification templates can be overridden by providing a custom template file in
|
||||
the override directory at
|
||||
``/etc/proxmox-backup/notification-templates/default/``. When rendering a
|
||||
notification of a given type, Proxmox Backup Server will first attempt to load
|
||||
a template from the override directory. If this one does not exist or fails to
|
||||
render, the original template will be used.
|
||||
|
||||
The template files follow the naming convention of
|
||||
``<type>-<body|subject>.txt.hbs``. For instance, the file
|
||||
``gc-err-body.txt.hbs`` contains the template for rendering notifications for
|
||||
garbage collection errors, while ``package-updates-subject.txt.hbs`` is used to
|
||||
render the subject line of notifications for available package updates.
|
||||
@ -4,62 +4,25 @@ Debian Package Repositories
|
||||
---------------------------
|
||||
|
||||
All Debian based systems use APT_ as a package management tool. The lists of
|
||||
repositories are defined in ``/etc/apt/sources.list`` and the ``.list`` or
|
||||
``.sources`` files found in the ``/etc/apt/sources.d/`` directory. Updates can
|
||||
be installed directly with the ``apt`` command-line tool, or via the GUI.
|
||||
repositories are defined in ``/etc/apt/sources.list`` and the ``.list`` files found
|
||||
in the ``/etc/apt/sources.d/`` directory. Updates can be installed directly
|
||||
with the ``apt`` command line tool, or via the GUI.
|
||||
|
||||
.. _package_repos_repository_formats:
|
||||
APT_ ``sources.list`` files list one package repository per line, with the most
|
||||
preferred source listed first. Empty lines are ignored and a ``#`` character
|
||||
anywhere on a line marks the remainder of that line as a comment. The
|
||||
information available from the configured sources is acquired by ``apt
|
||||
update``.
|
||||
|
||||
Repository Formats
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
.. code-block:: sources.list
|
||||
:caption: File: ``/etc/apt/sources.list``
|
||||
|
||||
APT_ repositories can be configured in two distinct formats, the old single
|
||||
line format and the newer deb822 format. No matter what format you choose,
|
||||
``apt update`` will fetch the information from all configured sources.
|
||||
deb http://ftp.debian.org/debian bullseye main contrib
|
||||
deb http://ftp.debian.org/debian bullseye-updates main contrib
|
||||
|
||||
Single Line
|
||||
^^^^^^^^^^^
|
||||
# security updates
|
||||
deb http://security.debian.org/debian-security bullseye-security main contrib
|
||||
|
||||
Single line repositories are defined in ``.list`` files list one package
|
||||
repository per line, with the most preferred source listed first. Empty lines
|
||||
are ignored and a ``#`` character anywhere on a line marks the remainder of
|
||||
that line as a comment.
|
||||
|
||||
deb822 Style
|
||||
^^^^^^^^^^^^
|
||||
|
||||
The newer deb822 multiline format is used in ``.sources`` files. Each
|
||||
repository consists of a stanza with multiple key value pairs. A stanza is
|
||||
simply a group of lines. One file can contain multiple stanzas by separating
|
||||
them with a blank line. You can still use ``#`` to comment out lines.
|
||||
|
||||
.. note:: Modernizing your repositories is recommended under Debian Trixie, as
|
||||
``apt`` will complain about older repository definitions otherwise. You can
|
||||
run the command ``apt modernize-sources`` to modernize your existing
|
||||
repositories automatically.
|
||||
|
||||
.. _package_repos_debian_base_repositories:
|
||||
|
||||
Debian Base Repositories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You will need a Debian base repository as a minimum to get updates for all
|
||||
packages provided by Debian itself:
|
||||
|
||||
.. code-block:: debian.sources
|
||||
:caption: File: ``/etc/apt/sources.list.d/debian.sources``
|
||||
|
||||
Types: deb
|
||||
URIs: http://deb.debian.org/debian/
|
||||
Suites: trixie trixie-updates
|
||||
Components: main contrib non-free-firmware
|
||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||
|
||||
Types: deb
|
||||
URIs: http://security.debian.org/debian-security/
|
||||
Suites: trixie-security
|
||||
Components: main contrib non-free-firmware
|
||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||
|
||||
In addition, you need a package repository from Proxmox to get Proxmox Backup
|
||||
updates.
|
||||
@ -69,24 +32,53 @@ updates.
|
||||
:align: right
|
||||
:alt: APT Repository Management in the Web Interface
|
||||
|
||||
.. _package_repos_secure_apt:
|
||||
|
||||
SecureApt
|
||||
~~~~~~~~~
|
||||
|
||||
The `Release` files in the repositories are signed with GnuPG. APT is using
|
||||
these signatures to verify that all packages are from a trusted source.
|
||||
|
||||
If you install Proxmox Backup Server from an official ISO image, the
|
||||
verification key is already installed.
|
||||
|
||||
If you install Proxmox Backup Server on top of Debian, download and install the
|
||||
key with the following commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# wget https://enterprise.proxmox.com/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
|
||||
|
||||
Verify the SHA512 checksum afterwards with the expected output below:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
|
||||
7fb03ec8a1675723d2853b84aa4fdb49a46a3bb72b9951361488bfd19b29aab0a789a4f8c7406e71a69aabbc727c936d3549731c4659ffa1a08f44db8fdcebfa /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
|
||||
|
||||
and the md5sum, with the expected output below:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# md5sum /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
|
||||
bcc35c7173e0845c0d6ad6470b70f50e /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg
|
||||
|
||||
.. _sysadmin_package_repos_enterprise:
|
||||
|
||||
`Proxmox Backup`_ Enterprise Repository
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
This is the stable, recommended repository. It is available for
|
||||
all Proxmox Backup subscription users. It contains the most stable packages,
|
||||
all `Proxmox Backup`_ subscription users. It contains the most stable packages,
|
||||
and is suitable for production use. The ``pbs-enterprise`` repository is
|
||||
enabled by default:
|
||||
|
||||
.. code-block:: debian.sources
|
||||
:caption: File: ``/etc/apt/sources.list.d/pbs-enterprise.sources``
|
||||
.. code-block:: sources.list
|
||||
:caption: File: ``/etc/apt/sources.list.d/pbs-enterprise.list``
|
||||
|
||||
deb https://enterprise.proxmox.com/debian/pbs bullseye pbs-enterprise
|
||||
|
||||
Types: deb
|
||||
URIs: https://enterprise.proxmox.com/debian/pbs
|
||||
Suites: trixie
|
||||
Components: pbs-enterprise
|
||||
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
|
||||
To never miss important security fixes, the superuser (``root@pam`` user) is
|
||||
notified via email about new packages as soon as they are available. The
|
||||
@ -96,8 +88,11 @@ Please note that you need a valid subscription key to access this
|
||||
repository. More information regarding subscription levels and pricing can be
|
||||
found at https://www.proxmox.com/en/proxmox-backup-server/pricing
|
||||
|
||||
.. note:: You can disable this repository by adding the line ``Enabled: false``
|
||||
to the stanza.
|
||||
.. note:: You can disable this repository by commenting out the above line
|
||||
using a `#` (at the start of the line). This prevents error messages if you do
|
||||
not have a subscription key. Please configure the ``pbs-no-subscription``
|
||||
repository in that case.
|
||||
|
||||
|
||||
`Proxmox Backup`_ No-Subscription Repository
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -107,17 +102,21 @@ this repository. It can be used for testing and non-production
|
||||
use. It is not recommended to use it on production servers, because these
|
||||
packages are not always heavily tested and validated.
|
||||
|
||||
We recommend to configure this repository in
|
||||
``/etc/apt/sources.list.d/proxmox.sources``.
|
||||
We recommend to configure this repository in ``/etc/apt/sources.list``.
|
||||
|
||||
.. code-block:: debian.sources
|
||||
:caption: File: ``/etc/apt/sources.list.d/proxmox.sources``
|
||||
.. code-block:: sources.list
|
||||
:caption: File: ``/etc/apt/sources.list``
|
||||
|
||||
deb http://ftp.debian.org/debian bullseye main contrib
|
||||
deb http://ftp.debian.org/debian bullseye-updates main contrib
|
||||
|
||||
# Proxmox Backup Server pbs-no-subscription repository provided by proxmox.com,
|
||||
# NOT recommended for production use
|
||||
deb http://download.proxmox.com/debian/pbs bullseye pbs-no-subscription
|
||||
|
||||
# security updates
|
||||
deb http://security.debian.org/debian-security bullseye-security main contrib
|
||||
|
||||
Types: deb
|
||||
URIs: http://download.proxmox.com/debian/pbs
|
||||
Suites: trixie
|
||||
Components: pbs-no-subscription
|
||||
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
|
||||
`Proxmox Backup`_ Test Repository
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
@ -128,24 +127,20 @@ to test new features.
|
||||
.. .. warning:: the ``pbstest`` repository should (as the name implies)
|
||||
only be used to test new features or bug fixes.
|
||||
|
||||
You can access this repository by adding the following stanza to
|
||||
``/etc/apt/sources.list.d/proxmox.sources``:
|
||||
You can access this repository by adding the following line to
|
||||
``/etc/apt/sources.list``:
|
||||
|
||||
.. code-block:: debian.sources
|
||||
.. code-block:: sources.list
|
||||
:caption: sources.list entry for ``pbstest``
|
||||
|
||||
Types: deb
|
||||
URIs: http://download.proxmox.com/debian/pbs
|
||||
Suites: trixie
|
||||
Components: pbs-test
|
||||
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
deb http://download.proxmox.com/debian/pbs bullseye pbstest
|
||||
|
||||
.. _package_repositories_client_only:
|
||||
|
||||
Proxmox Backup Client-only Repository
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
If you want to :ref:`use the Proxmox Backup Client <client_creating_backups>`
|
||||
If you want to :ref:`use the the Proxmox Backup Client <client_creating_backups>`
|
||||
on systems using a Linux distribution not based on Proxmox projects, you can
|
||||
use the client-only repository.
|
||||
|
||||
@ -154,7 +149,7 @@ Currently there's only a client-repository for APT based systems.
|
||||
.. _package_repositories_client_only_apt:
|
||||
|
||||
APT-based Proxmox Backup Client Repository
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
++++++++++++++++++++++++++++++++++++++++++
|
||||
|
||||
For modern Linux distributions using `apt` as package manager, like all Debian
|
||||
and Ubuntu Derivative do, you may be able to use the APT-based repository.
|
||||
@ -163,38 +158,6 @@ In order to configure this repository you need to first :ref:`setup the Proxmox
|
||||
release key <package_repos_secure_apt>`. After that, add the repository URL to
|
||||
the APT sources lists.
|
||||
|
||||
**Repositories for Debian 13 (Trixie) based releases**
|
||||
|
||||
This repository is tested with:
|
||||
|
||||
- Debian Trixie
|
||||
|
||||
Edit the file ``/etc/apt/sources.list.d/pbs-client.sources`` and add the following
|
||||
snippet
|
||||
|
||||
.. code-block:: debian.sources
|
||||
:caption: File: ``/etc/apt/sources.list.d/pbs``
|
||||
|
||||
Types: deb
|
||||
URIs: http://download.proxmox.com/debian/pbs-client
|
||||
Suites: trixie
|
||||
Components: main
|
||||
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
|
||||
**Repositories for Debian 12 (Bookworm) based releases**
|
||||
|
||||
This repository is tested with:
|
||||
|
||||
- Debian Bookworm
|
||||
|
||||
Edit the file ``/etc/apt/sources.list.d/pbs-client.list`` and add the following
|
||||
snippet
|
||||
|
||||
.. code-block:: sources.list
|
||||
:caption: File: ``/etc/apt/sources.list``
|
||||
|
||||
deb http://download.proxmox.com/debian/pbs-client bookworm main
|
||||
|
||||
**Repositories for Debian 11 (Bullseye) based releases**
|
||||
|
||||
This repository is tested with:
|
||||
@ -226,50 +189,6 @@ snippet
|
||||
|
||||
deb http://download.proxmox.com/debian/pbs-client buster main
|
||||
|
||||
.. _package_repos_secure_apt:
|
||||
|
||||
SecureApt
|
||||
~~~~~~~~~
|
||||
|
||||
The `Release` files in the repositories are signed with GnuPG. APT is using
|
||||
these signatures to verify that all packages are from a trusted source.
|
||||
|
||||
If you install Proxmox Backup Server from an official ISO image, the
|
||||
verification key is already installed.
|
||||
|
||||
If you install Proxmox Backup Server on top of Debian, download and install the
|
||||
key with the following commands:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg -O /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
|
||||
.. note:: The `wget` command above adds the keyring for Proxmox releases based
|
||||
on Debian Trixie. Once the `proxmox-archive-keyring` package is installed,
|
||||
it will manage this file. At that point, the hashes below may no longer
|
||||
match the hashes of this file, as keys for new Proxmox releases get added or
|
||||
removed. This is intended, `apt` will ensure that only trusted keys are
|
||||
being used. **Modifying this file is discouraged once
|
||||
`proxmox-archive-keyring` is installed.**
|
||||
|
||||
Verify the SHA256 checksum afterwards with the expected output below:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# sha256sum /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
136673be77aba35dcce385b28737689ad64fd785a797e57897589aed08db6e45 /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
|
||||
and the md5sum, with the expected output below:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# md5sum /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
77c8b1166d15ce8350102ab1bca2fcbf /usr/share/keyrings/proxmox-archive-keyring.gpg
|
||||
|
||||
.. note:: Make sure that the path that you download the key to, matches the
|
||||
path specified in the ``Signed-By:`` lines in your repository stanzas from
|
||||
above.
|
||||
|
||||
.. _node_options_http_proxy:
|
||||
|
||||
Repository Access Behind HTTP Proxy
|
||||
|
||||
14
docs/pbs2to3/man1.rst
Normal file
@ -0,0 +1,14 @@
|
||||
|
||||
=======
|
||||
pbs2to3
|
||||
=======
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
This tool will help you to detect common pitfalls and misconfguration before,
|
||||
and during the upgrade of a Proxmox VE system Any failure must be addressed
|
||||
before the upgrade, and any waring must be addressed, or at least carefully
|
||||
evaluated, if a false-positive is suspected
|
||||
|
||||
.. include:: ../pbs-copyright.rst
|
||||
@ -1,16 +0,0 @@
|
||||
:orphan:
|
||||
|
||||
|
||||
=======
|
||||
pbs3to4
|
||||
=======
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
This tool will help you to detect common pitfalls and misconfiguration before,
|
||||
and during the upgrade of a Proxmox Backup Server system. Any failures or
|
||||
warnings must be addressed prior to the upgrade. If you suspect that a message
|
||||
is a false positive, you have to make carefully sure that it really is.
|
||||
|
||||
.. include:: ../pbs-copyright.rst
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
===
|
||||
pmt
|
||||
===
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
==========================
|
||||
pmtx
|
||||
==========================
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
=====================
|
||||
proxmox-backup-client
|
||||
=====================
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
====================
|
||||
proxmox-backup-debug
|
||||
====================
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
==========================
|
||||
proxmox-backup-manager
|
||||
==========================
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
==========================
|
||||
proxmox-backup-proxy
|
||||
==========================
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
==========================
|
||||
proxmox-backup
|
||||
==========================
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
Command-line tool for restoring files and directories from Proxmox Backup
|
||||
Command line tool for restoring files and directories from Proxmox Backup
|
||||
archives. In contrast to proxmox-backup-client, this supports both
|
||||
container/host and VM backups.
|
||||
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
====================
|
||||
proxmox-file-restore
|
||||
====================
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
============
|
||||
proxmox-tape
|
||||
============
|
||||
|
||||
@ -82,13 +82,13 @@ available:</p>
|
||||
<dd>Keep the last <code class="docutils literal notranslate"><span class="pre"><N></span></code> backup snapshots.</dd>
|
||||
<dt><code class="docutils literal notranslate"><span class="pre">keep-hourly</span> <span class="pre"><N></span></code></dt>
|
||||
<dd>Keep backups for the last <code class="docutils literal notranslate"><span class="pre"><N></span></code> hours. If there is more than one
|
||||
backup for a single hour, only the latest is kept. Hours without backups do not count.</dd>
|
||||
backup for a single hour, only the latest is kept.</dd>
|
||||
<dt><code class="docutils literal notranslate"><span class="pre">keep-daily</span> <span class="pre"><N></span></code></dt>
|
||||
<dd>Keep backups for the last <code class="docutils literal notranslate"><span class="pre"><N></span></code> days. If there is more than one
|
||||
backup for a single day, only the latest is kept. Days without backups do not count.</dd>
|
||||
backup for a single day, only the latest is kept.</dd>
|
||||
<dt><code class="docutils literal notranslate"><span class="pre">keep-weekly</span> <span class="pre"><N></span></code></dt>
|
||||
<dd>Keep backups for the last <code class="docutils literal notranslate"><span class="pre"><N></span></code> weeks. If there is more than one
|
||||
backup for a single week, only the latest is kept. Weeks without backups do not count.
|
||||
backup for a single week, only the latest is kept.
|
||||
<div class="last admonition note">
|
||||
<p class="note-title">Note:</p>
|
||||
<p class="last">Weeks start on Monday and end on Sunday. The software
|
||||
@ -98,10 +98,10 @@ the end of the year correctly.</p>
|
||||
</dd>
|
||||
<dt><code class="docutils literal notranslate"><span class="pre">keep-monthly</span> <span class="pre"><N></span></code></dt>
|
||||
<dd>Keep backups for the last <code class="docutils literal notranslate"><span class="pre"><N></span></code> months. If there is more than one
|
||||
backup for a single month, only the latest is kept. Months without backups do not count.</dd>
|
||||
backup for a single month, only the latest is kept.</dd>
|
||||
<dt><code class="docutils literal notranslate"><span class="pre">keep-yearly</span> <span class="pre"><N></span></code></dt>
|
||||
<dd>Keep backups for the last <code class="docutils literal notranslate"><span class="pre"><N></span></code> years. If there is more than one
|
||||
backup for a single year, only the latest is kept. Years without backups do not count.</dd>
|
||||
backup for a single year, only the latest is kept.</dd>
|
||||
</dl>
|
||||
<p>The retention options are processed in the order given above. Each option
|
||||
only covers backups within its time period. The next option does not take care
|
||||
|
||||
@ -126,8 +126,7 @@ Ext.onReady(function() {
|
||||
if (data.mark !== 'keep') {
|
||||
return `<div style="text-decoration: line-through;">${text}</div>`;
|
||||
}
|
||||
let pruneList = this.up('prunesimulatorPruneList');
|
||||
if (pruneList.useColors) {
|
||||
if (me.useColors) {
|
||||
let bgColor = COLORS[data.keepName];
|
||||
let textColor = TEXT_COLORS[data.keepName];
|
||||
return `<div style="background-color: ${bgColor};color: ${textColor};">${text}</div>`;
|
||||
@ -354,17 +353,12 @@ Ext.onReady(function() {
|
||||
specValues.forEach(function(value) {
|
||||
if (value.includes('..')) {
|
||||
let [start, end] = value.split('..');
|
||||
let step = 1;
|
||||
if (end.includes('/')) {
|
||||
[end, step] = end.split('/');
|
||||
step = assertValid(step);
|
||||
}
|
||||
start = assertValid(start);
|
||||
end = assertValid(end);
|
||||
if (start > end) {
|
||||
throw "interval start is bigger then interval end '" + start + " > " + end + "'";
|
||||
}
|
||||
for (let i = start; i <= end; i += step) {
|
||||
for (let i = start; i <= end; i++) {
|
||||
matches[i] = 1;
|
||||
}
|
||||
} else if (value.includes('/')) {
|
||||
@ -755,7 +749,7 @@ Ext.onReady(function() {
|
||||
fieldLabel: 'End Time',
|
||||
allowBlank: false,
|
||||
format: 'H:i',
|
||||
// can't bind value because ExtJS sets the year to 2008 to
|
||||
// cant bind value because ExtJS sets the year to 2008 to
|
||||
// protect against DST issues and date picker zeroes hour/minute
|
||||
value: vm.get('now'),
|
||||
listeners: {
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
`Proxmox VE`_ Integration
|
||||
-------------------------
|
||||
|
||||
`Proxmox Backup`_ Server can be integrated into a Proxmox VE standalone or
|
||||
cluster setup, by adding it as a storage in Proxmox VE.
|
||||
Proxmox Backup Server can be integrated into a Proxmox VE standalone or cluster
|
||||
setup, by adding it as a storage in Proxmox VE.
|
||||
|
||||
See also the `Proxmox VE Storage - Proxmox Backup Server
|
||||
<https://pve.proxmox.com/pve-docs/pve-admin-guide.html#storage_pbs>`_ section
|
||||
@ -20,7 +20,7 @@ Server as of `Proxmox VE 6.3
|
||||
|
||||
A Proxmox Backup Server can be added under ``Datacenter -> Storage``.
|
||||
|
||||
Using the Proxmox VE Command Line
|
||||
Using the Proxmox VE Command-Line
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
You need to define a new storage with type 'pbs' on your `Proxmox VE`_
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
pxar Command-line Tool
|
||||
pxar Command Line Tool
|
||||
======================
|
||||
|
||||
.. include:: pxar/description.rst
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
``pxar`` is a command-line utility for creating and manipulating archives in the
|
||||
``pxar`` is a command line utility for creating and manipulating archives in the
|
||||
:ref:`pxar-format`.
|
||||
It is inspired by `casync file archive format
|
||||
<http://0pointer.net/blog/casync-a-tool-for-distributing-file-system-images.html>`_,
|
||||
which caters to a similar use-case.
|
||||
The ``.pxar`` format is adapted to fulfill the specific needs of the
|
||||
`Proxmox Backup`_ Server, for example, efficient storage of hard links.
|
||||
The ``.pxar`` format is adapted to fulfill the specific needs of the Proxmox
|
||||
Backup Server, for example, efficient storage of hard links.
|
||||
The format is designed to reduce the required storage on the server by
|
||||
achieving a high level of deduplication.
|
||||
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
:orphan:
|
||||
|
||||
====
|
||||
pxar
|
||||
====
|
||||
|
||||
270
docs/storage.rst
@ -11,7 +11,7 @@ Disk Management
|
||||
:align: right
|
||||
:alt: List of disks
|
||||
|
||||
`Proxmox Backup`_ Server comes with a set of disk utilities, which are
|
||||
Proxmox Backup Server comes with a set of disk utilities, which are
|
||||
accessed using the ``disk`` subcommand or the web interface. This subcommand
|
||||
allows you to initialize disks, create various filesystems, and get information
|
||||
about the disks.
|
||||
@ -48,12 +48,12 @@ You can create an ``ext4`` or ``xfs`` filesystem on a disk using ``fs
|
||||
create``, or by navigating to **Administration -> Storage/Disks -> Directory**
|
||||
in the web interface and creating one from there. The following command creates
|
||||
an ``ext4`` filesystem and passes the ``--add-datastore`` parameter, in order to
|
||||
automatically create a datastore on the disk. This will
|
||||
automatically create a datastore on the disk (in this case ``sdd``). This will
|
||||
create a datastore at the location ``/mnt/datastore/store1``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager disk fs create store1 --disk sdX --filesystem ext4 --add-datastore true
|
||||
# proxmox-backup-manager disk fs create store1 --disk sdd --filesystem ext4 --add-datastore true
|
||||
|
||||
.. image:: images/screenshots/pbs-gui-disks-zfs-create.png
|
||||
:align: right
|
||||
@ -61,12 +61,12 @@ create a datastore at the location ``/mnt/datastore/store1``:
|
||||
|
||||
You can also create a ``zpool`` with various raid levels from **Administration
|
||||
-> Storage/Disks -> ZFS** in the web interface, or by using ``zpool create``. The command
|
||||
below creates a mirrored ``zpool`` using two disks and
|
||||
below creates a mirrored ``zpool`` using two disks (``sdb`` & ``sdc``) and
|
||||
mounts it under ``/mnt/datastore/zpool1``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager disk zpool create zpool1 --devices sdX,sdY --raidlevel mirror
|
||||
# proxmox-backup-manager disk zpool create zpool1 --devices sdb,sdc --raidlevel mirror
|
||||
|
||||
.. note:: You can also pass the ``--add-datastore`` parameter here, to automatically
|
||||
create a datastore from the disk.
|
||||
@ -165,229 +165,6 @@ following command creates a new datastore called ``store1`` on
|
||||
# proxmox-backup-manager datastore create store1 /backup/disk1/store1
|
||||
|
||||
|
||||
Removable Datastores
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
Removable datastores have a ``backing-device`` associated with them, they can be
|
||||
mounted and unmounted. Other than that they behave the same way a normal datastore
|
||||
would.
|
||||
|
||||
They can be created on already correctly formatted partitions, which should be
|
||||
either ``ext4`` or ``xfs`` as with normal datastores, but most modern file
|
||||
systems supported by the Proxmox Linux kernel should work.
|
||||
|
||||
.. note:: FAT-based file systems do not support the POSIX file ownership
|
||||
concept and have relatively low limits on the number of files per directory.
|
||||
Therefore, creating a datastore is not supported on FAT file systems.
|
||||
Because some external drives are preformatted with such a FAT-based file
|
||||
system, you may need to reformat the drive before you can use it as a
|
||||
backing-device for a removable datastore.
|
||||
|
||||
It is also possible to create them on completely unused disks through
|
||||
"Administration" > "Disks / Storage" > "Directory", using this method the disk will
|
||||
be partitioned and formatted automatically for the datastore.
|
||||
|
||||
Devices with only one datastore on them will be mounted automatically. Unmounting has
|
||||
to be done through the UI by clicking "Unmount" on the summary page or using the CLI.
|
||||
If unmounting fails, the reason is logged in the unmount task log, and the
|
||||
datastore will stay in maintenance mode ``unmounting``, which prevents any IO
|
||||
operations. In such cases, the maintenance mode has to be reset manually using:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager datastore update --maintenance-mode offline
|
||||
|
||||
to prevent any IO, or to clear it use:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager datastore update --delete maintenance-mode
|
||||
|
||||
|
||||
A single device can house multiple datastores, they only limitation is that they are not
|
||||
allowed to be nested.
|
||||
|
||||
Removable datastores are created on the the device with the given relative path that is specified
|
||||
on creation. In order to use a datastore on multiple PBS instances, it has to be created on one,
|
||||
and added with ``Reuse existing datastore`` checked on the others. The path you set on creation
|
||||
is how multiple datastores on a single device are identified. So when adding on a new PBS instance,
|
||||
it has to match what was set on creation.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager datastore unmount store1
|
||||
|
||||
both will wait for any running tasks to finish and unmount the device.
|
||||
|
||||
All removable datastores are mounted under /mnt/datastore/<name>, and the specified path
|
||||
refers to the path on the device.
|
||||
|
||||
All datastores present on a device can be listed using ``proxmox-backup-debug``.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-debug inspect device /dev/...
|
||||
|
||||
|
||||
Verify, Prune and Garbage Collection jobs are skipped if the removable
|
||||
datastore is not mounted when they are scheduled. Sync jobs start, but fail
|
||||
with an error saying the datastore was not mounted. The reason is that syncs
|
||||
not happening as scheduled should at least be noticeable.
|
||||
|
||||
.. _datastore_s3_backend:
|
||||
|
||||
Datastores with S3 Backend
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Proxmox Backup Server supports S3 compatible object stores as storage backend for datastores. For
|
||||
this, an S3 endpoint needs to be set-up under "Configuration" > "Remotes" > "S3 Endpoints".
|
||||
|
||||
.. important:: The S3 datastore backend is currently a technology preview.
|
||||
|
||||
.. important:: Keep in mind that operating as S3 backed object store might cause additional costs.
|
||||
Providers might charge you for storage space and API requests performed to the buckets, egress
|
||||
and bandwidth fees might be charged as well. Therefore, monitoring of these values and eventual
|
||||
costs is highly recommended.
|
||||
|
||||
In the endpoint configuration, provide the REST API endpoint for the object store. The endpoint
|
||||
is provider dependent and allows for the bucket and region templating. For example, configuring
|
||||
the endpoint as e.g. ``{{bucket}}.s3.{{region}}.amazonaws.com`` will be expanded to
|
||||
``my-pbs-bucket.s3.eu-central-1.amazonaws.com`` with a configured bucket of name ``my-pbs-bucket``
|
||||
located in region ``eu-central-1``.
|
||||
|
||||
The bucket name is part of the datastore backend configuration rather than the endpoint
|
||||
configuration, as the same endpoint might be reused for multiple bucket. Objects placed in the
|
||||
bucket are prefixed by the datastore name, therefore it is possible to create multiple datastores
|
||||
using the same bucket.
|
||||
|
||||
.. note:: Proxmox Backup Server does not handle bucket creation and access control. The bucket used
|
||||
to store the datastore's objects as well as the access key have to be setup beforehand in your S3
|
||||
provider interface. The Proxmox Backup Server acts as client and requires permissions to get, put
|
||||
list and delete objects in the bucket.
|
||||
|
||||
Most providers allow to access buckets either using a vhost style addressing, the bucket name being
|
||||
part of the endpoint address, or via path style addressing, the bucket name being the prefix to
|
||||
the path components of requests. Proxmox Backup Server supports both styles, favoring the vhost
|
||||
style urls over the path style. To use path style addresses, set the corresponding configuration
|
||||
flag.
|
||||
|
||||
Proxmox Backup Server does not support plain text communication with the S3 API, all communication
|
||||
is encrypted using HTTPS in transit. Therefore, for self-hosted S3 object stores using a self-signed
|
||||
certificate, the matching fingerprint has to be provided to the endpoint configuration. Otherwise
|
||||
the client refuses connections to the S3 object store.
|
||||
|
||||
The following example shows the setup of a new s3 endpoint configuration:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager s3 endpoint create my-s3-ep --access-key 'my-access-key' --secret-key 'my-secret-key' --endpoint '{{bucket}}.s3.{{region}}.amazonaws.com' --region eu-central-1
|
||||
|
||||
To list your s3 endpoint configuration, run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager s3 endpoint list
|
||||
|
||||
A new datastore with S3 backend can be created using one of the configured S3 endpoints. Although
|
||||
storing all contents on the S3 object store, the datastore requires nevertheless a local cache store,
|
||||
used to increase performance and reduce the number of requests to the backend. For this, a local
|
||||
filesystem path has to be provided during datastore creation, just like for regular datastore setup.
|
||||
A minimum size of a few GiB of storage is recommended, given that cache datastore contents include
|
||||
also data chunks.
|
||||
|
||||
To setup a new datastore called ``my-s3-store`` placed in a bucket called ``pbs-s3-bucket``, run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager datastore create my-s3-store /mnt/datastore/my-s3-store-cache --backend type=s3,client=my-s3-ep,bucket=pbs-s3-bucket
|
||||
|
||||
A datastore cannot be shared between multiple Proxmox Backup Server instances, only one instance can
|
||||
operate on the datastore at a time. However, datastore contents used on an instance which is no
|
||||
longer available can be reused on a fresh installation. To recreate the datastore, you must pass the
|
||||
``reuse-datastore`` and ``overwrite-in-use`` flags. Since the datastore name is used as prefix, the
|
||||
same datastore name must be used.
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager datastore create my-s3-store /mnt/datastore/my-new-s3-store-cache --backend type=s3,client=my-s3-ep,bucket=pbs-s3-bucket --reuse-datastore true --overwrite-in-use true
|
||||
|
||||
.. note:: If your S3 object store runs out of space while performing write operation to it, most
|
||||
likely cleanup operations such as cleaning up of contents within a snapshot directory will fail
|
||||
as well. The recommended procedure is to cleanup any stray objects corresponding to this snapshot
|
||||
on the S3 object store manually and refresh the contents via an ``S3 refresh``, either via the
|
||||
CLI or UI.
|
||||
|
||||
|
||||
.. _datastore_s3_endpoint_examples:
|
||||
|
||||
S3 Datastore Backend Configuration Examples
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The following shows example configurations for some typical S3 object store providers as excerpts
|
||||
(data relevant to S3 config only) from ``/etc/proxmox-backup/s3.cfg`` and
|
||||
``/etc/proxmox-backup/datastore.cfg``:
|
||||
|
||||
Self hosted S3 object store with Ceph Rados Gateway using plain IP address, custom port, self-signed
|
||||
certificate and path-style bucket:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# cat /etc/proxmox-backup/s3.cfg
|
||||
|
||||
s3-endpoint: ceph-s3-rados-gw
|
||||
access-key XXXXXXXXXXXXXXXXXXXX
|
||||
endpoint 172.16.0.200
|
||||
fingerprint XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
|
||||
path-style true
|
||||
port 7480
|
||||
secret-key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
|
||||
|
||||
# cat /etc/proxmox-backup/datastore.cfg
|
||||
|
||||
datastore: ceph-s3-rgw-store
|
||||
backend bucket=pbs-ceph-bucket,client=ceph-s3-rados-gw,type=s3
|
||||
path /mnt/datastore/ceph-s3-rgw-store-local-cache
|
||||
|
||||
AWS S3 with vhost style bucket addressing, using bucket name and region templating for the endpoint
|
||||
url:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# cat /etc/proxmox-backup/s3.cfg
|
||||
|
||||
s3-endpoint: aws-s3
|
||||
access-key XXXXXXXXXXXXXXXXXXXX
|
||||
endpoint {{bucket}}.s3.{{region}}.amazonaws.com
|
||||
region eu-central-1
|
||||
secret-key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
|
||||
# cat /etc/proxmox-backup/datastore.cfg
|
||||
|
||||
datastore: aws-s3-store
|
||||
backend bucket=pbs-s3-bucket,client=aws-s3,type=s3
|
||||
path /mnt/datastore/aws-s3-store-local-cache
|
||||
|
||||
Cloudflare R2 with path style bucket addressing, note that region must be set to ``auto`` as
|
||||
otherwise request authentication might fail:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# cat /etc/proxmox-backup/s3.cfg
|
||||
|
||||
s3-endpoint: cloudflare-r2
|
||||
access-key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
endpoint XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.r2.cloudflarestorage.com
|
||||
path-style true
|
||||
region auto
|
||||
secret-key XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
||||
|
||||
# cat /etc/proxmox-backup/datastore.cfg
|
||||
|
||||
datastore: r2-s3-store
|
||||
backend bucket=pbs-r2-bucket,client=cloudflare-r2,type=s3
|
||||
path /mnt/datastore/r2-s3-store-local-cache
|
||||
|
||||
|
||||
Managing Datastores
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -486,7 +263,7 @@ categorized by checksum, after a backup operation has been executed.
|
||||
|
||||
|
||||
Once you've uploaded some backups or created namespaces, you may see the backup
|
||||
type (`ct`, `vm`, `host`) and the start of the namespace hierarchy (`ns`).
|
||||
type (`ct`, `vm`, `host`) and the start of the namespace hierachy (`ns`).
|
||||
|
||||
.. _storage_namespaces:
|
||||
|
||||
@ -537,7 +314,7 @@ Options
|
||||
|
||||
There are a few per-datastore options:
|
||||
|
||||
* :ref:`Notification mode and legacy notification settings <notification_mode>`
|
||||
* :ref:`Notifications <maintenance_notification>`
|
||||
* :ref:`Maintenance Mode <maintenance_mode>`
|
||||
* Verification of incoming backups
|
||||
|
||||
@ -558,11 +335,11 @@ There are some tuning related options for the datastore that are more advanced:
|
||||
index file (.fidx/.didx). While this might slow down iterating on many slow
|
||||
storages, on very fast ones (for example: NVMEs) the collecting and sorting
|
||||
can take more time than gained through the sorted iterating.
|
||||
This option can be set with:
|
||||
This option can be set with:
|
||||
|
||||
.. code-block:: console
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager datastore update <storename> --tuning 'chunk-order=none'
|
||||
# proxmox-backup-manager datastore update <storename> --tuning 'chunk-order=none'
|
||||
|
||||
* ``sync-level``: Datastore fsync level:
|
||||
|
||||
@ -590,30 +367,9 @@ There are some tuning related options for the datastore that are more advanced:
|
||||
|
||||
This can be set with:
|
||||
|
||||
.. code-block:: console
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-backup-manager datastore update <storename> --tuning 'sync-level=filesystem'
|
||||
|
||||
* ``gc-atime-safety-check``: Datastore GC atime update safety check:
|
||||
You can explicitly `enable` or `disable` the atime update safety check
|
||||
performed on datastore creation and garbage collection. This checks if atime
|
||||
updates are handled as expected by garbage collection and therefore avoids the
|
||||
risk of data loss by unexpected filesystem behavior. It is recommended to set
|
||||
this to enabled, which is also the default value.
|
||||
|
||||
* ``gc-atime-cutoff``: Datastore GC atime cutoff for chunk cleanup:
|
||||
This allows to set the cutoff for which a chunk is still considered in-use
|
||||
during phase 2 of garbage collection (given no older writers). If the
|
||||
``atime`` of the chunk is outside the range, it will be removed.
|
||||
|
||||
* ``gc-cache-capacity``: Datastore GC least recently used cache capacity:
|
||||
Allows to control the cache capacity used to keep track of chunks for which
|
||||
the access time has already been updated during phase 1 of garbage collection.
|
||||
This avoids multiple updates and increases GC runtime performance. Higher
|
||||
values can reduce GC runtime at the cost of increase memory usage, setting the
|
||||
value to 0 disables caching. The given value sets the number of available
|
||||
cache slots, 1048576 (= 1024 * 1024) being the default, 8388608 (= 8192 *
|
||||
1024) the maximum value.
|
||||
# proxmox-backup-manager datastore update <storename> --tuning 'sync-level=filesystem'
|
||||
|
||||
If you want to set multiple tuning options simultaneously, you can separate them
|
||||
with a comma, like this:
|
||||
@ -663,7 +419,7 @@ remote-source to avoid that an attacker that took over the source can cause
|
||||
deletions of backups on the target hosts.
|
||||
If the source-host became victim of a ransomware attack, there is a good chance
|
||||
that sync jobs will fail, triggering an :ref:`error notification
|
||||
<Notification Events>`.
|
||||
<maintenance_notification>`.
|
||||
|
||||
It is also possible to create :ref:`tape backups <tape_backup>` as a second
|
||||
storage medium. This way, you get an additional copy of your data on a
|
||||
|
||||
@ -9,7 +9,7 @@ Debian packages, and that the base system is well documented. The `Debian
|
||||
Administrator's Handbook`_ is available online, and provides a
|
||||
comprehensive introduction to the Debian operating system.
|
||||
|
||||
A standard Proxmox Backup installation uses the default
|
||||
A standard `Proxmox Backup`_ installation uses the default
|
||||
repositories from Debian, so you get bug fixes and security updates
|
||||
through that channel. In addition, we provide our own package
|
||||
repository to roll out all Proxmox related packages. This includes
|
||||
@ -19,8 +19,8 @@ We also deliver a specially optimized Linux kernel, based on the Ubuntu
|
||||
kernel. This kernel includes drivers for ZFS_.
|
||||
|
||||
The following sections will concentrate on backup related topics. They
|
||||
will explain things which are different on Proxmox Backup, or
|
||||
tasks which are commonly used on Proxmox Backup. For other topics,
|
||||
will explain things which are different on `Proxmox Backup`_, or
|
||||
tasks which are commonly used on `Proxmox Backup`_. For other topics,
|
||||
please refer to the standard Debian documentation.
|
||||
|
||||
|
||||
@ -30,8 +30,6 @@ please refer to the standard Debian documentation.
|
||||
|
||||
.. include:: certificate-management.rst
|
||||
|
||||
.. include:: external-metric-server.rst
|
||||
|
||||
.. include:: services.rst
|
||||
|
||||
.. include:: command-line-tools.rst
|
||||
|
||||
@ -8,9 +8,8 @@ Host Bootloader
|
||||
selected in the installer.
|
||||
|
||||
For EFI Systems installed with ZFS as the root filesystem ``systemd-boot`` is
|
||||
used, unless Secure Boot is enabled. All other deployments use the standard
|
||||
``grub`` bootloader (this usually also applies to systems which are installed
|
||||
on top of Debian).
|
||||
used. All other deployments use the standard ``grub`` bootloader (this usually
|
||||
also applies to systems which are installed on top of Debian).
|
||||
|
||||
|
||||
.. _systembooting-installer-part-scheme:
|
||||
@ -18,7 +17,7 @@ on top of Debian).
|
||||
Partitioning Scheme Used by the Installer
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The Proxmox Backup installer creates 3 partitions on all disks selected for
|
||||
The `Proxmox Backup`_ installer creates 3 partitions on all disks selected for
|
||||
installation.
|
||||
|
||||
The created partitions are:
|
||||
@ -31,10 +30,9 @@ The created partitions are:
|
||||
remaining space available for the chosen storage type
|
||||
|
||||
Systems using ZFS as a root filesystem are booted with a kernel and initrd image
|
||||
stored on the 512 MB EFI System Partition. For legacy BIOS systems, and EFI
|
||||
systems with Secure Boot enabled, ``grub`` is used, for EFI systems without
|
||||
Secure Boot, ``systemd-boot`` is used. Both are installed and configured to
|
||||
point to the ESPs.
|
||||
stored on the 512 MB EFI System Partition. For legacy BIOS systems, ``grub`` is
|
||||
used, for EFI systems ``systemd-boot`` is used. Both are installed and configured
|
||||
to point to the ESPs.
|
||||
|
||||
``grub`` in BIOS mode (``--target i386-pc``) is installed onto the BIOS Boot
|
||||
Partition of all selected disks on all systems booted with ``grub`` (that is,
|
||||
@ -86,10 +84,10 @@ Setting up a New Partition for use as Synced ESP
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
To format and initialize a partition as synced ESP, for example, after replacing a
|
||||
failed vdev in an rpool, ``proxmox-boot-tool`` from ``proxmox-kernel-helper`` can be used.
|
||||
failed vdev in an rpool, ``proxmox-boot-tool`` from ``pve-kernel-helper`` can be used.
|
||||
|
||||
.. WARNING:: the ``format`` command will format the ``<partition>``. Make sure
|
||||
to pass in the right device/partition!
|
||||
WARNING: the ``format`` command will format the ``<partition>``. Make sure to pass
|
||||
in the right device/partition!
|
||||
|
||||
For example, to format an empty partition ``/dev/sda2`` as ESP, run the following:
|
||||
|
||||
@ -98,21 +96,12 @@ For example, to format an empty partition ``/dev/sda2`` as ESP, run the followin
|
||||
# proxmox-boot-tool format /dev/sda2
|
||||
|
||||
To setup an existing, unmounted ESP located on ``/dev/sda2`` for inclusion in
|
||||
Proxmox Backup's kernel update synchronization mechanism, use the following:
|
||||
`Proxmox Backup`_'s kernel update synchronization mechanism, use the following:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-boot-tool init /dev/sda2
|
||||
|
||||
or
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-boot-tool init /dev/sda2 grub
|
||||
|
||||
to force initialization with Grub instead of systemd-boot, for example for
|
||||
Secure Boot support.
|
||||
|
||||
Following this, `/etc/kernel/proxmox-boot-uuids`` should contain a new line with the
|
||||
UUID of the newly added partition. The ``init`` command will also automatically
|
||||
trigger a refresh of all configured ESPs.
|
||||
@ -198,7 +187,7 @@ Determine which Bootloader is Used
|
||||
:alt: Grub boot screen
|
||||
|
||||
The simplest and most reliable way to determine which bootloader is used, is to
|
||||
watch the boot process of the Proxmox Backup node.
|
||||
watch the boot process of the `Proxmox Backup`_ node.
|
||||
|
||||
|
||||
You will either see the blue box of ``grub`` or the simple black on white
|
||||
@ -254,8 +243,6 @@ and is quite well documented
|
||||
(see the `Grub Manual
|
||||
<https://www.gnu.org/software/grub/manual/grub/grub.html>`_).
|
||||
|
||||
.. _systembooting-grub-config:
|
||||
|
||||
Configuration
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
@ -278,8 +265,8 @@ Systemd-boot
|
||||
``systemd-boot`` is a lightweight EFI bootloader. It reads the kernel and initrd
|
||||
images directly from the EFI Service Partition (ESP) where it is installed.
|
||||
The main advantage of directly loading the kernel from the ESP is that it does
|
||||
not need to reimplement the drivers for accessing the storage. In Proxmox
|
||||
Backup, :ref:`proxmox-boot-tool <systembooting-proxmox-boot-tool>` is used to
|
||||
not need to reimplement the drivers for accessing the storage. In `Proxmox
|
||||
Backup`_, :ref:`proxmox-boot-tool <systembooting-proxmox-boot-tool>` is used to
|
||||
keep the configuration on the ESPs synchronized.
|
||||
|
||||
.. _systembooting-systemd-boot-config:
|
||||
@ -313,8 +300,6 @@ Editing the Kernel Commandline
|
||||
You can modify the kernel commandline in the following places, depending on the
|
||||
bootloader used:
|
||||
|
||||
.. _systembooting-kernel-cmdline-grub:
|
||||
|
||||
Grub
|
||||
^^^^
|
||||
|
||||
@ -323,8 +308,6 @@ The kernel commandline needs to be placed in the variable
|
||||
``update-grub`` appends its content to all ``linux`` entries in
|
||||
``/boot/grub/grub.cfg``.
|
||||
|
||||
.. _systembooting-kernel-cmdline-systemd-boot:
|
||||
|
||||
systemd-boot
|
||||
^^^^^^^^^^^^
|
||||
|
||||
@ -359,7 +342,7 @@ would run:
|
||||
# proxmox-boot-tool kernel pin 5.15.30-1-pve
|
||||
|
||||
|
||||
.. TIP:: The pinning functionality works for all Proxmox Backup systems, not only those using
|
||||
.. TIP:: The pinning functionality works for all `Proxmox Backup`_ systems, not only those using
|
||||
``proxmox-boot-tool`` to synchronize the contents of the ESPs, if your system
|
||||
does not use ``proxmox-boot-tool`` for synchronizing, you can also skip the
|
||||
``proxmox-boot-tool refresh`` call in the end.
|
||||
@ -392,188 +375,3 @@ content and configuration on the ESPs by running the ``refresh`` subcommand.
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-boot-tool refresh
|
||||
|
||||
|
||||
|
||||
.. _systembooting-secure-boot:
|
||||
|
||||
Secure Boot
|
||||
~~~~~~~~~~~
|
||||
|
||||
Since Proxmox Backup 3.1, Secure Boot is supported out of the box via signed
|
||||
packages and integration in ``proxmox-boot-tool``.
|
||||
|
||||
The following packages need to be installed for Secure Boot to be enabled:
|
||||
|
||||
* ``shim-signed`` (shim bootloader signed by Microsoft)
|
||||
* ``shim-helpers-amd64-signed`` (fallback bootloader and MOKManager, signed by Proxmox)
|
||||
* ``grub-efi-amd64-signed`` (Grub EFI bootloader, signed by Proxmox)
|
||||
* ``proxmox-kernel-6.X.Y-Z-pve-signed`` (Kernel image, signed by Proxmox)
|
||||
|
||||
Only Grub as bootloader is supported out of the box, since there are no other
|
||||
pre-signed bootloader packages available. Any new installation of Proxmox Backup
|
||||
will automatically have all of the above packages included.
|
||||
|
||||
More details about how Secure Boot works, and how to customize the setup, are
|
||||
available in `our wiki <https://pve.proxmox.com/wiki/Secure_Boot_Setup>`_.
|
||||
|
||||
|
||||
.. _systembooting-secure-boot-existing-installation:
|
||||
|
||||
Switching an Existing Installation to Secure Boot
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. WARNING:: This can lead to an unbootable installation in some cases if not
|
||||
done correctly. Reinstalling the host will setup Secure Boot automatically if
|
||||
available, without any extra interactions. **Make sure you have a working and
|
||||
well-tested backup of your Proxmox Backup host!**
|
||||
|
||||
An existing UEFI installation can be switched over to Secure Boot if desired,
|
||||
without having to reinstall Proxmox Backup from scratch.
|
||||
|
||||
First, ensure all your system is up-to-date. Next, install all the required
|
||||
pre-signed packages as listed above. Grub automatically creates the needed EFI
|
||||
boot entry for booting via the default shim.
|
||||
|
||||
.. _systembooting-secure-boot-existing-systemd-boot:
|
||||
|
||||
**systemd-boot**
|
||||
""""""""""""""""
|
||||
|
||||
If ``systemd-boot`` is used as a bootloader (see
|
||||
:ref:`Determine which Bootloader is used <systembooting-determine-bootloader>`),
|
||||
some additional setup is needed. This is only the case if Proxmox Backup was
|
||||
installed with ZFS-on-root.
|
||||
|
||||
To check the latter, run:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# findmnt /
|
||||
|
||||
|
||||
If the host is indeed using ZFS as root filesystem, the ``FSTYPE`` column should
|
||||
contain ``zfs``:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
TARGET SOURCE FSTYPE OPTIONS
|
||||
/ rpool/ROOT/pbs-1 zfs rw,relatime,xattr,noacl
|
||||
|
||||
Next, a suitable potential ESP (EFI system partition) must be found. This can be
|
||||
done using the ``lsblk`` command as following:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# lsblk -o +FSTYPE
|
||||
|
||||
The output should look something like this:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS FSTYPE
|
||||
sda 8:0 0 32G 0 disk
|
||||
├─sda1 8:1 0 1007K 0 part
|
||||
├─sda2 8:2 0 512M 0 part vfat
|
||||
└─sda3 8:3 0 31.5G 0 part zfs_member
|
||||
sdb 8:16 0 32G 0 disk
|
||||
├─sdb1 8:17 0 1007K 0 part
|
||||
├─sdb2 8:18 0 512M 0 part vfat
|
||||
└─sdb3 8:19 0 31.5G 0 part zfs_member
|
||||
|
||||
In this case, the partitions ``sda2`` and ``sdb2`` are the targets. They can be
|
||||
identified by the their size of 512M and their ``FSTYPE`` being ``vfat``, in
|
||||
this case on a ZFS RAID-1 installation.
|
||||
|
||||
These partitions must be properly set up for booting through Grub using
|
||||
``proxmox-boot-tool``. This command (using ``sda2`` as an example) must be run
|
||||
separately for each individual ESP:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# proxmox-boot-tool init /dev/sda2 grub
|
||||
|
||||
Afterwards, you can sanity-check the setup by running the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# efibootmgr -v
|
||||
|
||||
This list should contain an entry looking similar to this:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
[..]
|
||||
Boot0009* proxmox HD(2,GPT,..,0x800,0x100000)/File(\EFI\proxmox\shimx64.efi)
|
||||
[..]
|
||||
|
||||
.. NOTE:: The old ``systemd-boot`` bootloader will be kept, but Grub will be
|
||||
preferred. This way, if booting using Grub in Secure Boot mode does not work
|
||||
for any reason, the system can still be booted using ``systemd-boot`` with
|
||||
Secure Boot turned off.
|
||||
|
||||
Now the host can be rebooted and Secure Boot enabled in the UEFI firmware setup
|
||||
utility.
|
||||
|
||||
On reboot, a new entry named ``proxmox`` should be selectable in the UEFI
|
||||
firmware boot menu, which boots using the pre-signed EFI shim.
|
||||
|
||||
If, for any reason, no ``proxmox`` entry can be found in the UEFI boot menu, you
|
||||
can try adding it manually (if supported by the firmware), by adding the file
|
||||
``\EFI\proxmox\shimx64.efi`` as a custom boot entry.
|
||||
|
||||
.. NOTE:: Some UEFI firmwares are known to drop the ``proxmox`` boot option on
|
||||
reboot. This can happen if the ``proxmox`` boot entry is pointing to a Grub
|
||||
installation on a disk, where the disk itself is not a boot option. If
|
||||
possible, try adding the disk as a boot option in the UEFI firmware setup
|
||||
utility and run ``proxmox-boot-tool`` again.
|
||||
|
||||
.. TIP:: To enroll custom keys, see the accompanying `Secure Boot wiki page
|
||||
<https://pve.proxmox.com/wiki/Secure_Boot_Setup#Setup_instructions_for_db_key_variant>`_.
|
||||
|
||||
|
||||
.. _systembooting-secure-boot-other-modules:
|
||||
|
||||
Using DKMS/Third Party Modules With Secure Boot
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
On systems with Secure Boot enabled, the kernel will refuse to load modules
|
||||
which are not signed by a trusted key. The default set of modules shipped with
|
||||
the kernel packages is signed with an ephemeral key embedded in the kernel
|
||||
image which is trusted by that specific version of the kernel image.
|
||||
|
||||
In order to load other modules, such as those built with DKMS or manually, they
|
||||
need to be signed with a key trusted by the Secure Boot stack. The easiest way
|
||||
to achieve this is to enroll them as Machine Owner Key (``MOK``) with
|
||||
``mokutil``.
|
||||
|
||||
The ``dkms`` tool will automatically generate a keypair and certificate in
|
||||
``/var/lib/dkms/mok.key`` and ``/var/lib/dkms/mok.pub`` and use it for signing
|
||||
the kernel modules it builds and installs.
|
||||
|
||||
You can view the certificate contents with
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# openssl x509 -in /var/lib/dkms/mok.pub -noout -text
|
||||
|
||||
and enroll it on your system using the following command:
|
||||
|
||||
.. code-block:: console
|
||||
|
||||
# mokutil --import /var/lib/dkms/mok.pub
|
||||
input password:
|
||||
input password again:
|
||||
|
||||
The ``mokutil`` command will ask for a (temporary) password twice, this password
|
||||
needs to be entered one more time in the next step of the process! Rebooting
|
||||
the system should automatically boot into the ``MOKManager`` EFI binary, which
|
||||
allows you to verify the key/certificate and confirm the enrollment using the
|
||||
password selected when starting the enrollment using ``mokutil``. Afterwards,
|
||||
the kernel should allow loading modules built with DKMS (which are signed with
|
||||
the enrolled ``MOK``). The ``MOK`` can also be used to sign custom EFI binaries
|
||||
and kernel images if desired.
|
||||
|
||||
The same procedure can also be used for custom/third-party modules not managed
|
||||
with DKMS, but the key/certificate generation and signing steps need to be done
|
||||
manually in that case.
|
||||
|
||||