Estou tentando sincronizar literalmente milhares de arquivos de vários tamanhos e gostaria de ter uma cópia 1:1 dos arquivos. Isso significa que a integridade dos arquivos já presentes deve ser verificada e, se houver uma soma de verificação errada, o arquivo precisará ser sobrescrito. A chamada transferência delta só é necessária neste momento devido à falha parcial da transferência.
Aparentemente minha montagem é meio instável e falha após 300-400GB de transferência usando cp
ou rsync
.
Eu fiz o seguinte antes disso:
- Montei o armazenamento e fiz isso
cp -r src dest
, ele falhou depois de 300 GB porque a montagem caiu e ocorreu um erro (aparentemente não tenho mais o erro) - Montei o armazenamento novamente e fiz isso
rsync -aP src dest
, ele falhou depois de 400 GBrsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1338) [sender=3.2.7]
porque a montagem falhou novamente. Considerando o tamanho do arquivo, ele provavelmente substituirá a maioria dos arquivos. - Eu verifiquei meu log do kernel e não encontrei nada (
sudo dmesg
)
Encontrei um sinalizador de reconexão para minha montaria, mas não seria instantâneo.
- Há um sinalizador rsync chamado
-c
que calcula as somas de verificação, mas ele também faz a chamada transferência delta ou preciso adicionar mais sinalizadores?
Qual a melhor forma de resolver esse problema em questão?
ATUALIZAÇÃO 1
Corrija-me se estiver errado, mas acho que o problema em questão era que o armazenamento tinha proprietários e grupos de usuários e grupos diferentes dos do rsync. Para elaborar: cp -r
copiou os arquivos e alterou sua propriedade e propriedade do grupo para a cópia do usuário, enquanto o rsync parece copiar o arquivo 1:1 com o mesmo usuário e propriedade do grupo... Provavelmente é por isso que a transferência estava sobrescrevendo arquivos antigos...
Parece que você está copiando entre dois sistemas de arquivos locais. Nesse caso,
rsync
não usará seu esquema de soma de verificação e voltará a sercp
.Ambos
cp
ersync
preservarão o proprietário/grupo se forem executados como root. Caso contrário, os arquivos de destino levarão o proprietário e o grupo (padrão) da conta que está realizando a cópia.Desde que você tenha copiado os carimbos de data e hora com o original,
cp
bastarsync
verificar o tamanho e o carimbo de data e hora do arquivo e usá-los para decidir se deseja atualizar os metadados ausentes ou copiar novamente o arquivo em sua totalidade:Certos sistemas de arquivos podem não conseguir preservar metadados. Ou você pode não estar executando como root. Nessas situações você pode tentar salvar os metadados junto com cada arquivo em seus atributos estendidos. Você adicionaria
-X
para isso: