Situación 1
Como copio /home/src/somedir a /dest/ de modo que el camino siempre termina como /dest/somedir, independientemente de si /dest/somedir ¿ya existe?
Quiero evitar terminar con /dest/somedir/somedir.
Situacion 2
¿Cómo copio todo dentro? /home/src/somedir a /dest/ tal que /dest/somedir no se crea y se ignora si ya existe?
¿Hay reglas sobre las barras diagonales que puedo usar? Pensé que terminar con una barra inclinada significaba siempre copiar solo el contenido, pero a menudo me sale mal.

cp -r /home/src/somedir /dest/debe abordar ambas situaciones, ya sea creando o fusionándose en la carpeta existentecp? Probablemente hay una opción correcta pararsyncque hare estoRespuestas:
cpsiempre copiará el (los) archivo (s) al inicio del comando al archivo o directorio al final del comando. La barra diagonal no hace mucho a los argumentos, a menos que el argumento sea un enlace simbólico a un directorio. Luego, al tener la barra diagonal se tratará como un directorio, mientras que al omitir la barra se copiará el enlace.Suponiendo que desea copiar de forma recursiva cualquier subdirectorio en sus ejemplos, lo haría como:
y
El primero obtiene el directorio.
/home/src/somediry copiará ese argumento, el directorio mismo y todos sus contenidos, al último argumento,/dest. Creará elsomedirdirectorio en/destSi es necesario y úsalo si ya existe.El segundo añade
*hasta el final del primer argumento, que el shell expandirá para ser cada archivo que no comience con.en/home/src/somediry copiará todos esos archivos y directorios a/destsin tener en cuenta lo que ya está allí (excepto algunas banderas paracple indicará que sobrescriba los archivos que tendrán lo mismo en el destino que un archivo existente).Como los comentarios a esta respuesta han señalado, hay problemas al usar
*para agarrar todos los archivos en el directorio. Una alternativa sería utilizartarhacer la copia por tiesto creará un archivo tar de
somedirsin el camino principal mediante el uso de-Cpara cambiar a ese directorio primero. Por defectotarimprimirá astdoutque luego se canalizará a otrotarPara extraerlo cambiando a la deseada./destdirectorio primero Esto también preservará muchos atributos de archivo, quecppuede hacer lo mismofuente
*la expansión de comodines fallará si hay demasiadas coincidencias. No sé el número exacto, pero la última vez que falló, el directorio contenía alrededor de 100000 archivos / directorios.*cppero debe cumplir la tareacp -rv /home/src/somedir /destEstamos copiando «somedir» a «/ dest», por lo que terminamos con «/ dest / somedir»
cp -rv /home/src/somedir/* /destEstamos copiando «todos los archivos en somedir» (
somedir/*) a «/ dest»Advertencia: somedir / * no incluye archivos ocultos (aquellos que comienzan con un punto).
Las barras finales no afectan el proceso. Puedes estar confundido
cpconrsync, donde una barra al final significa "copiar el contenido, no la carpeta".fuente