]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/patches/testing/eblstodo
ebl cleanup
[bacula/bacula] / bacula / patches / testing / eblstodo
index 5c19f26219f047f42b2760db37600322a2315866..fab93c6dd4e1b1904bd6def8f5b7fa1bcbe298c1 100644 (file)
@@ -1,6 +1,22 @@
 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
@@ -47,6 +63,7 @@ Sauvegarde des postes nomades :
 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
@@ -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
 
+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
@@ -129,6 +149,11 @@ TODO
 ----
 
 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 
@@ -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
+ 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
@@ -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
- 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)
@@ -470,7 +497,7 @@ bacula :
    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
@@ -487,9 +514,133 @@ bacula :
    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"
@@ -504,5 +655,5 @@ RunScript {
    console = "aaaa"
 }
 
- x fix segfault when config files are empty
  o cleanup bextract to use filed code
+