Back to Knowledege base

Backing Up and Restoring Xi-Batch Configuration

Preserving jobs, variables, command interpreters, and user settings

Why Backup Xi-Batch?

Reasons to backup:

  • Preserve complex job schedules
  • Major system upgrade
  • Disaster recovery preparation
  • Migrate to new hardware
  • Archive completed projects

What to backup:

  • Jobs (definitions and scripts)
  • Variables
  • Command interpreters
  • User permissions and defaults
  • Holiday calendar

Backup Strategy

Create backup directory structure:

bash

mkdir -p /backup/xibatch/$(date +%Y-%m-%d)
cd /backup/xibatch/$(date +%Y-%m-%d)
mkdir scripts

Backup order (recommended):

  1. User permissions
  2. Command interpreters
  3. Variables
  4. Jobs

Backing Up Jobs

Tool: xb-cjlist

bash

# From backup directory
xb-cjlist -D /usr/spool/batch btsched_jfile jobs.restore scripts/

Output:

  • jobs.restore - Shell script to recreate jobs
  • scripts/ - Directory with job scripts

What it creates:

jobs.restore contains btr commands:

bash

#!/bin/sh
btr -t "03:00" -r Days:1 -c "backup_status = Complete" \
    -A "report_status = Running @ Job start" \
    scripts/SPnnnnnnnn
btr -t "18:00" -r Monthse:1:28 -a "Sat,Sun,Hday" \
    scripts/SPmmmmmmmm
# etc.

Options:

bash

# Backup only specific user's jobs
xb-cjlist -u jsmith -D /usr/spool/batch btsched_jfile jobs.restore scripts/

# Backup with different permissions
xb-cjlist -M "rwu:rwg:ro" -D /usr/spool/batch btsched_jfile jobs.restore scripts/

Backing Up Variables

Tool: xb-cvlist

bash

# From backup directory
xb-cvlist -D /usr/spool/batch btsched_vfile vars.restore

Output:

vars.restore contains btvar commands:

bash

#!/bin/sh
btvar -c backup_status "Not Started"
btvar -C backup_status "Status of nightly backup"
btvar -c counter 0
btvar -E counter  # Export
# etc.

Options:

bash

# Backup exported variables only
xb-cvlist -e -D /usr/spool/batch btsched_vfile vars.restore

Backing Up Command Interpreters

Tool: xb-ciconv

bash

# From backup directory
xb-ciconv -D /usr/spool/batch cifile interps.restore

Output:

interps.restore contains btcichange commands:

bash

#!/bin/sh
btcichange -n sh -p /bin/sh -a "-s" -l 1000 -i 24
btcichange -n ksh -p /bin/ksh -a "-s" -l 1000 -i 24
btcichange -n perl -p /usr/bin/perl -a "-" -l 1000 -i 24
# etc.

Backing Up User Permissions

Tool: xb-btuconv

bash

# From backup directory
xb-btuconv -D /usr/spool/batch btufile6 users.restore

Output:

users.restore contains btuchange commands:

bash

#!/bin/sh
btuchange -u jsmith -d 150 -l 100 -m 200
btuchange -u jsmith -p CR -p Cdft
# etc.

Complete Backup Script

bash

#!/bin/bash
# backup-xibatch.sh

BACKUP_ROOT=/backup/xibatch
DATE=$(date +%Y-%m-%d)
BACKUP_DIR=$BACKUP_ROOT/$DATE
SPOOL=/usr/spool/batch

echo "Creating backup directory: $BACKUP_DIR"
mkdir -p $BACKUP_DIR/scripts
cd $BACKUP_DIR

echo "Backing up user permissions..."
xb-btuconv -D $SPOOL btufile6 users.restore

echo "Backing up command interpreters..."
xb-ciconv -D $SPOOL cifile interps.restore

echo "Backing up variables..."
xb-cvlist -D $SPOOL btsched_vfile vars.restore

echo "Backing up jobs..."
xb-cjlist -D $SPOOL btsched_jfile jobs.restore scripts/

echo "Creating archive..."
cd $BACKUP_ROOT
tar czf xibatch-$DATE.tar.gz $DATE

echo "Backup complete: $BACKUP_ROOT/xibatch-$DATE.tar.gz"

# Optional: copy to remote location
# scp xibatch-$DATE.tar.gz backup-server:/backups/

Schedule daily:

bash

btr -t "02:00" -r Days:1 /usr/local/sbin/backup-xibatch.sh

Restoring Xi-Batch

Stop Xi-Batch:

bash

btquit -y

Restore order:

  1. User permissions
  2. Command interpreters
  3. Variables
  4. Jobs

From backup directory:

bash

cd /backup/xibatch/2026-02-06

# Restore users
sh users.restore

# Restore interpreters
sh interps.restore

# Restore variables
sh vars.restore

# Restore jobs
sh jobs.restore

Start Xi-Batch:

bash

btstart

Verify:

bash

btjlist   # Check jobs
btvlist   # Check variables
btcilist  # Check interpreters

Selective Restore

Restore only specific jobs:

bash

# Edit jobs.restore
vi jobs.restore

# Comment out unwanted jobs
# ...

# Run edited script
sh jobs.restore

Restore specific user's jobs:

bash

# Extract only user's jobs from backup
grep "jsmith" jobs.restore > jsmith-jobs.restore
sh jsmith-jobs.restore

Migrating to New System

On old system:

bash

# Create backup
/usr/local/sbin/backup-xibatch.sh

Transfer to new system:

bash

scp /backup/xibatch/xibatch-2026-02-06.tar.gz newserver:/tmp/

On new system:

bash

# Install Xi-Batch first
# Then extract and restore
cd /tmp
tar xzf xibatch-2026-02-06.tar.gz
cd 2026-02-06

# Restore in order
sh users.restore
sh interps.restore
sh vars.restore
sh jobs.restore

Backup Best Practices

Regular schedule:

Daily backups for active systems, weekly for stable.

Retention policy:

bash

# Keep daily for 7 days, weekly for 4 weeks
# Delete old backups
find /backup/xibatch -name "*.tar.gz" -mtime +30 -delete

Test restores:

Quarterly, test restore to verify backups work.

Store offsite:

Copy backups to remote location or cloud storage.

Version backup scripts:

Keep backup scripts in version control.

Document restore procedure:

Write step-by-step restore instructions.

Include holiday calendar:

bash

# Backup holidays
xb-cholist > holidays.backup

# Restore holidays
xb-cholist < holidays.backup
Setting Up Xi-Batch Network Connectivity
Connecting multiple Xi-Batch hosts for job and variable sharing