Copiar archivos y carpetas
Horst H. von Brand
vonbrand en inf.utfsm.cl
Vie Ene 30 20:35:58 CLST 2009
Aldrin Martoq <amartoq en dcc.uchile.cl> wrote:
> 2009/1/30 Alvaro Herrera <alvherre en alvh.no-ip.org>:
> > Rodrigo Ahumada escribió:
> >> Alvaro Herrera escribió:
[...]
> La pregunta es esa parte de la historia: porque no hicieron
> inmediatamente que el cp copiara archivos o directorios
> recursivamente, siendo que es lo mas "obvio".
> Mi apuesta es que inicialmente los directorios y archivos eran
> considerados iguales (son todos inodos), y todos eran tratados de
> manera igual... Por ejemplo, en AIX puedes hacer lo siguiente:
>
> # mkdir -p mi/directorio
> # cat mi
> p...pUdirectorio#
> # od -x mi
> 0000000 7017 2e00 0000 0000 0000 0000 0000 0000
> 0000020 0002 2e2e 0000 0000 0000 0000 0000 0000
> 0000040 7055 6469 7265 6374 6f72 696f 0000 0000
> 0000060
>
> Creo que alguna vez por error hice algo del estilo "echo hola >
> directorio" y quedó la crema, y tuve que correr fsck, aunque tal vez
> lo soñé ;) O quizás inicialmente pretendian copiar los nombres (aka:
> links a archivos) con tan solo "cp directorio1 directorio2" ... no me
> crean, especulando no mas!
Eso es un tema de como esta implementado el sistema de archivos. Sistemas
"modernos" ocultan eso tras opendir(2)/readdir(2)/closedir(2), y no
permiten leer directorios directamente.
Echa una mirada al formato original del sistema de archivos de Unix: Un
directorio era un archivo que contenia una secuencia de entradas de la
forma (short == 2 bytes):
struct {
unsigned short inode; /* 0 == entrada no se usa */
char name[14]; /* Nombre del archivo, rellenado con '\0' */
}
O sea, a lo mas unos 65000 archivos y directorios por sistema de archivos,
nombres de archivo de a lo mas 14 caracteres (y que no pueden contener '\0'
ni '/').
En sistemas de archivo mas nuevos (partiendo de FFS de BSD) los directorios
son basicamente listas de entradas de largo variable (para acomodar nombres
de archivos mas largos, cuando la inmensa mayoria son cortisimos). Y si en
un sistema ademas quieres acomodar cosas como MS-DOS (FAT) y VFAT (revisa
las tonteras que hacen internamente para forzar nombres largos en el
esquema basico de FAT...) es bastante logico darle en los dedos a quien
crea que "sabe" que es lo que hay en un directorio...
--
Dr. Horst H. von Brand User #22616 counter.li.org
Departamento de Informatica Fono: +56 32 2654431
Universidad Tecnica Federico Santa Maria +56 32 2654239
Casilla 110-V, Valparaiso, Chile 2340000 Fax: +56 32 2797513
Más información sobre la lista de distribución Linux