How to offload old recordings off the dialer
Move VICIdial recordings to NAS, S3 via rclone, or a dedicated archive server using nightly rsync jobs to free local disk without losing compliance data.
Keeping years of Call recording files on the dialer itself is expensive and risky. The dialer's local disk is fast SSD or SAS — designed for active call I/O, not long-term archival. The right move is to push recordings to cheaper storage on a schedule: a NAS on the same LAN, a cloud object storage bucket, or a dedicated archive server. Then remove the local copy once you confirm the transfer succeeded. For a complete overview of recording storage paths and formats, see VICIdial call recording explained.
Offload option 1 — rsync to a NAS or archive server
If you have a NAS on the same LAN or a second Linux server, rsync is the simplest and most reliable path. Run it nightly via cron to push completed date directories from monitorDONE to the archive destination:
rsync -avz /var/spool/asterisk/monitorDONE/ archive@nas.local:/recordings/
After confirming the transfer succeeded, a separate find job removes local copies older than your chosen local retention window — for example 30 days. The YYYY/MM/DD directory structure under monitorDONE carries over to the NAS automatically, so files remain findable by date on the archive side as well.
Offload option 2 — rclone to S3 or compatible object storage
rclone is a command-line tool that speaks S3, Backblaze B2, Wasabi, Google Cloud Storage, and a dozen other providers. Install it on the dialer and configure a remote named s3archive pointing at your bucket. Then copy with:
rclone copy /var/spool/asterisk/monitorDONE/ s3archive:your-bucket/monitorDONE/ --transfers 8
**Heads up:** Use rclone copy rather than rclone sync here. The sync subcommand mirrors deletions from source to destination — so if you delete a local file before the sync runs, rclone sync would remove it from S3 too. copy only adds new files.
S3 storage classes matter for long-term cost. After recordings age past 90 days, apply an S3 lifecycle rule to transition them to Glacier Instant Retrieval or a similar cold tier. At Recording format (WAV/MP3) GSM around 125 KB per minute, a full year of recordings from a 20-agent center typically costs just a few dollars per month in cold cloud storage.
Automating the offload with cron
A two-step nightly cron handles the sync and then the cleanup. Add to the asterisk or root crontab using crontab -e:
0 2 * * * rsync -avz /var/spool/asterisk/monitorDONE/ archive@nas.local:/recordings/ && find /var/spool/asterisk/monitorDONE/ -mtime +30 -delete
The && operator means the find delete command only runs if rsync exits with a success code. If the NAS is offline or the transfer partially fails, local files are left intact and no data is lost.
flowchart LR
A[monitorDONE on dialer] --> B[Nightly cron at 2 AM]
B --> C[rsync to NAS or rclone copy to S3]
C --> D{Transfer exits successfully?}
D -- Yes --> E[find deletes local files older than 30 days]
D -- No --> F[Alert sent, local files kept]
E --> G[Disk usage stays low]
G --> AVerifying archive integrity before deleting local files
Before removing any local files, verify the archive copy is complete. A simple three-step check:
- Count local files in the date directory you are about to expire.
- Count matching files on the NAS or in the S3 bucket under the same path prefix.
- Cross-check against recording_log row count in MySQL for that date range.
A mismatch usually means a transfer was interrupted, or some calls were still in progress when the job ran and their files were still sitting in /var/spool/asterisk/monitor/ rather than monitorDONE.
What to do with the recording_log table
The Recording retention setting in VICIdial System Settings controls local file deletion by the built-in cleanup scripts. Those scripts also optionally prune old rows from recording_log. If you offload to an archive and still want the Admin Recordings UI to be searchable across all historical dates, do not prune the database rows — prune only the local files. The report will show the filename and metadata. Agents and managers just cannot click play directly unless you also provide a link to the archive location.
The Asterisk uniqueid column in recording_log ties each recording back to the specific call in vicidial_log, which lets you reconstruct the full context of any call — agent, Lead, disposition, talk time — even after the audio has moved off the dialer.
For tips on format compression and retention limits that reduce how much data you need to offload in the first place, see VICIdial recording disk management. If you want the offload pipeline set up and monitored for you, our managed hosting plans include nightly S3 archival and retention enforcement out of the box.
About VICIfast LLC
VICIfast LLC operates a managed VICIdial hosting + BYOI service for outbound and inbound call centers. We run the dialers, the carriers, the recordings pipeline, and the compliance plumbing so operators don’t have to.
Citing this article
VICIfast Engineering. “How to offload old recordings off the dialer”. VICIfast LLC, June 24, 2026. Retrieved from https://vicifast.com/blog/how-to-offload-recordings-vicidial
Have questions?
Related posts
You might be interested in
VICIfast newsletter
Liked this? Get the next one in your inbox.
We ship the kind of stuff you just read — concrete, numbers-first, no drip. One email when a new post goes live. Unsubscribe in one click.
Comments
No comments yet — be the first.