Flags de cp(1) y mv(1) [Was: Re: Copiar archivos y carpetas]

Horst H. von Brand vonbrand en inf.utfsm.cl
Vie Ene 30 20:20:46 CLST 2009


Rodrigo Ahumada <rodahummont en gmail.com> wrote:
> Ricardo Utreras Estrella escribió:
> [...]
> > Ojo que haciendo:
> > cp -r /carpetaorigen/* /carpetadestino
> > Te dejas en el tintero los archivos ocultos (que empizan por "."),
> > ejemplo: /carpetaorigen/.ESTOYOCULTO
> > Mejor copia la carpeta completa asi:
> > cp -r /carpetaorigen /carpeta-donde-dejaras-carpetaorigen
> > O empaqueta la carpeta usando tar (lo recomendado).
> 
> ¿alguien sabe la razón (histórica) de por qué para copiar directorios
> cp exige el -r ?  ¿o por qué mv no lo exige?

> La cosa es bien poco evidente, así que no hay que quejarse si siempre
> aparece gente nueva preguntando por lo mismo...

Considera lo que mv(1) hacia originalmente: Cambiar el nombre, vale decir,
(re)enlazar el archivo con otro nombre o en otro directorio dentro del
mismo sistema de archivos.  Extender esta operacion a directorios es
bastante obvio. Que se puedan mover directorios a otros sistema de archivos
es relativamente nuevo (si mal no recuerdo, en BSD 4.2 (198x) no se podia
aun). Esto para precisamente compatibilizar con cp(1), que si podia copiar
archivos de un sistema de archivos a otro.

Por otro lado, cp(1) lo que hace es crear un nuevo archivo y copiar en el
lo que lee del original. Leer un directorio y escribir en otro es algo que
nunca se ha permitido (al menos lo de "escribir"), y tiene pocazo sentido
en general.

Si, se transluce la implementacion subyacente (al menos la original). Si,
los comandos de Unix son un tanto inconsistentes. Si, SUS y POSIX repararon
las tonteras mas notorias, pero igual quedan. Y BSD/GNU agregaron una serie
de flags que se hicieron comunes, y ordenaron algo el naipe. Pero igual hay
cosas no muy sanas aun. Live with it.
-- 
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