Eu tenho um diretório chamado my_projects_linux
dentro do sistema de arquivos Ubuntu, que contém todo o meu trabalho de muitos anos. O diretório contém arquivos, subdiretórios e assim por diante.
Para fins de backup, ocasionalmente copio este diretório e todo o seu conteúdo para um disco rígido externo.
Portanto, o conteúdo da minha unidade externa é semelhante a:
/mounted_drive/my_projects_linux
/mounted_drive/my_projects_windows # the same idea to backup Windows work
Portanto, o que estou procurando é um comando que:
Funcionaria como
cp /home/my_projects_linux /mounted_drive/my_projects_linux
Deve substituir arquivos antigos, subdiretórios, arquivos dentro de subdiretórios, etc. no disco externo pelo novo conteúdo do meu PC.
Seja rápido. Ele deve copiar apenas arquivos modificados ou recém-criados. Dado que o tamanho
my_projects_linux
é superior a 50 GB, copiar tudo demora mais de uma hora, o que é muito lento. Na realidade, muitas vezes apenas alguns MB foram alterados desde o último backup, portanto, teoricamente, uma cópia pode ser feita muito mais rapidamente.
Como fazer isso?
Pesquisei no Google que cp com a -u
bandeira poderia atender às minhas necessidades. Isso funcionaria (por exemplo, lidaria corretamente com subdiretórios de subdiretórios)?
Além disso, armazenar o sistema de arquivos em um disco externo é uma maneira apropriada de fazer um backup ou existe uma maneira mais sofisticada? Por exemplo, usando uma nuvem? Observe que a maneira mais sofisticada deve ser simples, caso contrário não superará a facilidade de execução de um comando shell.
Responder1
Você está descrevendo rsync
para que foi projetado. De man rsync
:
Rsync finds files that need to be transferred using a "quick
check" algorithm (by default) that looks for files that have
changed in size or in last-modified time. Any changes in the
other preserved attributes (as requested by options) are made on
the destination file directly when the quick check indicates
that the file’s data does not need to be updated.
Também se fala muito sobre networking, mas também é bom fazer algo local.
Essencialmente, tudo que você precisa é:
rsync -rtv /home/my_projects_linux /mounted_drive/my_projects_linux
Existem inúmeras opções disponíveis, mas -rtv
serão sincronizadasRecursivamente, mantendo otimecodes iguais, embora sejaverbose sobre o que está fazendo.
Responder2
Para responder à sua segunda pergunta, uma maneira mais sofisticada de fazer backup é rdiff-backup
.
rdiff-backup faz backup de um diretório para outro, possivelmente através de uma rede. O diretório de destino acaba sendo uma cópia do diretório de origem, mas diferenças reversas extras são armazenadas em um subdiretório especial desse diretório de destino, para que você ainda possa recuperar arquivos perdidos há algum tempo. A ideia é combinar os melhores recursos de um espelho e um backup incremental. rdiff-backup também preserva subdiretórios, links físicos, arquivos dev, permissões, propriedade uid/gid, tempos de modificação, atributos estendidos, ACLs e bifurcações de recursos.
E se você realmente deseja se basear na nuvem: eu uso o CrashPlan com uma assinatura paga. Então vocênuncapreciso pensar mais em backups manuais.
Responder3
Eu sei que esta pergunta já tem uma resposta aceita. No entanto, eu queria adicionar uma solução GUI multiplataforma, pois vejo que você também usa o Windows. Eu uso para os mesmos finsSincronização de arquivos grátis. Também é FLOSS.
A configuração é absolutamente intuitiva e você pode salvar diferentes trabalhos de sincronização.
Há também um ppa, embora não inclua a versão mais recente 14.04 no momento. Para instalar via ppa:
sudo apt-add-repository ppa:freefilesync/ffs
sudo apt-get update