Como copiar eficientemente apenas arquivos modificados de um disco para um usb externo?

6

Eu tenho um diretório chamado my_projects_linux dentro do sistema de arquivos do 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, eu ocasionalmente copio este diretório e todo o seu conteúdo para um disco rígido externo.

Assim, o conteúdo do meu disco externo se parece com:

/mounted_drive/my_projects_linux
/mounted_drive/my_projects_windows  # the same idea to backup Windows work

Por isso, o que estou procurando é um comando que:

  1. Funcionaria como

    cp /home/my_projects_linux /mounted_drive/my_projects_linux
    

    Ele deve substituir arquivos antigos, subdiretórios, arquivos dentro de subdiretórios, etc. no disco externo pelo novo conteúdo do meu PC.

  2. Seja rápido . Ele deve copiar apenas arquivos modificados ou aqueles que foram criados recentemente. Como o tamanho de my_projects_linux é > 50 GB, copiar tudo leva mais de uma hora, o que é muito lento. Na realidade, muitas vezes apenas alguns MB mudaram desde o último backup, então, teoricamente, uma cópia pode ser feita muito mais rapidamente.

Como fazer isso?

Eu pesquisei que o cp com o -u flag poderia corresponder às minhas necessidades. Isso funcionaria (por exemplo, trataria corretamente subdiretórios de subdiretórios)?

Além disso, está armazenando o sistema de arquivos em um disco externo uma maneira apropriada de fazer um backup, ou existe uma maneira mais extravagante? Por exemplo, usando uma nuvem? Note que a maneira mais extravagante deve ser simples, caso contrário, ela não superará a facilidade de executar um comando shell.

    
por mercury0114 31.03.2016 / 14:04

3 respostas

13

Você está descrevendo para que rsync 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.

Há também muita discussão sobre networking, mas também é um prazer fazer o local.
Essencialmente tudo que você precisa é:

rsync -rtv /home/my_projects_linux /mounted_drive/my_projects_linux

Há uma tonelada de opções disponíveis, mas -rtv sincronizará r ecursivamente, mantendo o t imecode o mesmo, sendo v erbose sobre o que está fazendo.

    
por Oli 31.03.2016 / 14:09
1

Eu sei que esta pergunta já tem uma resposta aceita. No entanto, eu queria adicionar uma solução de interface gráfica de várias plataformas, já que vejo você também usar o Windows. Eu uso para os mesmos fins Freefilesync . Também é FLOSS.

A configuração é absolutamente intuitiva e você pode salvar diferentes tarefas de sincronização.

Há também um ppa, embora não inclua a versão mais recente do 14.04 no momento. Para instalar via ppa:

sudo apt-add-repository ppa:freefilesync/ffs
sudo apt-get update
    
por Bruni 31.03.2016 / 15:51
0

Para responder à sua segunda pergunta, uma forma mais sofisticada de fazer backup é rdiff-backup .

% bl0ck_qu0te%

E se você realmente quiser se basear na nuvem: eu uso o CrashPlan com uma assinatura paga. Então você nunca precisa pensar em backups manuais mais.

    
por Amedee Van Gasse 31.03.2016 / 14:19