AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1551735
Accepted
pbies
pbies
Asked: 2020-05-15 07:17:00 +0800 CST2020-05-15 07:17:00 +0800 CST 2020-05-15 07:17:00 +0800 CST

Troque o conteúdo de duas unidades com a mesma capacidade

  • 772

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 ddum 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).

linux hard-drive
  • 3 3 respostas
  • 226 Views

3 respostas

  • Voted
  1. Best Answer
    bey0nd
    2020-05-15T08:08:45+08:002020-05-15T08:08:45+08:00

    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 !!

    #!/bin/bash
    
    DRIVE1="${1}"
    DRIVE2="${2}"
    BS="${3:-16M}"
    block="${4:-0}"
    TMP="$( mktemp ~/$$.XXXX )"
    
    while true; do
      dd if=$DRIVE1 of=$TMP bs=$BS skip=$block
      dd if=$DRIVE2 of=$DRIVE1 bs=$BS skip=$block seek=$block
      dd if=$TMP of=$DRIVE2 bs=$BS seek=$block || break
      block=$(( block += 1 ))
      echo $block > ~/block.info
    done
    

    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 16Mqual
    - /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, ...)

    • 2
  2. Andy
    2020-05-15T07:33:00+08:002020-05-15T07:33:00+08:00

    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 ??

    • 0
  3. Kamil Maciorowski
    2020-05-15T11:55:02+08:002020-05-15T11:55:02+08:00

    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:

    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.

    O procedimento, resumindo, apenas para que você saiba o que vamos fazer:

    1. Leia o disco A e armazene sua imagem (compactada ou esparsa, compare isso ) dentro de um sistema de arquivos no disco B.
    2. Duplique totalmente o disco B no disco A, junto com a imagem do A original.
    3. Leia a imagem de A e escreva-a em B.

    Em detalhe:

    1. Decida qual disco é qual:

      diskA=/dev/sdx    # choose disk with little data
      diskB=/dev/sdy    # choose disk with lot of data
      
    2. Monte cada sistema de arquivos do disco A e corte-o:

      fstrim -v /the/mountpoint
      

      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:

      • a leitura do disco A agora deve nos trazer muitos blocos de zeros que são altamente compressíveis ( esta resposta se aplica ao HDD, o HDD precisa que os zeros sejam explicitamente gravados; mas esta resposta afirma que você só precisa cortar o SSD para obter um resultado semelhante);
      • o disco B agora está pronto para armazenar uma imagem do disco A.
    3. Monte o sistema de arquivos escolhido do disco B.

    4. 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 pvpara mostrar o progresso):

      <"diskA" pv | gzip -c >/the/mountpointB/image.gz
      
    5. Desmonte o sistema de arquivos do disco B.

    6. 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 usa pv:

      pv "$diskB" > "$diskA"
      

      Agora você tem duas cópias do disco B, cada uma contendo a imagem do disco A.

    7. 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.

      wipefs -a "$diskB"
      partprobe
      
    8. 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.

    9. Restaure os dados do image.gzdisco B. Dessa forma, o conteúdo original do disco A é movido para o disco B:

      </the/mountpointA/image.gz gzip -dc | pv >"diskB"
      
    10. 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.

    • 0

relate perguntas

  • Existe um equivalente a cd - para cp ou mv?

  • execute o contêiner do docker como root

  • O fenômeno 'Write cliff' só acontece com discos SSD?

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • Como alterar permanentemente Ctrl + C para Ctrl + K no CentOS 7?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 Por que uma conexão de Internet gigabit/s via cabo (coaxial) não oferece velocidades simétricas como fibra? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve