X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fpatches%2Ftesting%2Feblstodo;h=fab93c6dd4e1b1904bd6def8f5b7fa1bcbe298c1;hb=c9afaad5555ddc8abcafa8d49bae819985e23246;hp=c6264868d4f1bb7d9ce9ea0b8ee02f2149d26f24;hpb=c9a7d320e5008fb45b933ef9c1abacabdec0dad2;p=bacula%2Fbacula diff --git a/bacula/patches/testing/eblstodo b/bacula/patches/testing/eblstodo index c6264868d4..fab93c6dd4 100644 --- a/bacula/patches/testing/eblstodo +++ b/bacula/patches/testing/eblstodo @@ -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,7 +149,23 @@ TODO ---- bweb : - - Ajouter mount,umount,release,status pour chaque device + - 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 +or GB). Those could be switched, though, depending on what looks better. + +What are you using for color-coding the ballons? +That could be a variety of different things like +client, client group, backup level (full, +incremental, etc.,) that adds context to the size +and position that is already present in the chart. + + 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 @@ -143,7 +179,7 @@ bweb : 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 @@ -204,7 +240,7 @@ FROM ( 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 % @@ -267,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 @@ -424,7 +462,7 @@ assistant for that. 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 : @@ -447,7 +485,175 @@ 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) + - Impossible de lancer une restauration en meme temps qu'un backup sur + un autochanger. Le code dans jobq.c qui controle les MaxConcurrentJobs + ne prend pas en compte les autochanger avec plusieurs drives. Ce code + fait surement doublon avec le nouveau code de reservation. + Il faudrait le simplifier, et compter les jobs de restauration comme les + jobs normaux. Le patch précédent ne changeait pas le MaxConcurrentJobs + comme il faut à la fin du 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 Le client construit un hash disque (ou en memoire ou les deux) + o A chaque repertoire/fichier on verifie la presence du fichier dans le hash + et on peut aussi comparer date/taille/bloc + - Si le fichier n'est pas dedans, on le backup + - Si le fichier est present on verifie les attributs et on mark le fichier comme vu + o A la fin, on parcours tous le hash pour trouver les fichiers qui ne sont pas vu et + on envoie la liste des fichiers supprimes avec le fileindex=0 et pourquoi pas la date + du jour dans le champ mtime + o Utiliser systematiquement l'option ignorecase sous windows + p Ajouter une option pour avoir la table de stat + Enable Statistic = yes/no + Statistic retention = 4 years + 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 = "yyy" + console = "zzzz" +} + +or possibly + +RunScript { + console = "xxxx", "yyyy", "zzzz" + console = "aaaa" +} + + o cleanup bextract to use filed code +