J'ai une arborescence de répertoires que je voudrais sauvegarder sur des disques optiques. Malheureusement, il dépasse la taille de n'importe quel disque (environ 60 Go). Je suis à la recherche d'un script qui diviserait cet arbre en morceaux de taille appropriée avec des liens durs ou autres (laissant l'original intact). Je pourrais ensuite alimenter ces arbres de petite taille dans le processus de sauvegarde (ajouter une redondance PAR2, etc.).
Ce n'est pas un script sophistiqué, mais il semble que cela ait déjà été fait. Suggestions?
(Le fractionnement et l'écriture en une seule étape est un pas parce que je veux faire plus de choses avant que les fichiers ne soient brûlés.)
par2
protection.Réponses:
Il existe une application conçue pour cela:
dirsplit
Il vit généralement dans
cdrkit
ou endirsplit
paquets.Il peut créer des dossiers prêts à l'emploi avec des liens pour créer facilement des DVD avec K3b ou un autre logiciel GUI
la source
genisoimage
paquet.Vous pouvez également essayer fpart , un outil que j'ai écrit (sous licence BSD): https://sourceforge.net/projects/fpart/
la source
Une fois, j'ai fait un mauvais script dans un but similaire. C'est juste un coup de coude, mais quand je l'ai écrit, je me fichais du temps d'exécution ou de la beauté. Je suis sûr qu'il existe des versions plus "productifiées" du même concept, mais si vous souhaitez obtenir des idées ou quelque chose pour commencer à pirater, voici (l'a fait en 2008, alors utilisez-le à vos risques et périls!): - )
Je pense que j'ai eu le résultat partagé via la samba à un hôte Windows qui en a gravé des disques. Si vous utilisez ce qui précède sans modification, vous pouvez utiliser
mkisofs
un autre archiveur qui résout les liens symboliques.la source
\[?*
). Lecture suggérée: ne pas analyser la sortie de ls , $ VAR vs $ {VAR} et pour citer ou ne pas citer . Notez que je n'ai pas testé le script résultant. Si vous ne comprenez pas un de mes changements, n'hésitez pas à demander.[
par opposition àtest
, cependant) ...Une fois, j'ai écrit un script pour résoudre un problème similaire - je l'ai appelé "distribuer" (vous pouvez lire le code principal du script ou du fichier avec le message d'aide , ou le télécharger sous forme de package ); à partir de sa description :
Il effectue l'ensemble du processus en plusieurs étapes: à un stade, il crée les «dispositions» du disque à l'aide de liens symboliques vers les fichiers d'origine - afin que vous puissiez intervenir et modifier les futures arborescences de disque.
Les détails de son utilisation peuvent être lus dans le message d'aide imprimé par le script (ou en consultant le code source).
Il a été écrit avec un cas d'utilisation plus délicat à l'esprit (publier des mises à jour en tant que «diff» - l'ensemble de nouveaux fichiers ajoutés - à la collection de fichiers enregistrée à l'origine), il comprend donc une étape initiale supplémentaire, à savoir, «la correction "l'état actuel de la collection de fichiers (pour simplifier, il le fait en reproduisant la collection de fichiers d'origine au moyen de liens symboliques, dans un lieu de travail spécial pour enregistrer les états de la collection; puis, dans le futur, il pourra créer un diff entre un futur état actuel de la collection de fichiers et cet état enregistré). Ainsi, bien que vous n'ayez peut-être pas besoin de cette fonctionnalité, vous ne pouvez pas ignorer cette étape initiale, AFAIR.
De plus, je ne suis pas sûr maintenant (je l'ai écrit il y a quelques années) s'il traite bien les arbres complexes ou s'il est censé ne diviser que les répertoires de fichiers simples (à un niveau). (Veuillez vérifier le message d'aide ou le code source pour en être sûr; je le vérifierai aussi un peu plus tard, quand j'aurai du temps.)
Les éléments liés à APT sont facultatifs, alors ne faites pas attention à ce qu'ils puissent préparer des collections de packages à utiliser par APT si vous n'en avez pas besoin.
Si vous êtes intéressé, bien sûr, n'hésitez pas à le réécrire à vos besoins ou à suggérer des améliorations.
(Veuillez noter que le package comprend des correctifs utiles supplémentaires non appliqués dans la liste de codes présentée au référentiel Git lié ci-dessus!)
la source
distribute
qui résout la tâche essentielle demandée ici.Nous ne devons pas oublier que l'essence de la tâche est en effet assez simple; comme mis dans un tutoriel sur Haskell (qui est écrit autour de l'élaboration de la solution pour cette tâche, progressivement améliorée)
(du guide des auto-stoppeurs à Haskell, chapitre 1 )
(De plus, dans votre question, vous aimeriez pouvoir modifier (modifier) les dispositions de disque résultantes, puis utiliser un outil pour les graver.)
Vous pouvez réutiliser (adapter et réutiliser) une variante simple du programme de ce tutoriel Haskell pour fractionner votre collection de fichiers.
Malheureusement, dans l'
distribute
outil que j'ai mentionné ici dans une autre réponse , la simplicité de la tâche de fractionnement essentielle n'est pas compensée par la complexité et le gonflement de l'interface utilisateur dedistribute
(car il a été écrit pour combiner plusieurs tâches; bien qu'il soit effectué par étapes, mais toujours combiné pas de la manière la plus propre à laquelle je pouvais penser maintenant).Pour vous aider à utiliser son code, voici un extrait du code bash de
distribute
(à la ligne 380 ) qui sert à effectuer cette tâche "essentielle" de fractionnement d'une collection de fichiers:( lire la suite après la ligne 454 )
Notez que la
eatFiles
fonction prépare les dispositions des futurs disques sous forme d'arbres où les feuilles sont des liens symboliques vers les vrais fichiers. Ainsi, il répond à votre exigence de pouvoir modifier les dispositions avant de les graver. L'mkisofs
utilitaire a une option pour suivre les liens symboliques, qui est en effet utilisé dans le code de mamkiso
fonction .Le script présenté (que vous pouvez prendre et réécrire selon vos besoins, bien sûr!) Suit l'idée la plus simple: pour additionner les tailles des fichiers (ou, plus précisément, des packages dans le cas de
distribute
) juste dans l'ordre dans lequel ils ont été listés, don ne fais pas de réarrangements.Le "Guide des Hitchhikers pour Haskell" prend le problème d'optimisation plus au sérieux et suggère des variantes de programme qui essaieraient de réorganiser les fichiers intelligemment, afin qu'ils s'adaptent mieux aux disques (et nécessitent moins de disques):
(lire plus dans le chapitre 3 et plus loin.)
Autres outils intelligents
On m'a également dit que Debian utilise un outil pour rendre ses CD de distribution plus intelligents que mes
distribute
collections de paquets wrt: ses résultats sont plus agréables car il se soucie des dépendances inter-paquets et essaierait de rendre la collection de paquets qui fonctionne le premier disque fermé sous des dépendances, c'est-à-dire qu'aucun paquet du 1er disque ne devrait exiger un paquet d'un autre disque (ou du moins, je dirais, le nombre de ces dépendances devrait être minimisé).la source
backup2l peut faire une grande partie de ce travail. Même si vous n'utilisez pas directement le package, vous pourriez en tirer des idées de script.
la source
L'
rar
archiveur peut être chargé de diviser automatiquement l'archive qu'il crée en morceaux d'une taille spécifique avec l'-vsize
indicateur.Archivage de cette arborescence de répertoires nommée
foo
en morceaux de, disons, 500 mégaoctets chacun que vous spécifieriezrar a backup.rar -v500m foo/
la source
rar
, à moins que vous ne décompactiez chaque "pièce" à nouveau dans son propre répertoire, ce qui bien sûr ne fonctionnera pas, car les pièces ne sont pas conçues comme ça, et ne sont pas divisées sur les limites des fichiers.tar
+split
, alors il y a aussi Dar ; voici la note sur sa fonctionnalité: "(SLICES) il a été conçu pour pouvoir fractionner une archive sur plusieurs supports amovibles quel que soit leur nombre et quelle que soit leur taille". Par rapport àtar
+split
, je suppose qu'il permet des moyens plus faciles d'accéder aux fichiers archivés. (BTW, il a également une fonctionnalité ressemblant àdistribute
: "SAUVEGARDE DIFFÉRENTIELLE" & "INSTANTANÉ D'ARBRE DE RÉPERTOIRE", mais on peut ne pas aimer que le résultat soit un format spécial, pas un ISO avec un arbre dir.)