UMBC High Performance Computing Facility
Accessing your backups on tara
Introduction
Periodic backups of some of your directories are taken on tara, in case of
accidental loss of work. On this page we will show you how to access these
backups.
A walk through the backup area
There is a hidden ".zfs" directory at the top level of your PI's
research storage. However, it may not show up at all when using the "ls"
command. Suppose "gobbert" is our PI for the remainder of this page.
[araim1@tara-fe1 ~]$ ls -a /umbc/research/gobbert/
. .. common/ users/
[araim1@tara-fe1 resources-tara]$ ls -ld /umbc/research/gobbert/.zfs
dr-xr-xr-x 4 root root 4 Feb 18 2010 /umbc/research/gobbert/.zfs
Inside this directory are snapshots taken periodically by the system
[araim1@tara-fe1 ~]$ cd /umbc/research/gobbert/.zfs/
[araim1@tara-fe1 .zfs]$ ls -a
. .. shares snapshot
[araim1@tara-fe1 .zfs]$ cd snapshot/
[araim1@tara-fe1 snapshot]$ ls -la
total 40
dr-xr-xr-x 12 root root 12 Jul 5 03:00 .
dr-xr-xr-x 4 root root 4 Feb 18 2010 ..
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309071600
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309158000
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309244400
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309330800
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309417200
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309503600
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309590000
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309676400
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309762800
drwxrws--- 4 gobbert pi_gobbert 6 May 4 2009 .auto-1309849200
[araim1@tara-fe1 snapshot]$
Note that the timestamps on these directories do not reflect their creation
time. However, the number in the filename represents the number of seconds
from the Unix epoch (Jan 1, 1970) in which the snapshot was created. This
timestamp will be important to us when identifying the right backup to use.
We can quickly convert this epoch time into a more human-readable time using
the date command
[araim1@tara-fe1 snapshot]$ date --date "Jan 1, 1970 + 1309071600 seconds"
Sun Jun 26 08:00:00 EDT 2011
Once you've identified a usable backup, you can browse inside of it
like any other directory, and copy files back into your permanent area.
[araim1@tara-fe1 snapshot]$ cd .auto-1309071600
[araim1@tara-fe1 .auto-1309071600]$ cp -r common/important-project /umbc/research/gobbert/common/
In the snapshot directory listing, we can convert all the timestamps to
human readable times. We've set up the command "list-snapshots" as a
convenience. It takes one argument, which is the name
of the research mount to view. (That is, the name of the subdirectory
in "/umbc/research" whose backups we want to list).
[araim1@tara-fe1 ~]$ list-snapshots gobbert
Snapshots for research mount 'gobbert':
TIME PATH
Mon Aug 1 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312182000
Tue Aug 2 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312268400
Wed Aug 3 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312354800
Thu Aug 4 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312441200
Fri Aug 5 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312527600
Sat Aug 6 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312614000
Sun Aug 7 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312700400
Mon Aug 8 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312786800
Tue Aug 9 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312873200
Wed Aug 10 03:00:00 2011 /umbc/research/gobbert/.zfs/snapshot/.auto-1312959600
[araim1@tara-fe1 ~]$
Notice that the snapshots are currently taken once per day at 03:00. These timestamps
are recorded in UTC rather than in the local time zone, so make sure to interpret
them accordingly. (To convert from UTC to EDT for example subtract 4 hours. To
convert from UTC to EST subtract 5 hours. The entries in this example are from August,
so the timestamp in local time would be 23:00:00 EDT).
Advanced Usage: Scripting it yourself
For more advanced users, we demonstrate how to convert the timestamps
manually using Bash scripting. This also serves as an example of writing
loops directly on the command line.
[araim1@maya-usr1 snapshot]$ for d in .auto-*
> do
> timestamp=${d#*-};
> ts=$(date --date "Jan 1, 1970 UTC + $timestamp seconds" +"%a %x %T UTC");
> echo -e "$ts\t$d";
> done
Sun 06/26/2011 03:00:00 UTC .auto-1309071600
Mon 06/27/2011 03:00:00 UTC .auto-1309158000
Tue 06/28/2011 03:00:00 UTC .auto-1309244400
Wed 06/29/2011 03:00:00 UTC .auto-1309330800
Thu 06/30/2011 03:00:00 UTC .auto-1309417200
Fri 07/01/2011 03:00:00 UTC .auto-1309503600
Sat 07/02/2011 03:00:00 UTC .auto-1309590000
Sun 07/03/2011 03:00:00 UTC .auto-1309676400
Mon 07/04/2011 03:00:00 UTC .auto-1309762800
Tue 07/05/2011 03:00:00 UTC .auto-1309849200
[araim1@maya-usr1 snapshot]$
We can modify our script to convert the times to our local time zone as well
[araim1@maya-usr1 snapshot]$ for d in .auto-*;
> do
> timestamp=${d#*-};
> utcdate=$(date --date "Jan 1, 1970 UTC + $timestamp seconds" +"%a %x %T UTC");
> ts=$(date --date "$utcdate" +"%a %x %T %Z");
> echo -e "$ts\t$d";
> done;
Sat 06/25/2011 23:00:00 EDT .auto-1309071600
Sun 06/26/2011 23:00:00 EDT .auto-1309158000
Mon 06/27/2011 23:00:00 EDT .auto-1309244400
Tue 06/28/2011 23:00:00 EDT .auto-1309330800
Wed 06/29/2011 23:00:00 EDT .auto-1309417200
Thu 06/30/2011 23:00:00 EDT .auto-1309503600
Fri 07/01/2011 23:00:00 EDT .auto-1309590000
Sat 07/02/2011 23:00:00 EDT .auto-1309676400
Sun 07/03/2011 23:00:00 EDT .auto-1309762800
Mon 07/04/2011 23:00:00 EDT .auto-1309849200
[araim1@maya-usr1 snapshot]$