Rsync incluye el contenido de la carpeta pero excluye la carpeta principal

Rsync incluye el contenido de la carpeta pero excluye la carpeta principal

He buscado en vano en la web buscando una respuesta... Estoy intentando lograr este resultado en el destino.

Media_Files
    Web
        Print

Mis archivos fuente son

Media_Files
    Assets
        Web
            Print

¿Cómo puedo excluir, eliminar, eliminar o filtrar la Assetscarpeta pero mantenerlas Web/Printen uso rsync? Gracias

Respuesta1

Deberá hacer esto en dos pasos:

  1. Copie todo excepto Media_Files/Assets(suponiendo que haya otras cosas debajo Media_Files).
  2. Copiar Media_Files/Assets/Web.

El primer paso se puede hacer con

rsync -av --exclude=/Assets/ Media_Files/ destination

Esto copiaría (detalladamente) el Madia_Filesdirectorio de forma recursiva (incluidos los permisos y otros metadatos) en destination, haciendo destinationuna copia Media_Files(eliminaría el final /de la ruta de origen para crear en su lugar destination/Media_Files).

El Assetsdirectorio directamente debajo Media_Filesse ignoraría debido al patrón de exclusión /Assets/.

El segundo paso se puede realizar mediante

rysync -av Media_Files/Assets/Web destination

La falta de /al final de la ruta de origen significa que Webse colocará dentro destination.

Si tiene otros archivos o directorios aparte Media_Files/Assetsde Webeso que también necesita copiar, use en su lugar

rsync -av Media_Files/Assets/ destination

Esto copiaría todo Media_Files/Assets(incluido el Webdirectorio y su contenido) directamente a destination.


En su lugar, podrías seguir los dos pasos siguientes:

  1. Hacer destinationunaexactocopia de Media_Files, incluyendo Media_Files/Assets.
  2. Mueva manualmente el contenido al destination/Assetsque desea moverse destinationy eliminarlo destination/Assets.

En breve:

rsync -av Media_Files/ destination
mv -i destination/Assets/* destination
rmdir destination/Assets

Los dos últimos comandos se modificarían para mover solo el contenido que destination/Assetsdesea conservar (p. ej. destination/Assets/Web) y eliminar el resto (aquí asumo que desea mover todos los archivos y directorios visibles, y que esto deja el Assetssubdirectorio completamente vacío).

Respuesta2

Puede utilizar el siguiente comando para lograr el resultado.

rsync -azvP Archivos_medios/Assets/Archivos_medios web/

información relacionada