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 / server / Perguntas / 747769
Accepted
Diagon
Diagon
Asked: 2016-01-09 12:38:28 +0800 CST2016-01-09 12:38:28 +0800 CST 2016-01-09 12:38:28 +0800 CST

Copiando entre BtrFS's compactados lzo: de/re-compactando?

  • 772

Estou copiando um grande número de arquivos entre dois sistemas de arquivos BtrFS compactados com lzo em unidades diferentes montadas na mesma máquina. Parece que os arquivos estão sendo des/recompactados. Existe uma maneira de evitar isso?

compression
  • 2 2 respostas
  • 166 Views

2 respostas

  • Voted
  1. sysadmin1138
    2016-01-09T13:46:46+08:002016-01-09T13:46:46+08:00

    Na verdade não, e tudo se resume a syscalls. Tenha um exemplo:

    open  ("tuppence", O_RDONLY)                           = 3
    fstat (3, {st_mode=S_IFREG|0644, st_size=15, ...})     = 0
    open  ("/tmp/tuppence", O_WRONLY|O_CREAT|O_EXCL, 0644) = 4
    fstat (4, {st_mode=S_IFREG|0644, st_size=0, ...})      = 0
    read  (3, "I have cheese.\n", 32768)                   = 15
    write (4, "I have cheese.\n", 15)                      = 15
    

    (Estes são dados strace, um pouco limpos para maior clareza, feitos durante a cópia de um arquivo.)

    Para copiar um arquivo do ponto A para o ponto B, especialmente entre os pontos de montagem, o Linux chamará reado arquivo a ser copiado e, em seguida, chamará writeo novo. Você pode vê-lo no traço acima.

    1. Abra o arquivo de origem, gerando o descritor de arquivo número 3.
    2. Abra o arquivo de destino, gerando o descritor de arquivo número 4.
    3. Leia do descritor 3, o arquivo de origem.
    4. Escreva os dados lidos de 3, no descritor 4, o arquivo de destino.
    5. Feche tudo.

    A readsyscall solicita o arquivo para uso por um processo, que aciona a descompactação BTRFS. Esses dados recuperados são alimentados na writechamada, o que acionará a compactação BTRFS no destino. Esse comportamento é fundamental para o funcionamento das camadas do sistema de arquivos do Linux.

    Para contornar isso, não use cp. Você teria que usar uma ferramenta específica do btrfs que lida com a movimentação de estruturas de dados inteiramente dentro do volume btrfs. O problema é que não sei se essas ferramentas existem.

    • 3
  2. Best Answer
    Diagon
    2016-01-18T14:20:52+08:002016-01-18T14:20:52+08:00

    Como @ sysadmin1138 tão bem ilustrado, esse problema é inevitável se usar cp/ rsync/ send- receiveem sistemas de arquivos; mas há uma maneira de evitá-lo em certas circunstâncias. Se você usar um dispositivo seed, adicionar um novo dispositivo (como raid1) e, em seguida, excluir o seed, obterá um volume duplicado que é essencialmente o mesmo da origem. (Embora o UUID mude.)

    Conforme apontado na lista de desenvolvedores, "... o volume duplicado é essencialmente o mesmo que a fonte (o processo copia os blocos), o que significa que o perfil do bloco também é preservado."

    Como observação sobre meu caso de uso específico, eu poderia ter usado esse método para copiar, instalar meu servidor em um subvolume e, em seguida, apenas copiar mvos arquivos. Isso teria economizado uma quantidade substancial de trabalho.

    • 1

relate perguntas

  • O Windows tem um comando ZIP interno para a linha de comando?

Sidebar

Stats

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

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

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