Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm setting up backups with rsnapshot. It is now running by cron, but not when/in the interval I intended it to.

Below is the schedule. It's this way to minimize overlapping backups. This should generate 8 backups every half hour, then 8 backups every hour, then 18 backups every two hour, and so on.

Hour         0     1     2     3     4     5     6     7     8     9     10     11
-------------|-------------------------------------------------------------------
half-hourly  |  x     x     x     x
hourly       |     x           x           x           x           x           x
two-hourly   |           x           x           x           x           x           x... (24)
daily        |(7)
weekly       |(4)

Extraction from /etc/rsnapshot

interval        halfhourly      4
interval        hourly  6
interval        twohourly       24
interval        daily   7
interval        weekly  4

This is the result, running from monday 00:00 to 14:00.

root@hemulen:~# ls -lat /var/backups/snapshots/
total 48
drwxr-xr-x 12 root root 4096 Sep 20 13:32 .
drwxr-xr-x  4 root root 4096 Sep 20 13:32 halfhourly.0
drwxr-xr-x  4 root root 4096 Sep 20 12:32 halfhourly.1
drwxr-xr-x  4 root root 4096 Sep 20 11:32 halfhourly.2
drwxr-xr-x  4 root root 4096 Sep 20 10:32 halfhourly.3
drwxr-xr-x  4 root root 4096 Sep 20 09:33 hourly.0
drwxr-xr-x  4 root root 4096 Sep 20 07:32 hourly.1
drwxr-xr-x  4 root root 4096 Sep 20 05:32 hourly.2
drwxr-xr-x  4 root root 4096 Sep 20 03:32 hourly.3
drwxr-xr-x  3 root root 4096 Sep 20 02:38 ..
drwxr-xr-x  4 root root 4096 Sep 20 02:33 hourly.4
drwxr-xr-x  4 root root 4096 Sep 20 01:32 hourly.5

This is the crontab.

30 * * * * /usr/bin/rsnapshot halfhourly >> /var/log/rsnapshot.run.log 2>&1
0 1,3,5,7,9,11,13,15,17,19,21,23 * * * /usr/bin/rsnapshot hourly >> /var/log/rsnapshot.run.log 2>&1
0 */2 * * * /usr/bin/rsnapshot two-hourly >> /var/log/rsnapshot.run.log 2>&1
0 3 * * * /usr/bin/rsnapshot daily >> /var/log/rsnapshot.run.log 2>&1
0 6 * * MON /usr/bin/rsnapshot weekly >> /var/log/rsnapshot.run.log 2>&1

What am I doing wrong, what am I missing here?


I changed it, and it has now been running for a week. I lowered two-hourly to store 12 backups.

drwxr-xr-x  5 root   root   4096 Sep 27 09:33 halfhourly.0
drwxr-xr-x  5 root   root   4096 Sep 27 09:03 halfhourly.1
drwxr-xr-x  5 root   root   4096 Sep 27 08:33 halfhourly.2
drwxr-xr-x  5 root   root   4096 Sep 27 08:04 halfhourly.3
drwxr-xr-x  5 root   root   4096 Sep 27 07:33 hourly.0
drwxr-xr-x  5 root   root   4096 Sep 27 06:33 hourly.1
drwxr-xr-x  5 root   root   4096 Sep 27 05:33 hourly.2
drwxr-xr-x  5 root   root   4096 Sep 27 04:33 hourly.3
drwxr-xr-x  5 root   root   4096 Sep 27 02:33 hourly.4
drwxr-xr-x  5 root   root   4096 Sep 27 01:33 hourly.5
drwxr-xr-x  5 root   root   4096 Sep 27 00:33 twohourly.0
drwxr-xr-x  5 root   root   4096 Sep 26 22:33 twohourly.1
drwxr-xr-x  5 root   root   4096 Sep 26 21:33 twohourly.2
drwxr-xr-x  5 root   root   4096 Sep 26 19:33 twohourly.3
drwxr-xr-x  5 root   root   4096 Sep 26 17:33 twohourly.4
drwxr-xr-x  5 root   root   4096 Sep 26 15:33 twohourly.5
drwxr-xr-x  5 root   root   4096 Sep 26 13:33 twohourly.6
drwxr-xr-x  5 root   root   4096 Sep 26 11:33 twohourly.7
drwxr-xr-x  5 root   root   4096 Sep 26 09:33 twohourly.8
drwxr-xr-x  5 root   root   4096 Sep 26 07:33 twohourly.9
drwxr-xr-x  5 root   root   4096 Sep 26 05:34 twohourly.10
drwxr-xr-x  5 root   root   4096 Sep 26 02:33 twohourly.11
drwxr-xr-x  5 root   root   4096 Sep 25 21:33 daily.0
drwxr-xr-x  5 root   root   4096 Sep 24 21:33 daily.1
drwxr-xr-x  4 root   root   4096 Sep 23 21:33 daily.2
drwxr-xr-x  4 root   root   4096 Sep 22 21:33 daily.3
drwxr-xr-x  4 root   root   4096 Sep 21 21:33 daily.4
drwxr-xr-x  4 root   root   4096 Sep 20 21:32 daily.5

Crontab

0,30 * * * * /usr/bin/rsnapshot halfhourly >> /var/log/rsnapshot.halfhourly.log 2>&1
5 * * * * /usr/bin/rsnapshot hourly >> /var/log/rsnapshot.hourly.log 2>&1
10 */2 * * * /usr/bin/rsnapshot twohourly >> /var/log/rsnapshot.twohourly.log 2>&1
15 3 * * * /usr/bin/rsnapshot daily >> /var/log/rsnapshot.daily.log 2>&1
20 6 * * MON /usr/bin/rsnapshot weekly >> /var/log/rsnapshot.weekly.log 2>&1

Weekly doesn't seem to work yet, but changing MON for 1 will probably fix it. two-hourly is not always every two hour

share|improve this question
add comment

2 Answers

up vote 3 down vote accepted

you have to understand how rsnapshot generates the backups.

First of all: Only the first interval you are defining takes the snapshot all other intervals just move old snapshots.

In your example:

interval halfhourly 4

first moves the old snapshots from halfhourly.n to halfhourly.n+1. Then it takes a new snapshot in halfhourly.0.

When you run the other jobs (hourly, twohourly, daily, weekly) they just take the last snapshot of the former job. So: hourly.4 is moved to twohourly.0 twohourly.24 is moved to daily.0 daily.7 is moved to weekly.0

This explains why the timestamp of the snapshot is always .32. Because it is actually a "halfhourly" snapshot that was moved to "hourly".

Hope that helps, Alex

share|improve this answer
    
Thanks Alex, knew there was something fundamental I had missed. I changed my schedule, and now it is working –  Znarkus Sep 27 '10 at 7:54
add comment

I'm not well versed in rsnapshot. But I've got a couple questions. First off, check /var/log/rsnapshot.run.log, and make sure the info there matches the directory names you were checking in /var/backup. And error message It's possible that might help shed a light on things.

Check the log and see what time things are running. If needbe, separate the logs into separate files, by making the log: /var/log/rsnapshot.run.$$.log. This plunks the PID in there, and should make them unique.

Secondly, could you provide the backup sections of your script? I'm curious to see where the backup files are supposed to go. A typo here could leave backup files strewn elsewhere on the system.

It's somewhat confusing looking at just the directory timestamps. It's possible your half-hourly script is modifying something that makes all the other directories timestamps get changed too. AFAIK, rsnapshot uses hard links of the previous backups. So modifications could percolate to other job directories. In this case, hourly would copy from half-hourly, which would explain what you're seeing.

Secondly, it would appear your version of cron doesn't support the */2 syntax. Hence why your hourly script only ran once, at 2:00 am. It might not handle MON either. So make a test job for each of those, and make sure it's actually running as expected.


--Christopher Karel

share|improve this answer
    
Thanks! I separated the logs. */2 should work, but MON doesn't seem to work. Will change it to 1 –  Znarkus Sep 27 '10 at 8:11
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.