1

J'ai une solution de sauvegarde hors site qui fonctionne sur C++ pour décomposer les fichiers en blocs, et conserve la trace des blocs en utilisant des hachages md5 sur une base de données SQLITE3. Et il transfère les blocs avec la base de données à un site distant. Donc, quand je veux faire une restauration, il interroge la base de données SQLITE3 et restaure les blocs en conséquence. Lorsque la première sauvegarde s'exécute, elle crée une grande table appelée base_backup.Sauvegardes incrémentales: comment effectuer le suivi des suppressions de fichiers

Tous les changements de fichiers suivants ou de nouveaux fichiers sont ajoutés en tant que nouveaux enregistrements dans une nouvelle table. Si je veux faire une restauration, j'interroge la table base_backup plus toutes les différences et restaure les fichiers. De la manière dont la sauvegarde s'exécute, elle analyse tous les fichiers d'un dossier donné pour le bit d'archive et, si elle est désactivée, vérifie si un enregistrement n'existe pas déjà dans la base de données et décide de la sauvegarder. ou pas.

En réponse à ma question, si un fichier est supprimé sur l'ordinateur local, comment puis-je le suivre et mettre à jour la sauvegarde hors site en conséquence? Parce que quand je fais une restauration, je ne veux pas restaurer tous les fichiers de vidage. Est-il possible de savoir si les fichiers ont été supprimés d'un dossier ou non? Je ne souhaite pas effectuer de vérification de la base de données, car cela prendra trop de temps.

+1

Quelle est la raison particulière pour laquelle vous n'utilisez pas un logiciel de sauvegarde existant? –

+0

Comme il met en œuvre son propre produit? –

+0

Etes-vous capable de vérifier rapidement quels fichiers vous avez sauvegardés dans le passé à partir d'un répertoire donné? – Jonathan

Répondre

1

inotify avec IN_DELETE?

+0

Cela ne fonctionne que si son programme de sauvegarde est en cours d'exécution alors que le fichier est supprimé. – Gabe

+0

Droite. Besoin d'un processus de surveillance pour être en cours d'exécution. –

+0

Plus, ressemble à Windows (il y avait une mention d'un "bit d'archive"). – Jonathan

0

Créer un service pour surveiller le répertoire (utilisation FindFirstChangeNotification ou ReadDirectoryChangesW)

+0

Merci, mais je ne veux pas qu'il surveille constamment le dossier. – roymustang86

0

Vous pouvez ajouter une nouvelle information à votre base de données qui répertorie les fichiers qui existaient au cours de la dernière sauvegarde. Ensuite, même si un fichier n'avait pas changé, une nouvelle (petite) entrée serait faite pendant la sauvegarde, indiquant qu'elle existait toujours.

Lors de la restauration d'une sauvegarde à partir d'une date donnée dans le passé, sélectionnez uniquement les fichiers dont les entrées spécifiaient qu'elles existaient lors de la sauvegarde précédente.

Par exemple, une paire de tables comme cela pourrait fonctionner:

Path(text) BackupIndex(int) 
path/to/file1 1 
path/to/file2 1 
path/to/file1 2 

Notez que path/to/file2 ne figure pas dans la sauvegarde # 2, car il n'a pas été dans le répertoire lors de la sauvegarde (il doit avoir été supprimé).

BackupIndex(int) Timestamp(timestamp) 
1     2011-03-12 7:42:31 UTC 
2     2011-03-20 8:21:56 UTC 

Quelqu'un veut restaurer en tant que fichiers existaient le 15 Mars, vous regardez le tableau des indices de sauvegarde, voir que la sauvegarde n ° 1 était la plus récente, et rechercher tous les chemins qui existaient dans la sauvegarde 1 des chemins table. Donc, fondamentalement, vous essayez de décider si un fichier a été supprimé sur l'opération de restauration, plutôt que l'opération de sauvegarde.

Questions connexes