Tengo un sistema de archivos para un dispositivo que estoy programando del que me gustaría hacer una copia exacta. Idealmente, me gustaría que esta copia sea idéntica a la carpeta desde la que se copió. He intentado usar cp -r
cp -a
y rsync -azvP
tratar de lograr esto. Sin embargo, cada uno da como resultado una carpeta con un tamaño diferente (usando du -s
) y, en última instancia, aunque mi dispositivo se ejecute fuera de la carpeta original, no se ejecutará de la que copié.
- ¿Qué se deja de lado que los comandos que he usado no tienen en cuenta?
- ¿Es posible mantener todo idéntico al copiar un sistema / carpeta de archivos? Si es así, ¿cómo voy a hacer eso?
PD: publiqué preguntas similares en StackOverflow pero rápidamente me di cuenta de que lo había hecho en el intercambio incorrecto
Editar: Esto puede no ser útil, pero no importa qué método utilizo, el directorio copiado siempre hace que la máquina en cuestión Kernel Panic con el siguiente resultado.
VFS: no se puede montar la raíz fs a través de NFS, intentando disquete. VFS: No se puede abrir el dispositivo raíz "nfs" o el bloque desconocido (2,0) Agregue una opción de arranque "root =" correcta; Aquí están las particiones disponibles: 1f00
64 mtdblock0 (controlador?) 1f02 64 mtdblock2 (controlador?) 1f04 2432 mtdblock4 (controlador?) 1f05 128 mtdblock5 (controlador?) 1f06 4352 mtdblock6 (controlador?) 1f07 204928 mtdblock7 (controlador? 4 1f0 1 mtdblock8 (controlador?) 0800
8388608 controlador sda: sd Kernel panic - no se sincroniza: VFS: no se puede montar la raíz fs en un bloque desconocido (2,0)
fuente
du
salida no es un indicador de que el contenido no es el mismo.rsync -a
ocp -a
hacer copias exactas de directorios, pero está intentando copiar un disco de arranque, hay algunas cosas más que debe hacer para completar eso.dd if=/some/location of=/some/other/location bs=4M
leer y escribir datos tal como están.Respuestas:
Generalmente uso una de las siguientes alternativas:
rsync -aHAX
(agregue v para verbosidad) se asegura de preservar cualquier estructura de enlace y x-attrs en la carpeta de destino durante la copia. No olvides quea
significa archivar y preserva tiempo, propiedad y permisos.tar cvf
(no comprimir para ahorrar tiempo, solo alquitránarlos) es lo que uso si el primero no cumple con lo que necesito por alguna razón y no tengo tiempo, pero siempre intento el primero.Para comprobar que todo salió como debería, puede ejecutar
diff -r <folder1> <folder2>
después si lo desea.fuente
du -s
diferencia. Yo solíarsync -axXSAH
copiar todo. El -x solo copiará dentro del sistema de archivos, y no los archivos montados desde otro sistema de archivos.Al leer su respuesta en los comentarios, parece que posiblemente está intentando copiar la carpeta raíz ("Mi dispositivo no arranca usando el directorio copiado"). En ese caso hay varias cosas que debes hacer.
Una vez que haya copiado la carpeta raíz al nuevo sistema, deberá actualizar grub antes de que arranque.
fuente
tar c
entoncestar x
ella. Sin embargo, el truco fue asegurarme de que mi máquina estaba apagada ya que la estaba iniciando usando el FS que era local para mi máquina, pero remoto al dispositivo que estaba iniciando (estaba iniciando el dispositivo a través de NFS)grub-install: error: embedding is not possible, but this is required for cross-disk install.
Podrías probar FSArchiver . Es el sucesor de la imagen similar, que ahora no se mantiene. He usado partimage y FSArchiver en el pasado, y ambos han funcionado bien. Hasta donde yo sé, ambos hacen copias de un sistema de archivos que es lo más parecido posible al original. Creo que FSArchiver es un poco más poderoso que la partimage. Por ejemplo, funciona con ext4, mientras que partimage no. Consulte la tabla de comparación FSArchiver / partimage .
fuente
Usar
du
para comparar carpetas es inherentemente problemático. Si realmente desea comparar 2 directorios basados únicamente en sus tamaños, use dedu
esta manera:Este modificador informará el tamaño real de los directorios frente a la cantidad de espacio en disco que consume cuando se almacena en el medio de la unidad física. Los discos se organizan en bloques y los archivos se escriben en estos bloques. Si un archivo solo necesita BLOQUE + 1 de espacio, consumirá 2 BLOQUES de espacio, y esto es lo que
du
normalmente informa. ¡Recuerde que el nombre de la herramienta es el uso del disco!Dado que está tratando con lo que parece un sistema de archivos completo, me inclinaría a usar
dd
para hacer una copia exacta de la partición en la que se encuentra el directorioLuego puede usar esto
boot.img
para restaurar la partición donde lo desee.fuente
du -sh /var
da 21G perodu -sh --apparent-size /var
da 209G en mi sistema.Depende un poco de lo que quieras decir con "idéntico".
rsync
estaría bien la mayor parte del tiempo. A veces desea utilizartar
para empacar todo en un archivo y extraerlo en el otro lugar.dd
para copiar todo el sistema de archivos.Si tiene algún medio para depurar su dispositivo, intente averiguar cuál es exactamente el problema por el que actualmente no se ejecuta.
fuente