Skip to content

ewanc26/pds-backup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 

Repository files navigation

PDS Backup Script

Overview

This Bash script is designed to automate the backup process of PDS (Personal Data Server) files to a remote machine using rsync. The script stops the PDS service, creates a backup with a timestamp, cleans up old backups (older than one month), and restarts the service upon completion.

This script is not affiliated with Bluesky PBLLC.

This backup process is manual and is intended to be run only when desired. The script logs all actions and errors to a specified log file.

Requirements

  • A working PDS: Make sure to actually have a PDS, obviously. Go to the PDS (Personal Data Server) repository to see the install instructions.
  • SSH Access: The script uses rsync over SSH to transfer files. Ensure passwordless SSH is configured between the source and destination machines.
  • Service Control: The script relies on systemctl to start and stop the PDS service. Ensure the PDS service is managed by systemctl on the source machine.
  • Disk Space: Ensure sufficient space is available on the destination machine to store backups.
  • Sudo: Ability to run in root. The script requires the use of sudo.

Variables and Configuration

Edit the following variables in the script to suit your environment:

  • SOURCE_DIR: The directory on the source machine where PDS files are stored.
  • DEST_USER: Username for accessing the destination machine.
  • DEST_IP: IP address of the destination machine.
  • DEST_BASE_DIR: Base directory on the destination machine where backups are stored.
  • LOG_FILE: Location of the log file where backup logs will be saved.

Example:

SOURCE_DIR="/pds"
DEST_USER="username"
DEST_IP="destination.ip.address"
DEST_BASE_DIR="/path/to/destination/folder"
LOG_FILE="/var/log/pds-backup.log"

How It Works

  1. Stop PDS Service: The script attempts to stop the PDS service on the source machine.
  2. Create a Backup: Using rsync, the script transfers files from the source directory to the destination directory, organised by a timestamp.
  3. Clean Up Old Backups: The script deletes backup directories older than 30 days on the destination machine.
  4. Restart PDS Service: After the backup, the script restarts the PDS service.
  5. Error Handling: In case of failure during rsync, the script logs an error, restarts the PDS service, and exits.

Usage

  1. Run the Script Manually: Execute the script manually from the PDS by running:

    sudo ./pds-backup.sh
  2. Check the Log File: Backup progress and errors are logged in the specified log file. Check this file to confirm the success of the backup or to troubleshoot any issues:

    tail -f /var/log/pds-backup.log

Example Log Entries

  • Successful stop of the PDS service:
    YYYY-MM-DD HH:MM: Successfully stopped the PDS service.
    
  • Successful completion of backup:
    YYYY-MM-DD HH:MM: Backup completed successfully to /destination/path/YYYYMMDD-HHMM
    
  • Cleanup of old backups:
    YYYY-MM-DD HH:MM: Deleted backup directories older than 30 days successfully.
    
  • Failure messages:
    YYYY-MM-DD HH:MM: ERROR: Backup failed during rsync operation. Check connection, permissions, and disk space.
    

About

my ATProto PDS backup script.

Topics

Resources

License

Stars

Watchers

Forks

Languages