March 21, 2019

Unattended Linux Wakeup, Backup, Shutdown (part 5)

The Master Plan, Cron Wakeups

  • March 1, 2011
  • By Carla Schroder

At last we come to the end of this series and put all the pieces together, and put our fabulous unattended automatic backup scheme to work. You need never lift a finger except to run periodic checks to make sure everything is working correctly.

The first four parts:
Antec 300 Computer Case Quick Review
Arch Linux Backup Server-- Headless Administration
Linux Backup Server: Remote Wakeup, Automatic Shutdown
Linux Backup Server: Refining Rsync, Passwordless Authentication

The Plan

Here's how it all fits together:
  1. Since I have a router that runs 24x7, that runs a cron job that wakes up the backup server. The wakeup command can be run from any computer on the same subnet as the server.
  2. Each client PC has its own backup script, also started by cron.
  3. Server and clients all have their own cron jobs to shut them off.
This is all very simple by ace scripter standards. Shutdowns are timed, rather than some elegant thingy that knows when the backup is finished and then shuts down. I give my backups an hour to run, which is about 55 minutes more than they need. With Gigabit Ethernet and SATA 3.0 even giant batches of photos or videos move pretty quickly. If you're not familiar with rsync, it is my backup tool of choice because it is extremely efficient. After your first backup it transfers only changes, and can copy files from your backup server without any special tools, just your usual favorite Linux copy commands.

Cron Wakeup

The wakeonlan command does not need root privileges, so you can run it with any unprivileged user. First verify what time your computer thinks it is with the date command. All the computers on your LAN should be synchronized with each other, which you can do with a local NTP server:

$ date
Tue Mar 1 13:58:21 PST 2011

OK, the time is right, so now create your crontab. This wakes up the backup server every night at 11:30 PM. Remember to use your own server's MAC address:

$ crontab -e
# m h dom mon dow command
30 23 * * * /usr/bin/wakeonlan -p 8 00:0H:34:15:CD:92

To save and close your new crontab, simply save and close your editor in the usual way. You'll see a confirmation like this if it is successful:

File Name to Write: /tmp/crontab.g38BLX/crontab
crontab: installing new crontab

cron uses your default editor, so if you don't like the default or don't have one, you'll have to set it according to whatever way your Linux distribution does it, which is a mess for another day.

m is minutes, 0-59
h is hour, 0-23
dom is day of month, 1-31
mon is month, 1-12
dow is day of week, 0- 6 Sunday through Saturday
command is the command or script you want to run
Asterisk means every day, month, or day of week.

The cron daemon supplies a default environment, defining HOME, LOGNAME, SHELL (=/usr/bin/sh), and PATH (=/usr/bin). If your command or script is not in your home directory or /usr/bin/, then you need to spell out the complete filepath. Commands in your home directory can use the HOME variable, like $HOME/commandname.

Most Popular LinuxPlanet Stories