Python UrBackup is a powerful Python wrapper designed to interact with UrBackup servers. This library allows you to manage backups, restore operations, and monitor the server status programmatically.
Originally urbackup-server-web-api-wrapper
Install with:
pip install python-urbackupCreate an instance of the urbackup_server by specifying the server URL, username, and password. Replace 'your_server_url', 'your_username', and 'your_password' with your server details:
from urbackup import urbackup_server
server = urbackup_server('your_server_url', 'your_username', 'your_password')To perform any operations, you need to log in:
if server.login():
    print("Login successful!")
else:
    print("Login failed!")Retrieve the status of a specific client:
client_status = server.get_client_status('client_name')
if client_status:
    print(f"Client status: {client_status}")
else:
    print("Client not found or access denied.")To download an installer for a new client, specify the file path and the client's name:
if server.download_installer('path/to/installer', 'new_client_name'):
    print("Installer downloaded successfully.")
else:
    print("Failed to download installer.")You can start different types of backups for a client. Here are examples of starting an incremental file backup and a full file backup:
if server.start_incr_file_backup('client_name'):
    print("Incremental file backup started successfully.")
else:
    print("Failed to start incremental file backup.")
if server.start_full_file_backup('client_name'):
    print("Full file backup started successfully.")
else:
    print("Failed to start full file backup.")Add a new client to the server:
new_client = server.add_client('new_client_name')
if new_client:
    print("New client added:", new_client)
else:
    print("Failed to add new client.")List clients with no file backup in the last three days:
import urbackup
import time
import datetime
server = urbackup.urbackup_server("http://127.0.0.1:55414/x", "admin", "foo")
clients = server.get_status()
diff_time = 3*24*60*60 # 3 days
for client in clients:
    if client["lastbackup"]=="-" or client["lastbackup"] < time.time() - diff_time:
        if client["lastbackup"]=="-" or client["lastbackup"]==0:
            lastbackup = "Never"
        else:
            lastbackup = datetime.datetime.fromtimestamp(client["lastbackup"]).strftime("%x %X")
        print("Last file backup at {lastbackup} of client {clientname} is older than three days".format(
              lastbackup=lastbackup, clientname=client["name"] ) )For more information, please refer to the API Reference.
The UrBackup CLI is a command-line interface that allows you to interact with the UrBackup server from a client machine.
Important Note: For Windows the command-line tool is urbackupclient_cmd. Mac and Linux use urbackupclientctl.
CLI options for urbackupclientctl and urbackupclientctl are as follows:
USAGE:
        urbackupclientctl [--help] [--version] <command> [<args>]
Get specific command help with urbackupclientctl <command> --help
        urbackupclientctl start
                Start an incremental/full image/file backup
        urbackupclientctl status
                Get current backup status
        urbackupclientctl browse
                Browse backups and files/folders in backups
        urbackupclientctl restore-start
                Restore files/folders from backup
        urbackupclientctl set-settings
                Set backup settings
        urbackupclientctl reset-keep
                Reset keeping files during incremental backups
        urbackupclientctl add-backupdir
                Add new directory to backup set
        urbackupclientctl list-backupdirs
                List directories that are being backed up
        urbackupclientctl remove-backupdir
                Remove directory from backup setFor more information, please refer to the UrBackup Administration Documentation.
Please read CONTRIBUTING.md for details on our code of conduct, and the process for submitting pull requests.
This project is licensed under the Apache License - see the LICENSE file for details.
