Operations¶
Legacy API (dict-based)¶
Getting Client Status¶
client_status = server.get_client_status("client_name")
if client_status:
print(f"Client status: {client_status}")
Starting Backups¶
server.start_incr_file_backup("client_name")
server.start_full_file_backup("client_name")
server.start_incr_image_backup("client_name")
server.start_full_image_backup("client_name")
Settings¶
settings = server.get_global_settings()
server.set_global_setting("backup_window", "1-5/8-17")
server.change_client_setting("client_name", "default_dirs", "/home;/etc")
server.change_client_setting("client_name", "update_freq_incr", "4")
Managing Clients¶
new_client = server.add_client("new_client_name")
server.add_extra_client("10.0.0.5")
extras = server.get_extra_clients()
Monitoring¶
actions = server.get_actions()
for action in actions or []:
server.stop_action(action)
log = server.get_livelog()
usage = server.get_usage()
Download Installer¶
server.download_installer("installer.sh", "new_client", os="linux")
Typed API (dataclass-based)¶
The typed API returns structured dataclass objects and raises exceptions instead of returning None.
Client Status¶
from urbackup import ClientNotFoundError
clients = server.get_client_statuses()
for client in clients:
print(f"{client.name}: id={client.id}, online={client.online}")
try:
client = server.get_client_status_by_name("my-client")
print(f"Last backup: {client.lastbackup}")
except ClientNotFoundError:
print("Client not found")
Starting Backups¶
from urbackup import BackupType
server.start_backup_typed("client_name", BackupType.INCR_FILE)
server.start_backup_typed("client_name", BackupType.FULL_IMAGE)
Backup History¶
backups = server.get_backups(clientid=1)
for b in backups:
print(f"Backup {b.id}: {b.size_bytes} bytes at {b.backuptime}")
images = server.get_image_backups(clientid=1)
Settings¶
settings = server.get_global_settings_typed()
server.set_global_setting_typed("backup_window", "1-7/0-24")
client_settings = server.get_client_settings_typed("my-client")
server.change_client_setting_typed("my-client", "internet_speed", "50000")
Monitoring¶
for action in server.get_actions_typed():
print(f"Client {action.clientid}: {action.progress_percent}%")
server.stop_action_typed(action)
for entry in server.get_livelog_typed():
print(f"[{entry.level}] {entry.message}")
for entry in server.get_usage_typed():
print(f"{entry.name}: {entry.used} bytes")
Extra Clients¶
for ec in server.get_extra_clients_typed():
print(f"{ec.hostname} (id={ec.id})")
Users and Groups¶
from urbackup import UserAlreadyExistsError
users = server.get_users()
groups = server.get_groups()
try:
server.add_user("newadmin", "password123")
except UserAlreadyExistsError:
print("User already exists")
Download Installer¶
from urbackup import InstallerOS
server.download_installer_typed("installer.sh", "new_client", os=InstallerOS.LINUX)