Acho que a introdução à página info
responde a todas as suas perguntas:
It first uses some of the same code that's used by 'cp -a' to copy the requested directories and files, then (assuming the copy succeeded) it removes the originals. If the copy fails, then the part that was copied to the destination partition is removed. If you were to copy three directories from one partition to another and the copy of the first directory succeeded, but the second didn't, the first would be left on the destination partition and the second and third would be left on the original partition.
A recuperação não deve ser um problema, pois os dados são preservados. Eu não sei o quanto ele tenta ser atômica ( mkdir
, por exemplo, é necessário inspeção de origem) ou se estiver em seu domínio (vs. o kernel), mas pode haver corrupção se a interrupção ocorrer quando já estiver excluindo a origem. Nesse ponto, você já teria uma boa cópia no diretório de destino, portanto, uma simples verificação de tamanho de byte poderia resolver o problema.
EDIT: Eu fiz alguns testes com arquivos enormes (alguns G) criados com dd
, mas sem resultados conclusivos. Nunca consegui obter apenas algumas das fontes copiadas - eu cancelei toda a operação (sendo muito rápido) ou depois não obtive qualquer chance devido ao cache de disco e talvez um bom design do sistema de arquivos (o meu ^ C sempre aterrava após o movimento ter sido bem-sucedido ).