Rsync inclui o conteúdo da pasta, mas exclui a pasta pai

Rsync inclui o conteúdo da pasta, mas exclui a pasta pai

Vasculhei a web sem sucesso em busca de uma resposta... Estou tentando alcançar esse resultado no destino

Media_Files
    Web
        Print

Meus arquivos fonte são

Media_Files
    Assets
        Web
            Print

Como posso excluir, excluir, remover ou filtrar a Assetspasta, mas manter as Web/Printpastas usando rsync? Obrigado

Responder1

Você precisará fazer isso em duas etapas:

  1. Copie tudo, exceto Media_Files/Assets(supondo que haja outras coisas em Media_Files).
  2. Cópia de Media_Files/Assets/Web.

O primeiro passo pode ser feito com

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

Isso copiaria (verbalmente) o Madia_Filesdiretório recursivamente (incluindo permissões e outros metadados) para destination, fazendo destinationuma cópia de Media_Files(remova o final /do caminho de origem para, em vez disso, criar destination/Media_Files).

O Assetsdiretório diretamente abaixo Media_Filesseria ignorado devido ao padrão de exclusão /Assets/.

O segundo passo pode ser feito por

rysync -av Media_Files/Assets/Web destination

A falta de /no final do caminho de origem significa que Webserá colocado dentro de destination.

Se você tiver outros arquivos ou diretórios Media_Files/Assetsalém dos Webque você também precisa copiar, use

rsync -av Media_Files/Assets/ destination

Isso copiaria tudo Media_Files/Assets(incluindo o Webdiretório e seu conteúdo) diretamente para o arquivo destination.


Em vez disso, você poderia executar as duas etapas a seguir:

  1. Fazer destinationumexatocópia de Media_Files, incluindo Media_Files/Assets.
  2. Mova manualmente o conteúdo destination/Assetsque você deseja mover destinatione exclua destination/Assets.

Resumidamente:

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

Os dois últimos comandos seriam modificados para mover apenas o conteúdo destination/Assetsque você deseja manter (por exemplo destination/Assets/Web), e para remover o resto (aqui estou assumindo que você deseja mover todos os arquivos e diretórios visíveis, e que isso deixa o Assetssubdiretório completamente vazio).

Responder2

Você pode usar o seguinte comando para obter o resultado

rsync -azvP Media_Files/Assets/Web Media_Files/

informação relacionada