cp -a / caminho / de / * / caminho / para irá copiar o conteúdo de / path / from, não o diretório se você tem outros arquivos / dirs em / path / from, e só quer Copie um, você vai ter que chegar a um padrão para combinar isso.
Eu preciso fazer uma cópia do conteúdo de um diretório para outro.
Eu preciso copiar apenas 1 subpasta.
Por exemplo; se eu tiver uma pasta chamada " de " e quiser copiar uma de suas subpastas (com todas as coisas dentro dela) que se chama " 21-01-2015 " < - este nome muda todos os dias e eu quero executar isso via cronjob, na pasta " para "
+ from
- 21-01-2015 (**this name changes all the time**)
- month (**this stays always the same**)
Atualmente, estou usando este comando: cp -a /path/from /path/to
, mas este comando faz uma cópia da pasta " de " junto com todas as coisas dentro dela ...
Então, quando você está dentro da pasta " para ", torna-se algo assim:
+ to
+ from
- 21-01-2015
- month
em vez de como eu preciso, que é
+ to
- 21-01-2015
como posso conseguir algo assim?
obrigado
cp -a / caminho / de / * / caminho / para irá copiar o conteúdo de / path / from, não o diretório se você tem outros arquivos / dirs em / path / from, e só quer Copie um, você vai ter que chegar a um padrão para combinar isso.
Você pode tentar este comando:
cp -a from/$(ls from | grep ^[0-9][0-9]) to/
o problema com o comando cp -a / path / from / path / to é que ele fará uma cópia recursiva, o que significa que copiará o diretório de origem (no seu caso "/ path / from") e tudo abaixo dele .
o que você quer é um comando para copiar recursivamente o diretório "21-01-2015" dentro de "from". O comando que você deve usar é:
cp -a /path/from/21-01-2015 /path/to
Observe que você mencionou que o diretório "from" altera nomes. Você não mencionou se o diretório do trabalho anterior permanece ou não. Se o / path / from contiver vários subdiretórios e você usar um caractere curinga em seu comando, você copiará todos os diretórios que você já copiou (isso pode ou não ser o que você deseja). Se você não se importar com a cópia de subdiretórios já copiados em um trabalho cron anterior, poderá usar o seguinte comando para copiar qualquer arquivo ou pasta que comece com um número (isso obviamente NÃO copiará "mês")
cp -a /path/from/[0-9]* /path/to
Se você não quiser copiar cada subdiretório de "from" toda vez que o cronjob for executado (ou seja, você quiser apenas copiar os arquivos que foram adicionados desde o último cronjob), seria melhor usar o rsync. O comando rsync que você usaria seria algo semelhante a:
rsync -avz --exclude 'month' /path/from/ /path/to/
mas, por favor, verifique a página de manual para as opções corretas para fazer exatamente o que você quer (por exemplo, você possivelmente não quer verboso na produção).