Cron Jobs#
1. Create a backup Scheduler every hour between 8:00 and 22:00#
8..22/1:00
1.1. Check if it was triggered#
grep CRON /var/log/syslog | tail -n 5Crontab commands#
contab -e2. Cronjob for MacMini#
#https://crontab.guru/
#@reboot (sleep 60 && echo "ondemand" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor)
@reboot setpci -s 0:1f.0 0xa4.b=0
#PVEBackup
# 30 3 * * * /bin/bash /root/scripts/MMPVEBackupScript.sh > /dev/null 2>&1
30 3 * * * /bin/bash /mnt/pve/Software/Software/Scripts/Proxmox/pve_backup_universal.sh > /dev/null 2>&1
#hp1
#50 7 * * * /usr/bin/wakeonlan 94:57:a5:65:4e:90
#55 7 * * * /usr/sbin/pvesm set HP1BackupServer -disable false
#15 21 * * * /usr/sbin/pvesm set HP1BackupServer -disable true
#HP2
00 18 * * * /usr/bin/wakeonlan 94:57:a5:65:7e:88
#HP3
50 8 * * 7 /usr/bin/wakeonlan ec:b1:d7:7c:a9:48
#HP4
00 13 * * * /usr/bin/wakeonlan 20:67:7c:ee:63:80
#HP6
#50 7 * * * /usr/bin/wakeonlan 50:65:f3:f1:b8:90
#50 7 * * * /usr/sbin/pvesm set HP6BackupServer -disable false
#30 8 * * * /usr/sbin/pvesm set HP6BackupServer -disable true
#50 17 * * * /usr/bin/wakeonlan 50:65:f3:f1:b8:90
#50 17 * * * /usr/sbin/pvesm set HP6BackupServer -disable false
#30 18 * * * /usr/sbin/pvesm set HP6BackupServer -disable true
#HP7
05 9 * * * /usr/bin/wakeonlan ac:16:2d:6e:64:fc
#HP8
#50 8 * * * /usr/bin/wakeonlan 80:30:e0:3b:a5:74
#HP8OLD
#45 7 * * * /usr/bin/wakeonlan 3c:d9:2b:03:d8:f2
#HP9OLD
#45 7 * * * /usr/bin/wakeonlan 68:b5:99:77:17:c2
#HP10OLD
#30 8 * * * /usr/bin/wakeonlan 00:26:55:29:0d:cc
#MP5.2TrueNAS
#00 08 * * 7 /usr/sbin/pvesm set MP5.2Backups -disable false
#00 11 * * 7 /usr/sbin/pvesm set MP5.2Backups -disable true3. Cronjob HP4#
30 18 * * * /usr/sbin/pvesm set HP4BackupServer -disable true
15 12 * * * /usr/sbin/shutdown -h now
00 19 * * * /usr/sbin/shutdown -h now4. Cron Job to Auto Start After Power Failure for MacMini (autostart)#
crontab -e (crontab -l for a list of jobs)
On HP1,2,6,11, add line (to activate WOL):
@reboot (sleep 60 && echo "ondemand" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor)On Macs, Add line:
@reboot setpci -s 0:1f.0 0xa4.b=05. Conjob for HP1#
#10 22 * * * /usr/sbin/shutdown -h now
#59 7 * * * /usr/sbin/pvesm set HP4BackupServer -disable false
#10 22 * * * /usr/sbin/pvesm set HP4BackupServer -disable true
0 19 * * * /bin/bash /root/scripts/HP1PVEBackupScript.sh > /dev/null 2>&1
00 21 * * * echo "powersave" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null
#00 09 * * * echo "performance" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null6. Cronjob pour HP1Backup Server#
#Pour permettre la sauvegagrade de la VM dans la même VM
00 03 * * * /usr/bin/systemctl stop qemu-guest-agent
30 03 * * * /usr/bin/systemctl start qemu-guest-agent7. Cronjob pour HP1GPU#
00 18 * * * rm -r "/home/marc/docker-compose/plexmediaserver/Library/Application Support/Plex Media Server/Cache"
00 8 * * * rm -r "/home/marc/docker-compose/plexmediaserver/Library/Application Support/Plex Media Server/Cache"
#00 8 * * * rm -r "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Cache"
#00 18 * * * rm -r "/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Cache"
30 8 * * * /usr/bin/docker image prune -a -f8. Cronjob to update VM#
30 8 * * 0 apt update && apt full-upgrade -y >> /var/log/apt_upgrade.log 2>&1Consult the log:
cat /var/log/apt_upgrade.logSee if a job is running:
ps aux | grep apt9. Conjob to backup a folder every hour#
0 * * * * /usr/bin/tar -czvf "/home/marc/docker-compose/$(date '+\%Y-\%m-\%d_\%Hh\%M')_Pangolin.tar.gz" /home/marc/docker-compose/pangolin10. Rsync HP1Docker Paperless > UNAS-Pro (with smb verification, folder protection, one way every hour)#
Add control file at destination:
echo "DO NOT DELETE — rsync safety canary for Paperless mirror" \
> /mnt/Documents/.paperless-canary
chmod 444 /mnt/Documents/.paperless-canary
mkdir -p /home/marc/docker-compose/paperless/scripts/
nano /home/marc/docker-compose/paperless/scripts/paperless-sync.shScript Content (paperless-sync.sh):
#!/bin/bash
LOG="/home/marc/docker-compose/paperless/logs/Rsync$(date '+%Y-%m-%d %Hh%M') Paperless-Rsync-cronjob.log"
echo "=== $(date) Starting Paperless sync ===" | tee -a "$LOG"
mountpoint -q /mnt/Documents && \
findmnt -n -t cifs /mnt/Documents >/dev/null 2>&1 && \
[ -f /mnt/Documents/.paperless-canary ] && \
rsync -avh --delete --progress --stats /mnt/paperless/media/documents/originals/ /mnt/Documents/Paperless/ | tee -a "$LOG"
echo "=== $(date) Sync completed ===" | tee -a "$LOG"
# Delete old logs
find /home/marc/docker-compose/paperless/logs/ -type f -name '*Paperless-Rsync-cronjob.log' -mtime +7 -deleteMake executable and add to crontab:
chmod +x /home/marc/docker-compose/paperless/scripts/paperless-sync.sh
crontab -e
0 * * * * /home/marc/docker-compose/paperless/scripts/paperless-sync.shSetup logs and logrotate:
mkdir -p /home/marc/docker-compose/paperless/logs && chown marc:marc /home/marc/docker-compose/paperless/logs/
nano /etc/logrotate.d/paperless-rsyncLogrotate config:
/home/marc/docker-compose/paperless/logs/*.log {
daily
rotate 7
missingok
notifempty
copytruncate
}Manual log purge:
logrotate -f /etc/logrotate.d/paperless-rsync
Manual dry run: ```bash
LOG="/home/marc/docker-compose/paperless/logs/Rsync/$(date ‘+%Y-%m-%d %Hh%M’) Paperless-Rsync-cronjob-dryrun.log" &&
mountpoint -q /mnt/Documents &&
findmnt -n -t cifs /mnt/Documents >/dev/null 2>&1 &&
[ -f /mnt/Documents/.paperless-canary ] &&
rsync -avh –delete –dry-run /mnt/paperless/media/documents/originals/ /mnt/Documents/Paperless/ » “$LOG” 2>&1
**Check what needs to be synced:**
```bash
echo "=== Dry-run rsync check ===" && \
rsync -avhn --delete -i /mnt/paperless/media/documents/originals/ /mnt/Documents/Paperless/ && \
echo "=== Diff check ===" && \
diff -r /mnt/paperless/media/documents/originals/ /mnt/Documents/Paperless/ && \
echo "=== File counts ===" && \
echo "Source:" $(find /mnt/paperless/media/documents/originals/ | wc -l) "files" && \
echo "Destination:" $(find /mnt/Documents/Paperless/ | wc -l) "files"Manual sync:
LOG="/home/marc/docker-compose/paperless/logs/Rsync/$(date '+%Y-%m-%d %Hh%M') Paperless-Rsync-cronjob.log"
echo "=== $(date) Starting Paperless sync ===" | tee -a "$LOG"
mountpoint -q /mnt/Documents && \
findmnt -n -t cifs /mnt/Documents >/dev/null 2>&1 && \
[ -f /mnt/Documents/.paperless-canary ] && \
rsync -avh --delete --progress --stats /mnt/paperless/media/documents/originals/ /mnt/Documents/Paperless/ | tee -a "$LOG"
echo "=== $(date) Sync completed ===" | tee -a "$LOG"Check logs:
tail -n 50 "/home/marc/docker-compose/paperless/logs/$(date '+%Y-%m-%d %Hh%M') Paperless-Rsync-cronjob.log"