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):
- User permissions
- Command interpreters
- Variables
- 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:
- User permissions
- Command interpreters
- Variables
- 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