2009-02-21 2 views
1

Notre magasin manque constamment d'espace disque, car nous avons un mandat des développeurs et de la direction pour conserver toutes les versions nocturnes, car cela facilite grandement le débogage.Vous cherchez un "système de fichiers de stockage" qui peut fusionner des fichiers dupliqués et similaires pour augmenter l'espace de stockage

Chaque construction a généralement peu de changements. Cependant, presque tous les fichiers sont différents d'une compilation à l'autre, car le compilateur et l'éditeur de liens insèrent des marques de date et d'heure (et des versions) dans les objets et les exécutables. Donc la question est: est-ce que quelqu'un connaît un système de fichiers qui non seulement peut "fusionner des fichiers dupliqués", mais aussi "fusionner des fichiers similaires", puisque ces fichiers sont de plusieurs Ko à Mo, mais seulement quelques octets par le fichier a changé? (Même avec des changements de code, l'impact sur les exécutables sera généralement faible, sauf si un en-tête majeur ou une bibliothèque est modifiée, etc.)

Répondre

2

Pourquoi pas un système de contrôle de version traditionnel?

Vous commencez la première génération, puis vous vous engagez mutuellement en même temps. Si un fichier est un doublon, aucun delta ne sera créé. S'il a une modification, il ne conservera que le changement.

N'est-ce pas ce que vous avez demandé?

+0

Ceci est pour le stockage des résultats de construction, pas pour le code source; nous utilisons le contrôle de version pour notre source. –

+0

Le contrôle de version peut également être utilisé pour les binaires. Et il fournit les fonctionnalités que vous avez demandées (deltas). –

+0

Bon, c'est logique, mais - y a-t-il un VCS qui fonctionne comme un système de fichiers? Cela peut être accessible à partir de Windows? (De préférence, un système de fichiers Windows.) –

0

Je pense que cramfs fait cela, mais créer des images cramfs (qui sont en lecture seule) peut être un mal de tête.

Hmm .. Pourquoi auriez-vous besoin d'archiver des builds? Ne devrait-il pas être trivial de recréer une construction à partir d'une version précédente contrôlée par la source?

+0

Oui, il est trivial de recréer des builds mais cela prend du temps et ne produit pas d'équivalent octet-by-byte (en raison de la date de liaison/des horodatages). L'une des techniques de débogage est la "recherche binaire" pour déterminer la génération d'un problème apparu en premier, et avoir toutes les anciennes versions rend cela plus facile. –

1

En général, mon opinion sur ce type de sujet est "n'essayez pas de vous sortir d'une mauvaise décision de gestion".

S'ils veulent conserver autant de vieux fichiers de construction, "man up" et acheter de l'espace (l'espace disque est bon marché). Si elles ne veulent pas acheter les disques, "man up" et choisissez un nombre raisonnable de builds pour que cela reste dans l'espace disponible.

Ce n'est pas vraiment si difficile. Le plus loin que j'irais dans ce sens serait d'activer la "compression de disque" sur le disque si celui-ci est disponible, puisque cela est géré par le système d'exploitation et n'a pas besoin d'une application supplémentaire et le support qui va avec. Bien sûr, c'est un petit succès de performance - mais c'est simple. Enregistrez le jus de "développement" pour les choses importantes.

:-)

+0

Je suis d'accord que ce n'est pas si difficile d'un problème. Comme je l'ai dit dans un autre commentaire, nous essayons de "faire plus avec moins" afin que nous puissions tous garder nos emplois ... La compression de disque n'aura pas le même impact qu'un algorithme qui dit "ces deux fichiers ont le même nom, mais quelques octets différents "et deltas stockés. –

0

Vous avez probablement besoin d'un système de fichiers ou d'un gestionnaire de volumes avec compression transparente. Les performances seraient naturellement affectées, mais si vous utilisez une compression légère, cela ne devrait pas poser trop de problèmes.

0

Pour une fraction de l'effort d'installation et de maintenance d'un nouveau système de gestion de fichiers, j'achèterais plus de disques durs. J'étais à Frys la nuit dernière et ils vendaient un disque externe de 1 To pour 100 dollars; c'est une clé USB, tout ce que vous avez à faire est de le brancher. S'il est rempli, achetez-en un autre. Parlant en tant que développeur, je serais surpris si votre boutique veut vraiment garder les builds indéfiniment - je soupçonne que la valeur des builds nocturnes serait faible après un certain nombre de mois.

Cette solution n'est pas élégante mais peut être plus rentable.

+0

Nous utilisons du matériel de classe serveur et les budgets sont affectés par le ralentissement économique. L'idée est de pouvoir «faire plus avec moins», donc il reste plus d'argent pour nos salaires. –

+0

Avez-vous vraiment besoin de matériel "de classe serveur" pour ce problème? 100 $ est environ 2 heures de votre salaire brut. –

1

Ceci est une solution de pauvre, mais si le stockage de build est une décision financière majeure, alors je pense que cette réponse est justifiée. :)

D'abord, il est hautement improbable que vous trouverez un nouveau système de contrôle de stockage/source qui fait ce type de référence de fichier complexe pour moins que vous pourriez simplement payer pour le nouveau stockage. Que diriez-vous de conserver les 2 derniers mois de builds sur un stockage coûteux (c'est-à-dire RAID) et ensuite vous procurer un stockage bon marché pour l'archivage (c'est-à-dire un disque USB de 1 To que quelqu'un d'autre a mentionné).

Ecrivez une petite application console simple qui s'exécute comme une tâche planifiée chaque nuit et déplace tous les fichiers < il y a 2 mois vers le lecteur d'archives.

+0

Complexe? Pourquoi? Vous engagez simplement chaque build au-dessus de l'autre et le VCS prend soin des choses delta ... –

-1

Je pense que vous devriez utiliser une application pour delete duplicate files qui sera une meilleure solution pour vous, j'utiliser un logiciel pour supprimer les doublons appelé recherche de doublons 2009.

Questions connexes