Instale o conteúdo de uma pasta em outro

1

Estou tentando escrever um Makefile para instalar o conteúdo da minha pasta em outro no sistema.

Eu gostaria de manter a mesma estrutura de diretórios, assim.

localfolder
├── a
└── b
    ├── c
        └── d
            ├── e
                └── f

Eu tentei diferentes opções, mas não faz nada

$ install -d localfolder /opt/folder
(does nothing)
$ install -t localfolder /opt/folder
install: omitting directory '/opt/folder'
$ install -D localfolder /opt/folder
install: omitting directory 'localfolder'

Alguém pode me apontar na direção certa? Pesquisando o 'comando de instalação do Linux' não está trazendo nenhuma informação pertinente.

Obrigado!

    
por deepsquid 13.07.2016 / 15:38

2 respostas

0

Para quem quer uma solução, aqui vai: o comando de instalação não funciona recursivamente. Então eu escrevi um script de shell que faz o truque.

O primeiro argumento é a pasta que você deseja copiar e o segundo é o diretório de destino

#!/bin/sh

# Program to use the command install recursivly in a folder

magic_func() {
    echo "entering ${1}"
    echo "target $2"

    for file in $1; do
        if [ -f "$file" ]; then
            echo "file : $file"
            echo "installing into $2/$file"
            install -D $file $2/$file

        elif [ -d "$file" ]; then
            echo "directory : $file"
            magic_func "$file/*" "$2"

        else
            echo "not recognized : $file"

        fi
        done
}

magic_func "$1" "$2"

Ele também está disponível como uma aqui

    
por 13.07.2016 / 17:22
0
O lado

Origem da lista install é arquivos (de acordo com info ). Então, use

install source/* /destination

-d e -D opções criam diretórios perdidos no destino (com diferença), A opção -t significa que destino é o diretório.

Com a opção de diretório, copia cada arquivo de origem na pasta de destino com o nome do arquivo de origem

    
por 13.07.2016 / 17:02