Idees
------
+Continious Backup Linux
+ - stap
+http://www.redhat.com/magazine/011sep05/features/systemtap/
+http://sourceware.org/systemtap/
+
+Deduplication:
+ proba de collision en fonction de la taille du hash
+ http://en.wikipedia.org/wiki/Birthday_attack
+
Cryptage :
- Pouvoir configurer les algos de cryptage
- Pouvoir choisir de crypter dans le fileset
Bconsole :
p Ajouter l'historique dans la bconsole
- Ajouter une commande pour bloquer un drive
+ - Ajouter de la completion automatique sur les commandes
Sauvegarde SAN :
- Avoir un SD sur chaque FD
- générer un format simple UNIXSTAMP|label|unit|value
- possibilité d'ajouter ça dans la base de donnée ou dans rrd
+Exchange backup:
+http://www.petri.co.il/brick_level_backup_of_mailboxes_by_using_exmerge.htm
+
API :
- apr (apache portable runtime) pour les exemples de chargement
----
bweb :
+ - Support sqlite
+ SELECT strftime('%Y-%m-%d', Job.StartTime) FROM Job LIMIT 1;
+ x Voir les groupes d'un client
+ - Overview, pouvoir choisir entre la job_old et l'autre
+ - utiliser des noms de table plus proche (brestore -> bweb ?)
- Balloon
Btw., the vertical axis was the number of files
while the size of the ballon is the volume (in MB
incremental, etc.,) that adds context to the size
and position that is already present in the chart.
- - Ajouter mount,umount,release,status pour chaque device
+ x Ajouter mount,umount,release,status pour chaque device
- Ajouter le viewfileset dans l'interface de resto
x Ajouter la labelisation de bande et l'ajout de media (add et label)
- Ajouter la possibilité de lancer des migrations et des
de job (par exemple, si c'est pas un backup/restore, pas de status dir)
- - Ajouter une vue par groupe et par date (sur 7, 15 ou 30 jours)
+ x Ajouter une vue par groupe et par date (sur 7, 15 ou 30 jours)
lu ma me je ve sa di
groupe1 v v x w v v v q1
Groupe -> Jobs
Job -> Log
- - Ajouter une variable pour remplacer NOW() dans les queries
+ x Ajouter une variable pour remplacer NOW() dans les queries
origin = arg->{origin} || NOW();
- Ajouter des stats en %
- Ajouter la liste des fichiers (quand il n'y en a pas trop)
- Ajouter un mode qui compte le nombre de fichier sous bfileview
+ x Ajouter une estimation de progression du backup basé sur le nombre
+ de fichier et le nombre de Mo
x Ajouter un bouton suivant/precedant dans la vue des logs
x Ajouter la liste des medias qui vont/ont expirer et les pruner
x Fixer les purge/prune de multiple volumes
Media -> I/O -> Fill pools -> Select pool(s) -> import selections
bschedule:
- - Bug dans la determination des jours de la semaine (exemple de la full
+ x Bug dans la determination des jours de la semaine (exemple de la full
le premier dimanche du mois)
manuel :
p modifier l'organisation de la table version (pour pouvoir ajouter
les versions de bweb par exemple)
- utiliser la meme fonction pour read_close_session et append_close_session
- - pb dans le message de chargement d'une bande pendant une resto
+ x pb dans le message de chargement d'une bande pendant une resto
Please mount Volume "R40175" or label a new one for
Pas le bon message pour une resto (label a new one)
jobs normaux. Le patch précédent ne changeait pas le MaxConcurrentJobs
comme il faut à la fin du backup.
- - Accurate backup
+ x Accurate backup
o Envoyer la liste de tous les fichiers au client dans un format simple
/path/ LSTAT # un / a la fin pour un repertoire
/path/file LSTAT
p Ajouter une option pour avoir la table de stat
Enable Statistic = yes/no
Statistic retention = 4 years
-
-
- o Utiliser une alist dans les runscripts
+ o use mmap to map hash ? (on 32b, we are limited to 1 or 2GB)
+
+#ifndef _WIN32
+ ef->data = mmap(NULL, ef->data_size, PROT_READ,
+ MAP_SHARED, fileno(ef->fp), 0);
+#else
+ fm = CreateFileMapping((HANDLE) _get_osfhandle (fileno(ef->fp)),
+ NULL,
+ PAGE_READONLY,
+ 0,
+ 0,
+ NULL);
+ ef->data = MapViewOfFile(fm,
+ FILE_MAP_READ,
+ 0,
+ 0,
+ ef->data_size);
+ CloseHandle(fm);
+#endif
+
+ ef = eet_internal_read(ef);
+ if (!ef)
+@@ -892,11 +862,7 @@
+ free(ef->header);
+ }
+
+#ifndef _WIN32
+ if (ef->data) munmap((void*)ef->data, ef->data_size);
+#else
+ if (ef->data) UnmapViewOfFile (ef->data);
+#endif
+
+if (ef->fp) fclose(ef->fp);
+
+ - Accurate backup (kern)
+1. Run bconsole
+2. Dir -> FD run job
+*3. FD does a normal backup and at the same time makes a list of all files on
+the system (in the FileSet), marking which ones were just now backed up.
+4. For each file backed up send attributes/data to SD. Note, this is done
+during step 3 above. Minor difference, the connection with the SD is not
+dropped at the end of the backup -- see later.
+*5. Send the list of all files including those backed up to the Dir
+ --> Send to SD and DIR at the same time ?
+ filed/backup.c/encode_and_send_attributes
+
+6. Dir computes files and deleted files.
+7. Dir sends list of additional files (new files) to backup, and list of files
+deleted.
+8. FD does backup of files Dir says to save.
+9. FD sends SD attrs of backed up files
+10. FD sends SD delete records for files Dir wants deleted.
+*11. FD connection to SD can be closed, this part of the backup is done.
+*12. FD sends new list of files just backed up to Dir
+*13. Dir adds newly backed up files to previous list sent by FD
+*14. Dir "batch" inserts complete new list in the catalog (I forgot the name
+of the new table). Note this table has nothing to do with the File table.
+*15. Dir deletes previous list in catalog.
+*16. Dir does normal batch insert of attributes from SD, but must handle
+deleted records. Note, this will probably happen at the same time as the
+items 13-15.
+
+
+
+ - TODO:
+ 0001088: volume FirstWritten attribute is set to time of mount request, not time of first write
+ Description When a Bacula job requests mounting a tape volume that is not present in the drive,
+ once the tape is mounted, its FirstWritten attribute is set to the time when the volume was requested.
+ Consequently, if the job has been waiting longer than the maximum use duration of the volume,
+ the volume is promoted to Used immediately because the maximum use duration has apparently expired before
+ the use has even started.
+
+To avoid that, the FirstWritten attribute should be set to the time the volume was mounted (= the current time when the setting takes place).
+
+ x Backup a file that is not in accurate list (change NOCHG to LINK, FILE, etc..)
+ * Manage JobFiles (Deleted compte pour 1 ?)
+
+ x Utiliser le check_accurate dans find_one et declencher le save_file
+ si besoin en desactivant le incremental.
+ x ne va pas marcher avec le strip path (la recherche est faite avant le strip path)
+ * on peut utiliser le champs LStat de la base pour noter que le fichier est supprimé...
+
+ CREATE TEMPORARY TABLE btemp2 AS (
+ SELECT max(FileId) as FileId, PathId, FilenameId
+ FROM (SELECT FileId, PathId, FilenameId FROM File WHERE JobId IN (39867,40341)) AS F
+ GROUP BY PathId, FilenameId )
+
+ SELECT Path.Path, Filename.Name, File.FileIndex, File.JobId, File.LStat
+ FROM (
+ SELECT max(FileId) as FileId, PathId, FilenameId
+ FROM (SELECT FileId, PathId, FilenameId FROM File WHERE JobId IN (11,13)) AS F
+ GROUP BY PathId, FilenameId
+ ) AS Temp
+ JOIN Filename ON (Filename.FilenameId = Temp.FilenameId)
+ JOIN Path ON (Path.PathId = Temp.PathId)
+ JOIN File ON (File.FileId = Temp.FileId)
+ WHERE FileIndex > 0
+
+
+ SELECT File.FileIndex, Path.Path, Filename.Name, File.LStat
+ FROM btemp2 JOIN Path USING (PathId) JOIN Filename USING (FilenameId)
+ JOIN File USING (FileId)
+ WHERE File.FileIndex > 0
+
+ DROP TABLE btemp2
+*/
+/*
+SELECT DISTINCT ON (PathId, FilenameId) FileIndex, Path, Name, LStat
+ FROM File JOIN Filename USING (FilenameId) JOIN Path USING (PathId) WHERE JobId IN (40341)
+ ORDER BY PathId, FilenameId, JobId DESC
+*/
+
+ - .api mode:
+Some ideas :
+- Every dates have to be in ISO format
+YYYY-MM-DD HH:MM:SS
+- JobLevel, JobStatus, etc.. have to use C constant T,R,a,A,f...
+- Sizes are always in bytes (no suffix)
+- Numbers have to be used without commas
+- If we change (add) something, we must always add new elements
+at the end.
+
+For director status on running jobs, it will be great to display :
+JobId, Client name, Job Name, Level, Start Time and Status
+
+
+ x Utiliser une alist dans les runscripts
RunScript {
console = "xxxx"
console = "aaaa"
}
- o fix segfault when config files are empty
+ o cleanup bextract to use filed code
+