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 / unix / Perguntas / 763628
Accepted
eftshift0
eftshift0
Asked: 2023-12-12 18:03:12 +0800 CST2023-12-12 18:03:12 +0800 CST 2023-12-12 18:03:12 +0800 CST

rsync - ele executa leitura/leitura/comparação antes de tentar escrever (localmente)?

  • 772

Meu entendimento rsync(e pode estar completamente errado) é que primeiro tentaria ler os arquivos (origem e destino, se existir) para compará-los antes de tentar escrever algo no destino (o que eu esperaria ser mais lento do que ler ). Estou executando o rsync para sincronizar um backup da minha casa e, em vez de ver muitas leituras nos discos de origem e destino (logo após executar uma execução anterior do rsync), estou vendo muitas gravações no disco de destino , o que é algo Eu não estava esperando. O rsync sempre funciona assim?

Do jeito que estou usando, só para garantir:

rsync --delete -r /home/my-home /mount-point-other-disk/
rsync
  • 1 1 respostas
  • 30 Views

1 respostas

  • Voted
  1. Best Answer
    Chris Davies
    2023-12-12T20:43:20+08:002023-12-12T20:43:20+08:00

    Você está copiando do que rsyncé considerado um disco local para um disco local. Isso desativa muitas de suas otimizações e as reduz quase a um simples arquivo cp.

    Além disso, ao não incluir o sinalizador --times( -t), você desativou a otimização restante, o que significa que ele se torna exatamente igual a cp.

    Meu entendimento do rsync (e pode estar completamente errado) é que ele primeiro tentaria ler os arquivos (origem e destino, se existir) para compará-los antes de tentar escrever algo no destino (que eu esperaria ser mais lento que leitura).

    Isso só é verdade quando você usa rsyncpara copiar em uma rede entre dois sistemas.

    Estou vendo muitas gravações no disco de destino

    Isso ocorre porque rsyncnão pode assumir nada sobre os arquivos de destino e, portanto, sobrescreve todos eles em cada tentativa de backup.

    Explicação:

    Na situação ideal, rsyncpode executar-se como cliente e também iniciar um processo servidor no sistema remoto. Supondo que o arquivo de destino pareça já estar presente no destino, cada um desses dois processos lê sua cópia local e identifica, por meio de blocos de somas de verificação, quais partes dos arquivos diferem. Essas diferenças são então transferidas pela rede e o arquivo de destino é atualizado. (É uma soma de verificação deslizante, então você pode inserir até mesmo um único byte no início do arquivo e esse é o único bloco que será transferido.)

    Porém, em uma situação em que rsynco gerenciamento de leituras e gravações é realizado em um único sistema, ele assume que a leitura e a gravação levarão o mesmo tempo. (Isso não é necessariamente verdade para a memória flash, mas tenha paciência.) Conseqüentemente, o tempo necessário para ler o arquivo de origem e de destino apenas para compará-los - antes de qualquer gravação para atualizar o destino ser considerada - é amplamente equivalente ao tempo necessário. seria necessário apenas reescrever o arquivo de destino, e é isso que acontece.

    Soluções possíveis:

    1. Se você estiver gravando em um NAS, não grave em um sistema de arquivos NAS que tenha sido montado localmente. Em vez disso, use o rsyncprotocolo para gravar diretamente na rede no NAS ou algo como sshfazer login no NAS remotamente e transportar os dados por meio dessa conexão. Nesse caso, você gostaria de uma linha de comando mais ou menos assim:

      rsync -a --delete -M--fake-super /home/my-home remoteNAS:/path/to/mount-point-other-disk/
      
    2. Se você realmente estiver lendo/gravando entre dois discos conectados localmente, inclua a opção --times( -t) e permita rsyncignorar arquivos que parecem já ter sido copiados:

      rsync -a --delete /home/my-home /mount-point-other-disk/
      rsync -rt --delete /home/my-home /mount-point-other-disk/
      

      O primeiro deles copia todos os metadados, portanto não é adequado para gravação em um sistema de arquivos nativo não Linux, como NTFS ou FAT. O segundo copia os arquivos, mas mantém apenas a hora da última modificação (sem permissões ou propriedades). Se você estiver gravando em um sistema de arquivos FAT, observe que ele só pode capturar carimbos de data e hora com precisão de dois segundos, portanto, você precisa avisar rsyncpara não esperar muito:

      rsync -rt --modify-window 1 --delete /home/my-home /mount-point-other-disk/
      
    • 1

relate perguntas

  • rsync - movendo todos os arquivos JPG/jpg de um disco rígido para um único diretório com um script de shell

  • diretório tar para enviar apenas blocos modificados de arquivos

  • Como faço uma duplicata de uma árvore de diretórios com links simbólicos duplicados relativamente?

  • Problemas de exclusão de Rsync

  • rsync porta 22 e 873 uso

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk 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