eu tenho essa situação
$ ls -la
-rw-r--r-- 1 user user 123 Mar 5 19:32 file-a
-rwx---rwx 1 user user 987 Mar 5 19:32 file-b
Gostaria de substituir file-b
, file-a
mas gostaria de preservar todas as permissões e propriedade de arquivos file-b
.
Isso não funciona, porque usa permissões defile-a
cp file-a file-b # << edit: this works as expected! My fault!
mv file-a file-b
Isso funciona, mas só pode ser chamado a partir do shell. Imagine a situação que posso chamar apenas execve
ou função semelhante.
cat file-a > file-b
Eu sei, que posso executar algo como
sh -c "cat file-a > file-b"
mas isso apresenta dificuldades em escapar de nomes de arquivos, então não quero usar isso.
Existe algum comando comum que pode fazer isso ou devo escrever meu próprio programa auxiliar c pro esta tarefa?
rsync --inplace file-a file-b
deve fazer o que quiser.https://linux.die.net/man/1/rsync
Um comando simples para copiar um arquivo sem copiar o modo é
mas então você obtém
dd
a mensagem de status detalhada de gravada em stderr. Você pode suprimir isso executando o comando em um shell e adicionando2> /dev/null
, mas estará de volta ao quadrado 1. Se você tiver GNUdd
, poderá fazer