]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/patches/testing/eblstodo
ebl cleanup
[bacula/bacula] / bacula / patches / testing / eblstodo
index e345f3f1f38573ac4928e177769753a5e10fe015..fab93c6dd4e1b1904bd6def8f5b7fa1bcbe298c1 100644 (file)
@@ -1,6 +1,22 @@
 Idees
 ------
 
 Idees
 ------
 
+Despool attributes later
+ - use spool_attribute parameter (0,1,2)
+ foreach spool_file (spool_files)
+   ask to director ok/discard
+   despool_attr
+   end_of_despool
+
+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
 Cryptage :
  - Pouvoir configurer les algos de cryptage
  - Pouvoir choisir de crypter dans le fileset
@@ -47,6 +63,7 @@ Sauvegarde des postes nomades :
 Bconsole :
  p Ajouter l'historique dans la bconsole
  - Ajouter une commande pour bloquer un drive
 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
 
 Sauvegarde SAN :
  - Avoir un SD sur chaque FD
@@ -72,6 +89,9 @@ Gestion des stats :
    - générer un format simple UNIXSTAMP|label|unit|value
    - possibilité d'ajouter ça dans la base de donnée ou dans rrd
 
    - 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
 API :
 
  - apr (apache portable runtime) pour les exemples de chargement
@@ -129,6 +149,11 @@ TODO
 ----
 
 bweb :
 ----
 
 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 
   - Balloon
 Btw., the vertical axis was the number of files 
 while the size of the ballon is the volume (in MB 
@@ -140,7 +165,7 @@ client, client group, backup level (full,
 incremental, etc.,) that adds context to the size 
 and position that is already present in the chart.
 
 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
  - 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
@@ -154,7 +179,7 @@ and position that is already present in the chart.
  de job (par exemple, si c'est pas un backup/restore, pas de status dir)
 
 
  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
 
               lu ma me je ve sa di
   groupe1     v  v  x  w  v  v  v             q1
@@ -215,7 +240,7 @@ FROM (
    Groupe -> Jobs
    Job    -> Log
 
    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 %
 
    origin = arg->{origin} || NOW();
  - Ajouter des stats en %
 
@@ -278,6 +303,8 @@ FROM (
 
  - Ajouter la liste des fichiers (quand il n'y en a pas trop)
  - Ajouter un mode qui compte le nombre de fichier sous bfileview
 
  - 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
  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
@@ -435,7 +462,7 @@ assistant for that.
 Media -> I/O -> Fill pools -> Select pool(s) -> import selections
 
 bschedule:
 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 :
   le premier dimanche du mois)
 
 manuel :
@@ -458,7 +485,7 @@ bacula :
  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
  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)
 
        Please mount Volume "R40175" or label a new one for
        Pas le bon message pour une resto (label a new one)
@@ -470,7 +497,7 @@ bacula :
    jobs normaux. Le patch précédent ne changeait pas le MaxConcurrentJobs
    comme il faut à la fin du backup.
 
    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
    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
@@ -487,9 +514,133 @@ bacula :
    p Ajouter une option pour avoir la table de stat
       Enable Statistic = yes/no
       Statistic retention = 4 years
    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"
 
 RunScript {
    console = "xxxx"
@@ -504,4 +655,5 @@ RunScript {
    console = "aaaa"
 }
 
    console = "aaaa"
 }
 
- o fix segfault when config files are empty
+ o cleanup bextract to use filed code
+