Mirroring Repositories with Rsync
Rsync allows you to create and maintain a local mirror of CIQ repositories. This is useful for air-gapped environments, reducing external bandwidth usage, and maintaining consistent content across your infrastructure.
Prerequisites
- rsync installed on your system
- Your username and access token from https://portal.ciq.com/token
- Sufficient disk space for the repositories you want to mirror
- Network access to rsync.depot.ciq.com (port 873)
Finding the Rsync URI
- Log in to https://portal.ciq.com
- Navigate to My Products and select a product
- Select the repository you want to mirror
- Look for the Rsync URI in the repository details
Basic Usage
RSYNC_PASSWORD='YOUR_TOKEN' rsync -avSHP \
rsync://YOUR_USERNAME@rsync.depot.ciq.com/REPO_PATH \
/local/mirror/path/
Replace:
YOUR_TOKEN: Your CIQ Portal access tokenYOUR_USERNAME: Your CIQ Portal usernameREPO_PATH: The repository path from the Rsync URI in the Portal/local/mirror/path/: Your local destination directory
Recommended Flags
-a: Archive mode (preserves permissions, timestamps, etc.)-v: Verbose output-S: Handle sparse files efficiently-H: Preserve hard links-P: Show progress and support partial transfers--del: Remove files from destination that no longer exist in source (for an exact mirror)
Example
Mirror a Rocky Linux repository:
RSYNC_PASSWORD='YOUR_TOKEN' rsync -avSHP --del \
rsync://YOUR_USERNAME@rsync.depot.ciq.com/lts-9.2:rocky-baseos-9.2.x86_64 \
/var/www/html/repos/rocky-9.2-baseos/
The initial sync can take significant time depending on repository size and network speed. Subsequent syncs are much faster as rsync only transfers changes.
Scheduling Regular Syncs
1. Create a Sync Script
Create /usr/local/bin/sync-ciq-mirror.sh:
#!/bin/bash
# Sync CIQ repository mirror
RSYNC_PASSWORD='YOUR_TOKEN'
export RSYNC_PASSWORD
RSYNC_URI="rsync://YOUR_USERNAME@rsync.depot.ciq.com/REPO_PATH"
LOCAL_PATH="/var/www/html/repos/your-repo"
LOG_FILE="/var/log/rsync-ciq-mirror.log"
mkdir -p "$LOCAL_PATH"
echo "=== Sync started at $(date) ===" >> "$LOG_FILE"
rsync -avSHP --del "$RSYNC_URI" "$LOCAL_PATH" >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
echo "=== Sync completed successfully at $(date) ===" >> "$LOG_FILE"
else
echo "=== Sync failed at $(date) ===" >> "$LOG_FILE"
fi
2. Make It Executable
sudo chmod +x /usr/local/bin/sync-ciq-mirror.sh
3. Schedule with Cron
sudo crontab -e
Add a line for your preferred schedule:
# Daily at 2 AM
0 2 * * * /usr/local/bin/sync-ciq-mirror.sh
# Every 6 hours
0 */6 * * * /usr/local/bin/sync-ciq-mirror.sh
# Weekly on Sunday at 3 AM
0 3 * * 0 /usr/local/bin/sync-ciq-mirror.sh
Serving the Local Mirror
After syncing, configure a web server to serve the repository to your systems:
- Configure your web server (Apache or Nginx) to serve the mirror directory
- Create repository configuration on client systems pointing to your mirror:
[local-ciq-mirror]
name=Local CIQ Mirror
baseurl=http://your-mirror-server/repos/your-repo/
enabled=1
gpgcheck=1
What if the Repository Doesn't Have the Rsync URI Option?
If a repository doesn't show the Rsync URI option, it is not enabled for rsync mirroring. In this case:
- Check if the repository supports reposync instead
- Contact CIQ support at support@ciq.com for alternative mirroring solutions
Troubleshooting
Authentication Failures
Problem: Rsync fails with authentication error.
Solutions:
- Verify your access token is correct and current
- Ensure the
RSYNC_PASSWORDenvironment variable is set - Verify your organization admin hasn't regenerated the token
- Test with a simple listing command:
RSYNC_PASSWORD='YOUR_TOKEN' rsync rsync://YOUR_USERNAME@rsync.depot.ciq.com/
Network Issues
Problem: Can't connect to rsync.depot.ciq.com.
Solutions:
- Check firewall rules allow port 873 (rsync)
- Verify DNS resolution:
nslookup rsync.depot.ciq.com - Test basic connectivity:
ping rsync.depot.ciq.com
Disk Space Issues
Problem: Running out of disk space.
Solutions:
- Check available space before syncing:
df -h /var/www/html/repos - Monitor repository sizes:
du -sh /var/www/html/repos/* - Consider syncing only specific architectures if space is limited
See Also
- Accessing Content: Overview of access methods
- Reposync Mirroring: Alternative mirroring method
- Red Hat Satellite: Enterprise content management