De acordo com este artigo , a principal diferença entre este e a função de duplicata normal (⌘D) é que a propriedade do arquivo é retida. A função duplicada normal preserva as permissões de arquivo, mas não a propriedade.
O melhor equivalente a esse comportamento no OSX é o ditto
comando. Você pode simplesmente usar sudo ditto src dst
e ele preservará tudo por padrão. Sudo é necessário se a propriedade do arquivo deve ser preservada. Se você estiver copiando um diretório e dst
já existir, saiba que ele será mesclado em vez de criar um novo diretório dst/src
. Ditto também é capaz de criar arquivos no formato cpio ou zip, explicados na manpage.
As respostas abaixo são relevantes principalmente para outros sistemas UNIX, e podem não preservar o fork de recursos ou outros atributos específicos do HFS em algumas versões do OSX.
Primeiro, devo mencionar que qualquer um desses comandos só pode preservar a propriedade quando executado como raiz (por exemplo, com sudo
ou su
dependendo do sistema. O comando sudo
existe no OSX.). Quando não são executados como root, a maioria deles preservará todos os atributos que puderem, mas o arquivo pertencerá ao seu ID de usuário.
O comando cp -a
preserva o máximo possível, incluindo permissões, propriedade (se raiz), registros de data e hora e links simbólicos. Embora o -a
seja suportado em muitos sistemas (ele também preserva hardlinks no GNU, mas não no OSX), ele não está no POSIX. O comando POSIX equivalente mais próximo é cp -pPR
- a opção padrão relevante para preservar permissões e a propriedade é p
, mas P
é necessário para copiar links simbólicos e R
para copiar diretórios.
A melhor maneira de copiar, ao mesmo tempo em que preserva hardlinks e outros atributos estendidos que o cp pode não manipular, é usar o comando pax: pax -rwpe src dstdir
. Isso não permite alterar o nome do arquivo de origem e o diretório de destino já deve existir. Ele criará uma cópia como dstdir / src, portanto, para resultados ideais, você deve executar isso a partir do diretório onde o arquivo de origem existe.
Em alguns sistemas, o pax pode não existir e, nesse caso, você pode usar o tar: tar cf - srcfiles | (cd dstdir; [sudo] tar xf -)
. O mesmo conselho sobre o nome do arquivo e os diretórios de origem e destino se aplica como para pax.