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