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:
- Não é possível acessar nenhum arquivo na unidade externa cujo backup foi feito usando rsyncO backup baseado em Rsync e Cygwin no Windows fornece erros de permissão negada
- Não foi possível preservar o carimbo de data/horahttps://unix.stackexchange.com/questions/61586/how-to-tell-rsync-to-preserve-time-stamp-on-files-when-source-tree-has-a-mounted
- rsync - problema de falha no mkstemphttps://stackoverflow.com/questions/11039559/rsync-mkstemp-failed-permission-denied-13
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 sudo
se 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-p
ou--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