En algunas ocasiones nos puede suceder que tenemos dos carpetas que se llaman iguales y queremos juntarlas en una. Entonces se nos ocurre que si copiamos la carpeta en el mismo lugar donde esta la otra (y que además se llama igual) combinará los archivos de las dos carpetas. Ahora bien... ¿que decisión toma cuando se encuentra archivos dentro de esa carpeta que se llaman igual? ¿Los sobreescribe o no?
La verdad es que todas estas preguntas se resuelven fácilmente con el MAN de cp, pero al ser tareas habituales vale la pena reparar en ellas:
Imaginemos que tenemos una web hecha en Wordpress y un archivo php contiene errores. Se lo comentamos a la empresa que se encarga del diseño web y nos manda el patch patch_web.tgz :
Descomprimos el patch
tar xzfv patch_web.tgz
y nos encontramos con una carpeta wp-content. Nosotros ya tenemos una carpeta /var/www/wp-content/ y lo que se espera que hagamos es que el archivo erroneo (con fallos) que tenemos se sustituya por el que la empresa diseñadora nos ha enviado.
Lo primero que se nos ocurre es hacer
cp -a wp-content /var/www/wp-content/
¿Esto funcionaria? No como esperamos, ya que lo que hará es copiar la carpeta wp-content dentro de /var/www/wp-content . Y lo que queremos es que copie el contenido, no la carpeta. Así pues hacemos:
cp -a wp-content/* /var/www/wp-content/
Y ahora si que copiará el contenido, sustituyendo los archivos que se llamen igual.
Si por el contrario, tenemos otro escenario en el que no siempre queremos sustituir los archivos, podemos mirar las opciones -u o -n
u, --updatecopy only when the SOURCE file is newer than the destination file or when the destination file is missing
-n, --no-clobber
do not overwrite an existing file (overrides a previous -i option)