texto sustituir script renombrar reemplazar para especiales eliminar comando caracteres caracter archivo linux filesystems copy folder administration

linux - sustituir - ¿Cómo puedo copiar recursivamente un directorio en otro y reemplazar solo los archivos que no han cambiado?



sed reemplazar/ (3)

  1. -u sobrescribe la carpeta de archivos existente si el destino es anterior a la fuente
  2. -p conserva el permiso y las fechas
  3. -f desactiva la verbosidad
  4. -r hace que la copia sea recursiva

Así que parece que tienes todos los argumentos correctos para cp

Estoy buscando hacer una copia específica en Fedora.

Tengo dos carpetas:

  • ''webroot'': manteniendo TODOS los archivos / imágenes web, etc.

  • ''exportar'': carpeta que contiene miles de documentos PHP, CSS, JS que se exportan desde mi repositorio SVN.

El directorio de exportación contiene muchos de los mismos archivos / carpetas que la raíz, pero la raíz contiene otros adicionales que no se encuentran en la exportación.

Me gustaría fusionar todos los contenidos de exportación con mi webroot con las siguientes opciones:

  1. Sobrescribir el archivo en webroot si la versión de exportación contiene un código diferente al que está dentro de la versión de webroot (en vivo)
  2. Conserve los permisos / usuarios / grupos del archivo si se sobrescribe (la versión de exportación que reemplaza a la versión en vivo) * NOTA Me gustaría que se mantuvieran los permisos / propiedad de webroots, pero con el contenido de exportación
  3. No se solicita / detiene la copia de ningún tipo (es decir, no se detalla)
  4. Copia recursiva: obviamente me gustaría copiar todas las carpetas y subcarpetas de archivos * que se encuentran en la exportación

He investigado un poco sobre cp. ¿Esto haría el trabajo ?:

cp -pruf ./export /path/to/webroot


Podría, pero en cualquier momento que los archivos correspondientes en export y webroot tengan el mismo contenido pero diferentes tiempos de modificación, terminará realizando una operación de copia innecesaria. Probablemente obtendrías un comportamiento un poco más inteligente de rsync :

rsync -pr ./export /path/to/webroot

Además, rsync puede copiar archivos de un host a otro a través de una conexión SSH, si alguna vez tiene la necesidad de hacerlo. Además, tiene un montón de opciones que puede especificar para modificar su comportamiento: consulte la página de manual para obtener más información.

EDITAR : con respecto a su aclaración sobre lo que quiere decir al preservar los permisos: probablemente querrá dejar la opción -p .


Suena como un trabajo para cpio (y por lo tanto, probablemente, GNU tar también puede hacerlo):

cd export find . -print | cpio -pvdm /path/to/webroot

Si necesita preservar propietarios, tiene que hacerlo como root, por supuesto. La opción -p es ''modo de paso'', lo que significa copiar entre ubicaciones; -v es detallado (pero no interactivo; hay una diferencia); -d significa crear directorios según sea necesario; -m significa preservar el tiempo de modificación. De forma predeterminada, sin la opción -u , cpio no sobrescribirá los archivos en el área de destino que sean más nuevos que el del área de origen.