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 / 1045709
Accepted
Tilman Schmidt
Tilman Schmidt
Asked: 2020-12-11 06:24:13 +0800 CST2020-12-11 06:24:13 +0800 CST 2020-12-11 06:24:13 +0800 CST

O rsync preserva hardlinks no destino quando os arquivos de origem são idênticos, mas separados?

  • 772

Estou executando um servidor rsync (baseado em Linux) para distribuição de software. Um servidor de repositório de origem (baseado em Windows) que está fora do meu controle envia pacotes de software para ele via rsync, e cerca de cem servidores satélites em todo o mundo extraem dele, também via rsync.

O repositório de origem contém muitos arquivos duplicados grandes. Quero reduzir o espaço em disco e o consumo de largura de banda nos servidores satélites, substituindo essas duplicatas por hardlinks. O administrador do repositório de origem não quer ou não pode fazê-lo na origem, então estou tentando fazer isso após o fato no servidor de distribuição. Eu criei um script bash simples baseado nofdupescomando que encontra grupos de duplicatas e os substitui por hardlinks para um único arquivo. As transferências rsync para os servidores satélites preservam esses hardlinks conforme desejado graças à opção -H. A transferência do repositório de origem, no entanto, produz resultados inconsistentes. Às vezes, a desduplicação é preservada. Às vezes, o servidor de origem retransmite todos os arquivos de um grupo desduplicado e a desduplicação é interrompida, mesmo que os arquivos de origem não tenham sido alterados.

Daí a minha pergunta: Qual é o comportamento oficial do rsync caso seja solicitado a sincronizar dois arquivos idênticos, mas separados e os arquivos já existirem no destino com o conteúdo correto, mas como hardlinks para o mesmo arquivo? Qual é o critério exato para retransmitir um arquivo? Existe uma maneira de garantir que o hardlink no destino seja preservado nessa situação, mesmo que o hardlink não exista na origem?

rsync hardlink
  • 2 2 respostas
  • 634 Views

2 respostas

  • Voted
  1. Best Answer
    Tilman Schmidt
    2020-12-30T12:43:59+08:002020-12-30T12:43:59+08:00

    tl;dr: Para preservar a desduplicação em nível de arquivo por meio de links físicos no destino, execute rsynccom a --checksumopção.

    Resposta completa, de acordo com uma série de experimentos que fiz:

    Se dois arquivos não estiverem vinculados na origem, rsyncsincronizará cada um deles individualmente com o destino. Não importa se os arquivos estão com hardlink no destino. Se um dos arquivos (ou ambos) for retransmitido, o link físico no destino será quebrado, caso contrário, ele permanecerá intacto. Ou seja, mesmo com a --hard-linksopção, rsyncnão vai quebrar um hardlink no destino só porque os arquivos não estão hardlinked na origem.

    Os critérios para retransmissão de um arquivo dependem das opções --checksum( -c) e --ignore-times( -I).

    • Se a opção --checksumfor fornecida, apenas os arquivos que diferem em tamanho ou soma de verificação entre origem e destino são retransmitidos. Conseqüentemente, se o conteúdo do arquivo não for alterado, um link físico no destino será preservado, mesmo que não exista na origem.
    • Se a opção --ignore-timesfor fornecida, todos os arquivos serão retransmitidos, quebrando qualquer link físico no destino que não exista na origem.
    • Se nenhuma dessas duas opções for fornecida, rsyncusará os carimbos de data e hora de modificação dos arquivos de origem e destino para sua decisão. Nesse caso, se os carimbos de data/hora dos dois arquivos de origem forem diferentes, um link físico no destino sempre será quebrado porque apenas um dos dois carimbos de data/hora pode corresponder.
    • 2
  2. mpez0
    2020-12-11T09:47:54+08:002020-12-11T09:47:54+08:00

    Ele preserva os links físicos de origem se você usar a opção -H ou --hard-links

    Isso não criará links físicos - você terá que fazer isso após o fato procurando arquivos com a mesma soma de verificação, excluindo um e adicionando um link físico para substituí-lo. Afinal, você não gostaria que o rsync transformasse cada arquivo duplicado de conteúdo em um link físico para o mesmo arquivo. Imagine se cada arquivo de tamanho 0 fosse um link físico -- você adiciona conteúdo a um, você altera o conteúdo para todos.

    • 1

relate perguntas

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