Eu tenho duas unidades com a mesma capacidade (igual a 1 byte). Preciso trocar o conteúdo deles (um é QVO, outro é EVO, mas a seleção do aplicativo foi incorreta).
É possível fazer isso por pipes ou FIFO no Linux?
Estou pensando em eventualmente armazenar 100/500 MB de cada unidade em um momento (na unidade Linux ou na memória) e reescrevê-lo, mas para o outro disco, repetindo o processo.
Eu conheço dd
um terceiro disco, mas preciso operar apenas nesses dois. Ambos os discos são SSD de 1 TB, onde um está 70% cheio e o outro possui sistema Linux básico com no máximo 20 GB de dados.
Concordo que existe uma terceira mídia com sistema operacional (neste caso, Linux), mas este disco tem espaço livre limitado, digamos que podemos usar até ~ 1 GB para que não possamos criar uma imagem de disco completa (mesmo compactada).
Uma solução seria um script bash.
Esteja ciente de que usar uma terceira unidade é a maneira preferida e usar um script é uma espécie de missão suicida !!
Portanto, apenas use esta abordagem se você não tiver (ou não puder acessar) uma terceira unidade e estiver desesperado !! Voce foi avisado !!
Copie o código acima para um arquivo e torne-o executável (chmod +x filename ). Então você pode chamar o script com o
sudo ./filename /dev/sdX /dev/sdY 16M
qual- /dev/sdX deve ser a primeira unidade (por exemplo, /dev/sda e não /dev/sda1 !!)
- /dev/sdY deve ser a segunda unidade
- 16M é o tamanho de bloco escolhido ( 16M significa 16 MB, também pode ser 32M, 64M, 128M, 256M, ...)
O que fiz no passado foi fazer o clone exato de cada disco para liberar armazenamento em um disco separado e, em seguida, cloná-los de volta nos discos pretendidos, além de os clones ajudarem a evitar a perda de dados quando as coisas dão errado. No Windows, eu uso "clone de disco grátis" que permite fazer clone de partição mesmo se a partição de destino for menor, também permite copiar IDs de disco de hardware ou não, bom se os discos não forem do mesmo tamanho.
Para linux Tente o comando "dd", mas tenha cuidado, pode dar errado se você errar ... algumas dicas sobre dd no link abaixo https://opensource.com/article/18/7/how-use -dd-linux
Pretendia ser mais um comentário nesta parte... um pouco longo embora
pbies , não tenho certeza sobre o particionamento no disco aqui, digamos que você tenha uma única parte no disco A com 700 GB de dados, o Disco B também uma única parte com 20 GB de dados, crie uma nova partição no disco B com o espaço livre disponível, clone o disco A para a nova partição no disco B, agora você tem ambas as cópias intactas no disco B. Agora prepare o disco A para receber o clone do disco B como primário e o clone original do disco A como parte secundária, agora isso deixa o Disco B livre para preparar suas partições para receber o clone do disco A como primário, provavelmente melhor inicializar o CD linux ao vivo para fazer tudo isso. .. espero que um desses caras espertos possa dar mais informações sobre exatamente como isso é feito no Linux e o que funciona melhor para os procedimentos de clonagem e particionamento (ddrecue etc) Faz sentido para mim, não tenho certeza se os outros concordam ??
Esta resposta não se destina a ajudar em um caso geral de "troca de conteúdo de duas unidades de capacidade idêntica". É adaptado para o problema específico:
O procedimento, resumindo, apenas para que você saiba o que vamos fazer:
Em detalhe:
Decida qual disco é qual:
Monte cada sistema de arquivos do disco A e corte-o:
Em seguida, desmonte. Você pode fazer isso com um sistema de arquivos por vez. Faça isso também para pelo menos um sistema de arquivos no disco B, aquele no qual você planeja gravar uma imagem.
Mais sobre aparar aqui , aqui e aqui . O ponto disso é duplo:
Monte o sistema de arquivos escolhido do disco B.
Certifique-se de que nenhum sistema de arquivos do disco A esteja montado. Leia todo o disco A e armazene sua imagem compactada ou esparsa no sistema de arquivos do disco B. Este exemplo usa compactação (e
pv
para mostrar o progresso):Desmonte o sistema de arquivos do disco B.
Certifique-se de que nenhum sistema de arquivos do disco B esteja montado. Clone o disco B no disco A. Você pode fazer isso com
dd
,cat
,cp
,ddrescue
, existem muitas ferramentas. Este exemplo usapv
:Agora você tem duas cópias do disco B, cada uma contendo a imagem do disco A.
Remova a tabela de partição ou a assinatura do sistema de arquivos do disco B. Isso é muito importante se o disco B usar BTRFS (então agora também A o usa). O problema potencial é que, se você tentar montar um sistema de arquivos BTRFS e ele for encontrado em duas cópias (mesmos UUIDs), ele será considerado um sistema de arquivos multidispositivo; montá-lo pode causar perda de dados. Na próxima etapa, montaremos um sistema de arquivos do disco A (uma cópia do B), portanto, tome cuidado.
Monte a cópia do sistema de arquivos que você usou para armazenar a imagem do disco A. Lembre-se de que a cópia agora está no disco A.
Restaure os dados do
image.gz
disco B. Dessa forma, o conteúdo original do disco A é movido para o disco B:Monte cada sistema de arquivos de cada disco e corte-o. Você pode fazer isso com um sistema de arquivos por vez.
Observe que, se qualquer etapa falhar, você ainda poderá se recuperar com relativa facilidade. Isso ocorre porque cada vez que você realmente sobrescreve os dados, o outro disco contém uma cópia válida.