¿Hay alguna manera de copiar un directorio completo, pero solo las carpetas? Tengo un archivo corrupto en algún lugar de mi directorio que causa que mis discos duros fallen.
Entonces, en lugar de copiar el archivo dañado en otro disco duro, solo quería copiar las carpetas, porque tengo scripts que buscan cientos de carpetas, y no quiero tener que crearlas manualmente.
Hice una búsqueda en el manual de cp, pero no pude ver nada (puede que me lo haya perdido)
Digamos que tengo esta estructura en mi HDD fallido:
dir1
files
dir2
files
files
dir4
dir3
files
Todo lo que quiero es la estructura del directorio, no ningún archivo.
Así que terminaría con el nuevo HDD:
dir1
dir2
dir4
dir3
¡Esperando que alguien sepa algunos trucos!
rsync
copie la estructura del directorio Y conserve los permisos y atributos] ( stackoverflow.com/a/9242883/52074 ). El uso de plainmkdir -p
no conserva los permisos y atributos .Respuestas:
Si desea reflejar un esqueleto de directorio y no copiar archivos:
Que está pasando aqui:
-links 2
para encontrar los directorios más profundos posibles .mkdir -p
hará que falten directorios en el camino.Lo he hecho así en lugar de hacerlo
find -type d -exec mkdir -p "/path/to/backup/{}" \;
porque reducirá una gran cantidad demkdir
llamadas. Podemos probar esto rápidamente con una pequeña prueba. Aquí está el árbol de prueba seguido de lo que ejecuté para comparar los dos comandos:Y eso solo mejorará en una solución de palabras reales con miles de directorios.
fuente
find
utiliza el directorio de trabajo actual como punto de partida. Si desea utilizar otra ruta, use la sintaxis:find /path/to/search/ -type.....
find -type d -exec mkdir -p "/media/jinglez/TVSeries/TV Series"/{}" \;
y todo debería estar bien? Parece estar tomando un tiempo: /find -type d -links 2 -exec mkdir -p "/media/jinglez/TVSeries/TV Series/{}" \;
Fácilmente hecho con python one-liner:
Como script, esto podría reescribirse así:
fuente