Copiando para dois locais ao mesmo tempo

6

Eu não sou muito fluente com o bash ... o que eu gostaria de fazer é copiar o conteúdo de um DVD-R para dois discos rígidos diferentes da maneira mais rápida possível.

(soluções baseadas em interface do usuário também são bem-vindas)

Obrigado!

    
por Diego Mijelshon 17.08.2010 / 00:17

3 respostas

13

É provável que o gargalo esteja lendo a unidade de DVD, portanto, devemos garantir a leitura apenas uma vez ou a leitura duas vezes, mas em intervalos suficientemente próximos de forma que os dados ainda estarão no cache. O último parece difícil, então vamos pelo primeiro.

Precisamos ter um duplicador em algum lugar. Se restringirmos aos comandos básicos do shell, a única opção é tee . Portanto, precisamos converter a entrada (uma árvore de arquivos) em um fluxo, alimentar o fluxo em tee e converter cada fluxo de saída de volta em uma árvore de arquivos. A ferramenta para fazer isso é um arquivador. A compressão em algo que permanecerá na memória é um desperdício, então vamos usar apenas tar .

Pipes ( command0 | command1 ) nos permitem alimentar a saída de um comando em um outro comando. Precisamos alimentar a saída de tee em dois outros comandos, então outra construção bash é útil: command1 >(command2) cria um canal que é passado para command1 como seu primeiro comando, em vez de se tornar a saída padrão de command2 . (Procure a substituição do processo no manual do bash).

Aqui está o comando (não testado):

mkdir /media/disk0/copy_of_dvd /media/disk1/copy_of_dvd
cd /media/cdrom
tar cf - . | tee >(tar xf - -C /media/disk0/copy_of_dvd) | tar xf - -C /media/disk1/copy_of_dvd
    
por Gilles 17.08.2010 / 00:55
1

Uma solução baseada em shell é abrir um terminal e digitar:

cp -r /location/of/DVD /hard/drive/a &
cp -r /location/of/DVD /hard/drive/b

O comando cp é para arquivos de cópia e a opção -r copia todos os arquivos recursivamente. Você precisa digitar o diretório onde seu DVD está localizado (geralmente /media/dvd ou similar) e o segundo lugar no disco rígido onde você deseja os arquivos (por exemplo, /home/diego/mydvd ). O & envia o primeiro processo para o segundo plano e você pode imediatamente entrar e executar um segundo comando.

    
por qbi 17.08.2010 / 00:35
1

Como mencionado no comentário de Li Lo à resposta do qbi, drives ópticos (CD, DVD, etc.) são o tipo mais lento de drive, então você quer minimizar a quantidade de leitura que você faz da unidade de DVD. A solução óbvia seria copiar os dados do DVD para um local no disco rígido e copiá-lo desse local para o outro disco rígido.

cp -r /media/cdrom /location1
cp -r /location1 /location2
    
por David Z 17.08.2010 / 00:56

Tags