projects
/
cumulus.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add "intent" field to a snapshot.
[cumulus.git]
/
scandir.cc
diff --git
a/scandir.cc
b/scandir.cc
index
cf66ea6
..
f653f43
100644
(file)
--- a/
scandir.cc
+++ b/
scandir.cc
@@
-57,6
+57,11
@@
LocalDb *db;
/* Keep track of all segments which are needed to reconstruct the snapshot. */
std::set<string> segment_list;
/* Keep track of all segments which are needed to reconstruct the snapshot. */
std::set<string> segment_list;
+/* Snapshot intent: 1=daily, 7=weekly, etc. This is not used directly, but is
+ * stored in the local database and can help guide segment cleaning and
+ * snapshot expiration policies. */
+double snapshot_intent = 1.0;
+
/* Selection of files to include/exclude in the snapshot. */
std::list<string> includes; // Paths in which files should be saved
std::list<string> excludes; // Paths which will not be saved
/* Selection of files to include/exclude in the snapshot. */
std::list<string> includes; // Paths in which files should be saved
std::list<string> excludes; // Paths which will not be saved
@@
-557,7
+562,9
@@
void usage(const char *program)
" (defaults to \".bz2\")\n"
" --signature-filter=COMMAND\n"
" program though which to filter descriptor\n"
" (defaults to \".bz2\")\n"
" --signature-filter=COMMAND\n"
" program though which to filter descriptor\n"
- " --scheme=NAME optional name for this snapshot\n",
+ " --scheme=NAME optional name for this snapshot\n"
+ " --intent=FLOAT intended backup type: 1=daily, 7=weekly, ...\n"
+ " (defaults to \"1\")\n",
lbs_version, program
);
}
lbs_version, program
);
}
@@
-578,6
+585,7
@@
int main(int argc, char *argv[])
{"dest", 1, 0, 0}, // 4
{"scheme", 1, 0, 0}, // 5
{"signature-filter", 1, 0, 0}, // 6
{"dest", 1, 0, 0}, // 4
{"scheme", 1, 0, 0}, // 5
{"signature-filter", 1, 0, 0}, // 6
+ {"intent", 1, 0, 0}, // 7
{NULL, 0, 0, 0},
};
{NULL, 0, 0, 0},
};
@@
-613,6
+621,11
@@
int main(int argc, char *argv[])
case 6: // --signature-filter
signature_filter = optarg;
break;
case 6: // --signature-filter
signature_filter = optarg;
break;
+ case 7: // --intent
+ snapshot_intent = atof(optarg);
+ if (snapshot_intent <= 0)
+ snapshot_intent = 1;
+ break;
default:
fprintf(stderr, "Unhandled long option!\n");
return 1;
default:
fprintf(stderr, "Unhandled long option!\n");
return 1;
@@
-683,7
+696,8
@@
int main(int argc, char *argv[])
string database_path = localdb_dir + "/localdb.sqlite";
db = new LocalDb;
db->Open(database_path.c_str(), desc_buf,
string database_path = localdb_dir + "/localdb.sqlite";
db = new LocalDb;
db->Open(database_path.c_str(), desc_buf,
- backup_scheme.size() ? backup_scheme.c_str() : NULL);
+ backup_scheme.size() ? backup_scheme.c_str() : NULL,
+ snapshot_intent);
tss = new TarSegmentStore(backup_dest, db);
tss = new TarSegmentStore(backup_dest, db);