Add enhancements to autobackup
1. Add a cron mode to avoid exit(1) during cronjobs/timers 2. Revamp the remote_mount settings into auto_mount This removes a lot of unnecessary complexity while giving the administrator more flexibility in what they want to execute to mount a filesystem and how. The naming reflects the goal but the possible commands are arbitrary.
This commit is contained in:
@ -31,117 +31,22 @@ autobackup:
|
||||
# > Should usually be at least 2 when using incrementals (full_interval > 1) to
|
||||
# avoid there being too few backups after cleanup from a new full backup
|
||||
|
||||
# Remote mount settings for backup root path
|
||||
# If remote mount support is disabled, it is up to the administrator to that the backup root path is
|
||||
# created and a valid destination filesystem is mounted on it
|
||||
remote_mount:
|
||||
enabled: no # Enable automatic remote mount/unmount support
|
||||
type: sshfs # Set the type of remote mount; optional if remote_mount is disabled
|
||||
# > Supported values are: sshfs, nfs, cifs (i.e. SMB), cephfs, and s3fs
|
||||
# > WARNING: s3fs has serious known bugs that we don't work around; avoid it if possible
|
||||
|
||||
# Remote mount configurations, per-type; you only need to specify the type(s) you plan to use, but all
|
||||
# are given here for completeness as examples
|
||||
# > NOTE: This key (and all children) are optional if remote mounting is not enabled
|
||||
remote_mount_config:
|
||||
|
||||
# SSHFS specific options
|
||||
# > NOTE: This SSHFS implementation does not support password authentication; keys MUST be used
|
||||
sshfs:
|
||||
# Remote username
|
||||
user: username
|
||||
# Remote hostname
|
||||
host: hostname
|
||||
# Remote path
|
||||
path: /srv/vm_backups
|
||||
# Required command to check for or error
|
||||
command: /usr/bin/sshfs
|
||||
# Options to pass to the mount command (joined, each requires "-o"!)
|
||||
# See the command manual page for more options
|
||||
options:
|
||||
- "-o IdentityFile=/srv/pvc_autobackup.id_ed25519" # Identity (SSH key) file, required!
|
||||
- "-o port=22" # Port number
|
||||
- "-o reconnect" # Enable reconnection
|
||||
- "-o default_permissions" # Enable local permission checking
|
||||
- "-o compression=no" # Disable compression; testing shows that compression slows things
|
||||
# down a fair bit (1m40.435s vs 0m22.253s for 750MB on 10GbE net)
|
||||
- "-o sshfs_sync" # Enable sync; ensures consistent writes with an acceptable performance
|
||||
# overhead (0m22.253s vs 0m17.453s for 750GB on 10GbE net)
|
||||
# Mount command, populated at import time
|
||||
mount_cmd: "{command} {sshfs_user}@{sshfs_host}:{sshfs_path} {backup_root_path} {sshfs_options}"
|
||||
# Unmount command, populated at import time
|
||||
unmount_cmd: "fusermount3 -u {backup_root_path}"
|
||||
|
||||
# NFS specific options
|
||||
nfs:
|
||||
# Remote hostname
|
||||
host: hostname
|
||||
# Remote path
|
||||
path: /srv/vm_backups
|
||||
# Required command to check for or error
|
||||
command: /usr/sbin/mount.nfs
|
||||
# Options to pass to the mount command (joined and passed to "-o")
|
||||
# See the command manual page for more options
|
||||
options:
|
||||
- "nfsvers=3" # Use a specific NFS version
|
||||
# Mount command, populated at import time
|
||||
mount_cmd: "{command} -o {nfs_options} {nfs_host}:{nfs_path} {backup_root_path}"
|
||||
# Unmount command, populated at import time
|
||||
unmount_cmd: "umount {backup_root_path}"
|
||||
|
||||
# CIFS specific options
|
||||
cifs:
|
||||
# Remote hostname
|
||||
host: hostname
|
||||
# Remote path be sure to include the leading '/'!)
|
||||
path: /srv/vm_backups
|
||||
# Required command to check for or error
|
||||
command: /usr/sbin/mount.cifs
|
||||
# Options to pass to the mount command (joined and passed to "-o")
|
||||
# See the command manual page for more options
|
||||
options:
|
||||
- "credentials=/srv/backup_vms.cifs_credentials" # Specify a credentials file
|
||||
- "guest" # Use guest access, alternate to above
|
||||
# Mount command, populated at import time
|
||||
mount_cmd: "{command} -o {cifs_options} //{cifs_host}{cifs_path} {backup_root_path}"
|
||||
# Unmount command, populated at import time
|
||||
unmount_cmd: "umount {backup_root_path}"
|
||||
|
||||
# CephFS specific options
|
||||
cephfs:
|
||||
# Monitor address/hostname list
|
||||
monitors:
|
||||
- mon1
|
||||
# CephFS path; at least "/" is always required
|
||||
path: "/mysubdir"
|
||||
# Required command to check for or error
|
||||
command: /usr/sbin/mount.ceph
|
||||
# Options to pass to mount command (joined and passed to "-o")
|
||||
# See the command manual page for more options
|
||||
options:
|
||||
- "secretfile=/srv/backup_vms.cephfs_secret" # Specify a cephx secret file
|
||||
- "conf=/srv/backup_vms.ceph.conf" # Specify a nonstandard ceph.conf file
|
||||
# Mount command, populated at import time
|
||||
mount_cmd: "{command} {cephfs_monitors}:{cephfs_path} {backup_root_path} -o {cephfs_options}"
|
||||
# Unmount command, populated at import time
|
||||
unmount_cmd: "umount {backup_root_path}"
|
||||
|
||||
# S3FS specific options
|
||||
s3fs:
|
||||
# S3 bucket
|
||||
bucket: mybucket
|
||||
# S3 bucket (sub)path, including leading ':' if used!
|
||||
# Leave empty for no (sub)path
|
||||
path: ":/mypath"
|
||||
# Required command to check for or error
|
||||
command: /usr/bin/s3fs
|
||||
# Options to pass to the mount command (joined, each requires "-o"!)
|
||||
# See the command manual page for more options
|
||||
options:
|
||||
- "-o passwd_file=/srv/backup_vms.s3fs_credentials" # Specify a password file
|
||||
- "-o host=https://s3.amazonaws.com" # Specify an alternate host
|
||||
- "-o endpoint=us-east-1" # Specify an alternate endpoint/region
|
||||
# Mount command, populated at import time
|
||||
mount_cmd: "{command} {s2fs_bucket}{s3fs_path} {backup_root_path} {s3fs_options}"
|
||||
# Unmount command, populated at import time
|
||||
unmount_cmd: "fusermount3 -u {backup_root_path}"
|
||||
# Automatic mount settings
|
||||
# These settings permit running an arbitrary set of commands, ideally a "mount" command or similar, to
|
||||
# ensure that a remote filesystem is mounted on the backup root path
|
||||
# While the examples here show absolute paths, that is not required; they will run with the $PATH of the
|
||||
# executing environment (either the "pvc" command on a CLI or a cron/systemd timer)
|
||||
# A "{backup_root_path}" f-string/str.format type variable MAY be present in any cmds string to represent
|
||||
# the above configured root backup path, which is interpolated at runtime
|
||||
# If multiple commands are given, they will be executed in the order given; if no commands are given,
|
||||
# nothing is executed, but the keys MUST be present
|
||||
auto_mount:
|
||||
enabled: no # Enable automatic mount/unmount support
|
||||
# These commands are executed at the start of the backup run and should mount a filesystem
|
||||
mount_cmds:
|
||||
# This example shows an NFS mount leveraging the backup_root_path variable
|
||||
- "/usr/sbin/mount.nfs -o nfsvers=3 10.0.0.10:/backups {backup_root_path}"
|
||||
# These commands are executed at the end of the backup run and should unmount a filesystem
|
||||
unmount_cmds:
|
||||
# This example shows a generic umount leveraging the backup_root_path variable
|
||||
- "/usr/bin/umount {backup_root_path}"
|
||||
|
Reference in New Issue
Block a user