Como posso usar o rsync para fazer backup de arquivos pessoais em um disco rígido externo ou unidade de rede sem problemas relacionados à permissão?

Como posso usar o rsync para fazer backup de arquivos pessoais em um disco rígido externo ou unidade de rede sem problemas relacionados à permissão?

Fundo

Qual é o método "correto" para usar o rsync para fazer backup de dados? A razão pela qual peço o método "correto" é porque minha experiência anterior no uso do rsync resultou em problemas relacionados a permissões, máscara de arquivo/pasta e carimbo de data/hora. Portanto, esta questão busca compreendercomo posso usar o rsync para fazer backup de dados sem encontrar nenhuma permissão, máscara de arquivo/pasta ou problemas relacionados ao carimbo de data/hora, principalmente quando o rsync está sendo usado em um sistema Windows.

Outra motivação para esta pergunta é garantir que eu não entre na minhaedição anterioronde não consegui acessar nenhum arquivo em minha unidade externa cujo backup foi feito com rsync via cygwin. Isso foi um pesadelo porque eu havia perdido dados no meu PC principal e estava tentando restaurá-los a partir do backup.

Abaixo estão problemas semelhantes que encontrei ao usar o rysnc:

Meu entendimento do uso do rsync é intermediário e consultei os guias listados abaixo. No entanto, minha maior confusão sobre o uso do rsync vem de permissões, mascaramento de arquivos/pastas, Posix, etc.

Requisitos/Premissas

  • Quero usar o rsync no contexto de "backup" e NÃO no contexto de "sincronização". Freqüentemente, outros usuários que fazem perguntas relacionadas ao rsync podem estar interessados ​​​​em "sincronizar" dados para garantir que tenham uma cópia funcional dos arquivos sincronizados em outro PC. No entanto, minha intenção não é "sincronizar", mas simplesmente "fazer backup", de forma que, se algo acontecer ao meu PC, eu possa obter uma última cópia de backup e restaurá-la.
  • Os arquivos originais que precisam de backup podem existir em qualquer sistema operacional (ex: Windows, Ubuntu, MacOS), mas principalmente no Windows.
  • No Windows, o rsync é usado usando o Windows Subsystem for Linux (WSL) e NÃO através do cygwin
  • O destino do backup pode ser uma unidade externa formatada como NTFS, FAT32 ou exFAT ou pode ser uma unidade de rede (ex: compartilhamento Samba).
  • Isso não é obrigatório, mas o destino pode ser conectado usando SSH

Meu método e problemas atuais

Estou usando o rsync por meio do Windows Subsystem for Linux (WSL) no Windows 10. Abaixo estão alguns exemplos de problemas que encontrei:

Exemplo 1:Não está funcionando

rsync -avhP --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup

Este método resulta na NÃO transferência de arquivos e em erros como abaixo:

rsync: chgrp "/mnt/my_usb_mount/ProjectA/src" failed: Operation not permitted (1)

e

rsync: mkstemp "/mnt/my_usb_mount/ProjectA/src/.mydata.json.6cfTCf" failed: Operation not permitted (1)

Exemplo 2:Parcialmente funcionando

rsync -avhP --no-p --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup

ou

rsync -avhP --no-p --chmod=ugo=rwX --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup

Este método de usar o rysnc resulta na transferência de arquivos, mas o carimbo de data e hora (criado, modificado, acessado) está todo definido para o horário da transferência. Se eu executar o comando rsync novamente, todos os arquivos serão detectados como modificados e serão transferidos novamente devido ao carimbo de data/hora incorreto. Além disso, recebo erros como abaixo:

rsync: chgrp "/mnt/my_usb_mount/ProjectA/src" failed: Operation not permitted (1)

Exemplo 3:Funcionando corretamente.

sudo rsync -avhP --delete /mnt/c/Users/MyUsername/ProjectA /mnt/my_usb_mount/Backup

Este método funciona perfeitamente, porém, não entendo por que tenho que usar sudo? É porque estou usando o rsync no Windows por meio do WSL? Eu teria que usar sudose estivesse fazendo backup de arquivos de um PC Linux (ex: Ubuntu)?

Embora o exemplo 3 seja uma solução funcional, ainda tenho muitas perguntas:

  • Como posso saber quando sudoé necessário?
  • Quando devo usar --no-pou--chmod=ugo=rwX
  • E se eu não tiver permissões para usar sudo?
  • Funcionará se eu estiver fazendo backup de arquivos em uma unidade de rede?
  • E se eu estiver usando SSH?
  • Ao usar o rsync do Windows por meio do WSL, algum dia terei problemas estranhos de permissão ou máscara de arquivo/pasta aoanteriormente tinha?

Responder1

NTFS e fat não se importam com a permissão do Linux, você deve fazer seu backup em uma partição ext4

ou faça um backup e compacte-o em tar.gz e então descompacte-o em um arquivo de sistema Linux e restaure-o

informação relacionada