Tengo un árbol de directorios que me gustaría hacer una copia de seguridad en los discos ópticos. Desafortunadamente, excede el tamaño de cualquier disco (es de aproximadamente 60 GB). Estoy buscando un script que divida este árbol en fragmentos de tamaño apropiado con enlaces duros o cualquier otra cosa (dejando el original intacto). Luego podría alimentar estos árboles de tamaño de bocado en el proceso de copia de seguridad (agregar redundancia PAR2, etc.).
No es un script sofisticado, pero parece que ya se ha hecho. Sugerencias?
(Abordar y escribir en un solo paso es imposible porque quiero hacer más cosas antes de que se quemen los archivos).
backup
disk-usage
split
burning
Reid
fuente
fuente
par2
protección.Respuestas:
Existe una aplicación diseñada para esto:
dirsplit
Suele vivir en
cdrkit
odirsplit
paquetes.Puede crear carpetas listas para usar con enlaces para crear fácilmente DVD con K3b u otro software GUI
fuente
genisoimage
paquete.También puede probar fpart , una herramienta que he escrito (licencia BSD): https://sourceforge.net/projects/fpart/
fuente
Una vez hice un guión feo para un propósito similar. Es solo un error, pero cuando lo escribí no me importaba el tiempo de ejecución o la belleza. Estoy seguro de que hay más versiones "productificadas" del mismo concepto, pero si desea obtener algunas ideas o algo para comenzar a hackear, aquí va (¡lo hizo en 2008, así que úselo bajo su propio riesgo!): )
Creo que compartí el resultado a través de samba con un host de Windows que grabó discos de él. Si usa lo anterior sin modificaciones, es posible que desee usar
mkisofs
u otro archivador que resuelva enlaces simbólicos.fuente
\[?*
). Lectura sugerida: no analice la salida de ls , $ VAR vs $ {VAR} y cite o no cite . Tenga en cuenta que no he probado el script resultante. Si no entiende uno de mis cambios, no dude en preguntar.[
en lugar detest
) ...Una vez escribí un script para resolver un problema similar: lo llamé "distribuir" (puede leer el código principal del script o el archivo con el mensaje de ayuda , o descargarlo como un paquete ); de su descripción :
Realiza todo el proceso en varias etapas: en una etapa, crea los "diseños" del disco furure mediante el uso de enlaces simbólicos a los archivos originales, para que pueda intervenir y cambiar los futuros árboles de discos.
Los detalles sobre su uso se pueden leer en el mensaje de ayuda impreso por el script (o mirando el código fuente).
Fue escrito con un caso de uso más complicado en mente (emitir actualizaciones como "diff" - el conjunto de archivos nuevos agregados - a la colección de archivos grabada originalmente), por lo que incluye una etapa inicial adicional, a saber, "arreglar "el estado actual de la colección de archivos (por simplicidad, lo hace replicando la colección original de archivos mediante enlaces simbólicos, en un lugar de trabajo especial para guardar los estados de la colección; luego, en algún momento en el futuro, podrá crear una diferencia entre un estado actual futuro de la colección de archivos y este estado guardado). Entonces, aunque es posible que no necesite esta función, no puede saltarse esta etapa inicial, AFAIR.
Además, ahora no estoy seguro (lo escribí hace unos años) si trata bien los árboles complejos o si se supone que divide solo directorios de archivos simples (de un nivel). (Por favor, mire el mensaje de ayuda o el código fuente para asegurarse; buscaré esto también, un poco más tarde, cuando tenga algo de tiempo).
Las cosas relacionadas con APT son opcionales, así que no preste atención porque puede preparar colecciones de paquetes para que APT las use si no las necesita.
Si le interesa, por supuesto, siéntase libre de reescribirlo según sus necesidades o sugerir mejoras.
(¡Tenga en cuenta que el paquete incluye parches útiles adicionales no aplicados en la lista de códigos presentada en el repositorio de Git vinculado anteriormente!)
fuente
distribute
que resuelve la tarea esencial que se pregunta aquí.No debemos olvidar que la esencia de la tarea es bastante simple; como se puso en un tutorial sobre Haskell (que está escrito en torno a la solución de esta tarea, refinada gradualmente)
(de la guía Hitchhikers de Haskell, Capítulo 1 )
(Además, en su pregunta, le gustaría poder ajustar (editar) los diseños de disco resultantes y luego usar una herramienta para grabarlos).
Puede reutilizar (adaptar y reutilizar) una variante simple del programa de ese tutorial de Haskell para dividir su colección de archivos.
Desafortunadamente, en la
distribute
herramienta que he mencionado aquí en otra respuesta , la simplicidad de la tarea de división esencial no se corresponde con la complejidad y la hinchazón de la interfaz de usuariodistribute
(porque fue escrita para combinar varias tareas; aunque se realizó en etapas, pero aun así combinado no de la manera más limpia que se me ocurra ahora).Para ayudarlo a utilizar su código, aquí hay un extracto del código bash de
distribute
(en la línea 380 ) que sirve para realizar esta tarea "esencial" de dividir una colección de archivos:( lea más después de la línea 454 )
Tenga en cuenta que la
eatFiles
función prepara los diseños de los futuros discos como árboles donde las hojas son enlaces simbólicos a los archivos reales. Por lo tanto, cumple con su requisito de poder editar los diseños antes de grabar. Lamkisofs
utilidad tiene una opción para seguir enlaces simbólicos, que de hecho se emplea en el código de mimkiso
función .El guión presentado (¡que puede tomar y reescribir según sus necesidades, por supuesto!) Sigue la idea más simple: para sumar los tamaños de los archivos (o, más precisamente, los paquetes en el caso de
distribute
) solo en el orden en que se enumeraron, don No haga ningún reordenamiento.La "Guía de autoestopistas de Haskell" toma el problema de optimización más en serio y sugiere variantes de programa que intentarían reorganizar los archivos de manera inteligente, para que se ajusten mejor a los discos (y requieran menos discos):
(lea más en el Capítulo 3 y más).
Otras herramientas inteligentes
También me han dicho que Debian usa una herramienta para hacer sus CD de distribución que es más inteligente que mis
distribute
colecciones de paquetes wrt: sus resultados son mejores porque se preocupa por las dependencias entre paquetes y trataría de hacer la colección de paquetes que sigue el primer disco cerrado bajo dependencias, es decir, ningún paquete del primer disco debería requerir un paquete de otro disco (o al menos, diría, el número de tales dependencias debería minimizarse).fuente
backup2l puede hacer mucho de este trabajo. Incluso si no usa el paquete directamente, puede obtener algunas ideas de script.
fuente
Se
rar
puede indicar al archivador que divida automáticamente el archivo que crea en trozos de un tamaño específico con la-vsize
bandera.Archivando ese árbol de directorios nombrado
foo
en trozos de, digamos, 500 megabytes cada uno que especificaríarar a backup.rar -v500m foo/
fuente
rar
, a menos que desempaquete cada "parte" nuevamente en su propio directorio, que por supuesto no funcionará, ya que las partes no están diseñadas de esa manera y no se dividen en los límites de los archivos.tar
+split
, entonces también hay dar ; Aquí está la nota sobre su característica relevante: "(SLICES) fue diseñado para poder dividir un archivo en varios medios extraíbles, cualquiera sea su número y su tamaño". En comparación contar
+split
, supongo, permite algunas formas más fáciles de acceder a los archivos archivados. (Por cierto, también tiene una característica similar adistribute
: "RESPALDO DIFERENCIAL" y "INSTANTÁNEO DE ÁRBOL DE DIRECTORIO", pero a uno no le gusta que el resultado sea un formato especial, no un ISO con un árbol de directorios.)