Como usar o cp -u em um sistema Solaris que não suporta a opção -u?

3

Eu quero copiar somente quando o arquivo SOURCE for mais recente que o arquivo de destino ou quando o arquivo de destino estiver ausente. Como você sabe, esse recurso funcionará no sistema Linux no comando a seguir.

cp -u /source/*.txt /destination/  

mas quando eu estou usando este comando no sistema solaris 10. Abaixo está minha outut:

cp: illegal option -- u
Usage: cp [-f] [-i] [-p] [-@] f1 f2
cp [-f] [-i] [-p] [-@] f1 ... fn d1
cp -r|-R [-H|-L|-P] [-f] [-i] [-p] [-@] d1 ... dn-1 dn 

Existe alguma solução?

    
por Wasila 27.01.2016 / 10:41

3 respostas

2

Você pode usar rsync -u , que fornece a mesma funcionalidade. Ele está disponível na versão atual do Solaris (11.x) e também no último Solaris 10 ( Oracle Solaris 10 1/13 ).

O código-fonte do Solaris 10 está incluído no pacote completo de código-fonte aberto para download em aqui (tenha em atenção que é um ficheiro de 1 GB).

    
por 27.01.2016 / 10:52
3

cp -u é um recurso do GNU coreutils, que é o padrão no Linux não integrado, mas não no Solaris.

No Solaris ou em qualquer outro sistema compatível com POSIX¹, você pode usar pax , que tem funcionalidade semelhante. O comando pax é o substituto do POSIX para os comandos históricos cpio e tar ; em seu modo de passagem, é semelhante a cp -R . A opção -u é semelhante à do GNU cp (ambas foram obtidas de arquivadores históricos, como tar e ar ).

cd /source
pax -rw -u *.txt /destination

(Não pax -rw -u /source/*.txt /destination , porque isso criaria /destination/source/file.txt )

¹ Tenha em atenção que muitas distribuições do Linux omitem o pax da instalação predefinida. Está sempre disponível como um pacote no entanto.

    
por 28.01.2016 / 00:42
0

Você está em um antigo Solaris antigo. De qualquer forma, como outros apontaram a opção -u é algo 'inventado' no GNU, então você teria que usar a versão GNU de cp . Isso é feito instalando GNU coreutils e explicitamente referenciando gcp em sua linha de comando. Seu exemplo se tornaria

gcp -u /source/*.txt /destination/

Como isso pode ser instalado pode ser encontrado aqui , mas se o seu SysAdm tivesse feito seu trabalho, ele teria já estive lá (isso é apenas minha opinião pessoal: -))

    
por 20.02.2016 / 11:38

Tags