AND JobMedia.MediaId=Media.MediaId
GROUP by VolumeName;
#
-:List last 10 Full Backups for a Client:
+:List last 20 Full Backups for a Client:
*Enter Client name:
-Select JobId,Client.Name as Client,StartTime,JobFiles,JobBytes
- FROM Client,Job
+Select Job.JobId,Client.Name as Client,StartTime,JobFiles,JobBytes,
+JobMedia.StartFile as VolFile, VolumeName
+ FROM Client,Job,JobMedia,Media
WHERE Client.Name="%1"
AND Client.ClientId=Job.ClientId
AND Level='F' AND JobStatus='T'
- LIMIT 10;
+ AND JobMedia.JobId=Job.JobId AND JobMedia.MediaId=Media.MediaId
+ ORDER BY JobId DESC LIMIT 20;
#
:List Volumes used by selected JobId:
*Enter JobId:
CREATE TABLE temp (JobId INTEGER UNSIGNED NOT NULL,
JobTDate BIGINT UNSIGNED,
ClientId INTEGER UNSIGNED,
+ Level CHAR,
StartTime TEXT,
VolumeName TEXT,
StartFile INTEGER UNSIGNED,
CREATE TABLE temp2 (JobId INTEGER UNSIGNED NOT NULL,
StartTime TEXT,
VolumeName TEXT,
+ Level CHAR,
StartFile INTEGER UNSIGNED,
VolSessionId INTEGER UNSIGNED,
VolSessionTime INTEGER UNSIGNED);
-INSERT INTO temp SELECT Job.JobId,MAX(JobTDate),Job.ClientId,StartTime,VolumeName,
- JobMedia.StartFile,VolSessionId,VolSessionTime
+# Select last Full save
+INSERT INTO temp SELECT Job.JobId,JobTDate,Job.ClientId,Job.Level,
+ StartTime,VolumeName,JobMedia.StartFile,VolSessionId,VolSessionTime
FROM Client,Job,JobMedia,Media WHERE Client.Name="%1"
AND Client.ClientId=Job.ClientId
AND Level='F' AND JobStatus='T'
AND JobMedia.JobId=Job.JobId
AND JobMedia.MediaId=Media.MediaId
- GROUP BY Job.JobTDate LIMIT 1;
-INSERT INTO temp2 SELECT JobId,StartTime,VolumeName,StartFile,
+ ORDER BY Job.JobTDate DESC LIMIT 1;
+# Copy into temp 2
+INSERT INTO temp2 SELECT JobId,StartTime,VolumeName,Level,StartFile,
VolSessionId,VolSessionTime
FROM temp;
+# Now add subsequent incrementals
INSERT INTO temp2 SELECT Job.JobId,Job.StartTime,Media.VolumeName,
- JobMedia.StartFile,Job.VolSessionId,Job.VolSessionTime
+ Job.Level,JobMedia.StartFile,Job.VolSessionId,Job.VolSessionTime
FROM Job,temp,JobMedia,Media
WHERE Job.JobTDate>temp.JobTDate
AND Job.ClientId=temp.ClientId
- AND Level='I' AND JobStatus='T'
+ AND Job.Level='I' AND JobStatus='T'
AND JobMedia.JobId=Job.JobId
AND JobMedia.MediaId=Media.MediaId
GROUP BY Job.JobId;
+# list results
SELECT * from temp2;
!DROP TABLE temp;
!DROP TABLE temp2;
#
+:List where a File is saved:
+*Enter Filename (no path):
+SELECT Job.JobId as JobId, Client.Name as Client,
+ CONCAT(Path.Path,Filename.Name) as Name,
+ StartTime,Level,JobFiles,JobBytes
+ FROM Client,Job,File,Filename,Path WHERE Client.ClientId=Job.ClientId
+ AND JobStatus='T' AND Job.JobId=File.JobId
+ AND Path.PathId=File.PathId AND Filename.FilenameId=File.FilenameId
+ AND Filename.Name='%1' LIMIT 20;
/* File Attributes stream */
if (rec->Stream == STREAM_UNIX_ATTRIBUTES) {
- char *ap;
- sscanf(rec->data, "%ld %d %s", &record_file_index, &type, fname);
+ char *ap, *fp;
+ sscanf(rec->data, "%ld %d", &record_file_index, &type);
if (record_file_index != rec->FileIndex) {
Emsg2(M_ERROR_TERM, 0, "Record header file index %ld not equal record index %ld\n",
rec->FileIndex, record_file_index);
}
ap = rec->data;
- /* Skip to attributes */
- while (*ap++ != 0)
+
+ while (*ap++ != ' ') /* skip record file index */
+ ;
+ while (*ap++ != ' ') /* skip type */
;
+ /* Save filename and position to attributes */
+ fp = fname;
+ while (*ap != 0) {
+ *fp++ = *ap++;
+ }
+ *fp = *ap++; /* terminate filename & point to attribs */
+
decode_stat(ap, &statp);
/* Skip to link name */
while (*ap++ != 0)