fbpx

Comandos Linux – rsync

Comando rsync do Linux

comando rsync

Em sistemas operacionais do tipo Unix, o comando rsync sincroniza arquivos de uma origem para um destino, em uma máquina local ou por uma conexão de rede segura. É um substituto rápido, flexível e seguro para o comando rcp .

Descrição

O rsync é uma ferramenta rápida e extraordinariamente versátil para copiar arquivos. Ele pode copiar localmente para / de outro host em qualquer shell remoto ou para / de um daemon rsync remoto. Ele oferece um grande número de opções que controlam todos os aspectos de seu comportamento e permitem que especificações muito flexíveis do conjunto de arquivos sejam copiadas. É famoso por seu algoritmo de transferência delta, que reduz a quantidade de dados enviados pela rede, enviando apenas as diferenças entre os arquivos de origem e os arquivos existentes no destino. O rsync é amplamente usado para backups e espelhamento e como um comando de cópia aprimorado para o uso diário.

O rsync localiza arquivos que precisam ser transferidos usando um algoritmo de “verificação rápida” (por padrão) que procura por arquivos que foram alterados em tamanho ou no horário da última modificação. Quaisquer alterações nos outros atributos preservados (conforme solicitado pelas opções) são feitas diretamente no arquivo de destino quando a verificação rápida indica que os dados do arquivo não precisam ser atualizados.

Alguns dos recursos adicionais do rsync são:

  • Suporte para copiar links , dispositivos , proprietários , grupos e permissões
  • Opções de exclusão e exclusão de semelhantes ao tar GNU
  • Um modo de exclusão do CVS para ignorar os mesmos arquivos que o CVS ignoraria
  • Pode usar qualquer shell remoto transparente, incluindo ssh ou rsh
  • Não requer privilégios de superusuário
  • Pipelining de transferências de arquivos para minimizar os custos de latência
  • Suporte para daemons rsync anônimos ou autenticados (ideal para espelhamento)

Sintaxe

Uso local:

  rsync [ OPÇÃO ...] SRC ... [ DEST ]

Acesso via shell remoto ( PULL ):

  rsync [ OPÇÃO ...] [ USUÁRIO @] HOST : SRC ... [ DEST ]

Acesso via shell remoto ( PUSH ):

  rsync [ OPÇÃO ...] SRC ... [ USER @] HOST : DEST

Acesso via daemon rsync ( PULL ):

  rsync [ OPÇÃO ...] [ USUÁRIO @] HOST :: SRC ... [ DEST ]
  rsync [ OPÇÃO ...] rsync: // [ USER @] HOST [: PORT ] / SRC ... [ DEST ]

Acesso via daemon rsync ( PUSH ):

  rsync [ OPÇÃO ...] SRC ... [ USER @] HOST :: DEST
  rsync [ OPÇÃO ...] SRC ... rsync: // [ USER @] HOST [: PORT ] / DEST

Usos com apenas um argumento SRC e nenhum argumento DEST listarão os arquivos de origem em vez de copiar.

Resumo das Opções

-v , –verboseaumentar a verbosidade
-q , –quietsuprimir mensagens sem erro
–no-motdsuprimir MOTD no modo daemon (veja advertência)
-c , –checksumpular com base na soma de verificação , não no tempo e tamanho da modificação
-a , –archivemodo de arquivo; é igual a -rlptgoD (sem -H , -A , -X )
–nenhuma opçãodesativar uma OPÇÃO implícita (por exemplo, –no-D )
-r , –recursiverecursão em diretórios
-R , – relativouse nomes de caminhos relativos
–sem-implícitos-dirsnão envie dirs implícitos com –relative
-b , –backupfaça backups (consulte –suffix & –backup-dir )
–backup-dir = DIRfaça backups em hierarquia baseada em DIR
–suffix = SUFFIXsufixo de backup (padrão ~ sem o –backup-dir )
-u , –updatepular arquivos mais recentes no receptor
–no lugaratualizar arquivos de destino no local
–acrescentaranexar dados em arquivos mais curtos
–append-verifique– anexar com dados antigos na soma de verificação do arquivo
-d , –dirstransferir diretórios sem repetir
-l , –linkscopiar links simbólicos como links simbólicos
-L , –copy-linkstransformar link simbólico em arquivo / diretório referente
–copy-inseguro-linksapenas links simbólicos “inseguros” são transformados
–safe-linksignore links simbólicos que apontam para fora da árvore
-k , –copy-dirlinkstransformar o link simbólico em dir em dir referente
-K , –keep-dirlinkstratar o diretório vinculado no receptor como dir
-H , –hard-linkspreservar links físicos
-p , –permspreservar permissões
-E , – executabilidadepreservar a executabilidade
–chmod = CHMODafetar as permissões de arquivo e / ou diretório
-A , –aclspreservar ACLs (implica -p )
-X , –xattrspreservar atributos estendidos
-o , –ownerpreservar proprietário (somente superusuário )
-g , –grouppreservar grupo
–dispositivospreservar arquivos do dispositivo (somente superusuário)
–especialidadespreservar arquivos especiais
-Do mesmo que –dispositivos – especiais
-t , –timespreservar os tempos de modificação
-O , –omit-dir-timesomitir diretórios de –times
–superreceptor tenta atividades de superusuário
–fake-superarmazenar / recuperar atributos privilegiados usando xattrs
-S, –paralidar com arquivos esparsos com eficiência
-n , –dry-runexecutar uma avaliação sem alterações feitas
-W , –whole-filecopiar arquivos inteiros (sem o algoritmo delta-xfer)
-x , –um sistema de arquivosnão cruze os limites do sistema de arquivos
-B , –block-size = SIZEforçar um tamanho fixo de bloco de soma de verificação
-e , –rsh = COMANDOespecifique o shell remoto para usar
–rsync-path = PROGRAMAespecifique o rsync para executar na máquina remota
–existirpule a criação de novos arquivos no receptor
–ignore-existentepule os arquivos de atualização existentes no receptor
–remove-source-filesremetente remove arquivos sincronizados (não dir)
–delum alias para –delete-durante
–excluirexcluir arquivos estranhos de diretórios de destino
–delete-beforereceptor exclui antes da transferência, não durante
–excluir-durantereceptor exclui durante a transferência
–delete-delayencontre exclusões durante, exclua após
–delete-afterreceptor apaga após a transferência, não durante
–excluir-excluídotambém excluir arquivos excluídos dos diretórios de destino
–ignore-errorsexcluir mesmo se houver erros de E / S
–forçaforçar a exclusão de diretórios, mesmo se não estiver vazio
–max-delete = NUMnão exclua mais de NUM arquivos
–max-size = TAMANHOnão transfira nenhum arquivo maior que SIZE
–min-size = SIZEnão transfira nenhum arquivo menor que SIZE
–parcialmanter arquivos parcialmente transferidos
–partial-dir = DIRcolocar um arquivo parcialmente transferido no DIR
–delay-updatescolocar todos os arquivos atualizados no lugar no final
-m , –prune-empty-dirspodar cadeias de diretórios vazias da lista de arquivos
–numeric-idsnão mapeie valores uid / gid por nome de usuário / grupo
–timeout = SECONDSdefinir o tempo limite de E / S em segundos
–contimeout = SECONDSdefinir o tempo limite de conexão do daemon em segundos
-I , –ignore-timesnão pule arquivos que correspondam a tamanho e hora
–size-onlypular arquivos que correspondam ao tamanho
–modify-window = NUMcompare tempos de modificação com precisão reduzida
-T , –temp-dir = DIRcriar arquivos temporários no diretório DIR
-y , –fuzzyencontre um arquivo semelhante para a base, se nenhum arquivo de destino
–compare-dest = DIRtambém comparam os arquivos recebidos em relação ao DIR
–copy-dest = DIR… e inclui cópias de arquivos inalterados
–link-dest = DIRhardlink para arquivos no DIR quando inalterados
-z , –compresscompactar dados do arquivo durante a transferência
–compress-level = NUMdefinir explicitamente o nível de compactação
–skip-compress = LISTpular arquivos de compactação com sufixo em LIST
-C , –cvs-excludeignorar automaticamente arquivos da mesma forma que o CVS
-f , –filter = REGRAadicionar uma regra de filtragem de arquivos
-Figual a –filter = ‘dir-merge /.rsync-filter’

repetido: –filter = ‘- .rsync-filter’

–exclude = PATTERNexcluir arquivos correspondentes a PATTERN
–exclude-de = ARQUIVOler padrões de exclusão de FILE
–include = PADRÃOnão exclua arquivos correspondentes a PATTERN
–include-from = ARQUIVOleia incluir padrões de FILE
–files-from = FILEleia a lista de nomes de arquivos de origem do FILE
-0 , –de0todos os arquivos * de / filter são delimitados por 0s
-s , –protect-argssem divisão de espaço; somente caracteres curinga
–address = ADDRESSendereço de ligação do soquete de saída ao daemon
–port = PORTespecifique o número da porta alternativa de dois pontos
–sockopts = OPÇÕESespecificar opções TCP personalizadas
–blocking-iouse E / S de bloqueio para o shell remoto
–Estatísticasdê algumas estatísticas de transferência de arquivos
Saída de -8 , –8 bitsdeixe caracteres de alto bit sem escape na saída
-h , – legível por humanosnúmeros de saída em um formato legível por humanos
–progressomostrar progresso durante a transferência
-Po mesmo que –partial –progress
-i, –itemize-changesgerar um resumo de alterações para todas as atualizações
–out-format = FORMATatualizações de saída usando o FORMAT especificado
–log-file = FILEregistre o que estamos fazendo no arquivo especificado
–log-arquivo-formato = FMTatualizações de log usando o FMT especificado
–password-file = FILEleia a senha de acesso daemon do FILE
–list-onlylistar os arquivos em vez de copiá-los
–bwlimit = KBPSlargura de banda limite de E / S; KBytes por segundo
–write-batch = FILEescreva uma atualização em lote para FILE
–only-write-batch = FILEcomo –write-batch mas sem atualizar dest
–read-batch = FILEleia uma atualização em lote de FILE
–protocol = NUMforçar uma versão mais antiga do protocolo a ser usada
–iconv = CONVERT_SPECsolicitar conversão de charset de nomes de arquivo
–checksum-seed = NUMdefinir semente de soma de verificação de bloco / arquivo (avançado)
-4 , –ipv4prefira IPv4
-6 , –ipv6prefira IPv6
–versãonúmero da versão impressa
-h , –helpmostre ajuda

O rsync também pode ser executado como um daemon; nesse caso, as seguintes opções são aceitas:

–daemonexecutar como um daemon rsync
–address = ADDRESSvincular ao endereço especificado
–bwlimit = KBPSlargura de banda limite de E / S; KBytes por segundo
–config = FILEespecificar arquivo rsyncd.conf alternativo
–no-desanexarnão desanexe do pai
–port = PORTouvir no número da porta alternativa
–log-file = FILEsubstituir a configuração “arquivo de log”
–log-arquivo-formato = FMTsubstituir a configuração “formato de log”
–sockopts = OPÇÕESespecificar opções TCP personalizadas
-v , –verboseaumentar a verbosidade
-4 , –ipv4prefira IPv4
-6 , –ipv6prefere IPv6
-h , –helpmostre esta ajuda (se usada após –daemon )

Detalhe das opções

O rsync aceita as opções longa (traço duplo + palavra) e curta (traço único + letra). A lista completa das opções disponíveis é descrita abaixo. Se uma opção puder ser especificada em mais de uma maneira, as opções serão separadas por vírgula. Algumas opções têm apenas uma variante longa, não curta. Se a opção usar um parâmetro , o parâmetro será listado apenas após a variante longa, mesmo que também deva ser especificado para o curto. Ao especificar um parâmetro, você pode usar o formulário –option = param ou substituir o ‘ = ‘ por espaço em branco . O parâmetro pode precisar ser citado de alguma maneira para sobreviver à análise de linha de comando do shell. Lembre-se de que um til inicial ( ~ ) em um nome de arquivo é substituído pelo seu shell; portanto, –option = ~ / foo não altera o til em seu diretório inicial (remova o ‘ = ‘).

–Socorro

Imprima uma pequena página de ajuda descrevendo as opções disponíveis no rsync e saia. Para compatibilidade com versões anteriores de versões anteriores do rsync , a ajuda também será exibida se você usar a opção -h sem nenhum outro argumento.

–versão

imprima o número da versão do rsync e saia.

-v, –verbose

Esta opção aumenta a quantidade de informações que você recebe durante a transferência. Por padrão, o rsync funciona silenciosamente. Um único -v fornece informações sobre quais arquivos estão sendo transferidos e um breve resumo no final. As duas opções -v fornecem informações sobre quais arquivos estão sendo ignorados e um pouco mais de informações no final. Mais de duas opções -v devem ser usadas apenas se você estiver depurando o rsync .

Observe que os nomes dos arquivos transferidos produzidos são feitos usando um formato –out padrão de ” % n% L “, que informa apenas o nome do arquivo e, se o item for um link, para onde ele aponta . No nível de verbosidade -v único, isso não menciona quando um arquivo obtém seus atributos alterados. Se você solicitar uma lista detalhada de atributos alterados ( –itemize-changes ou adicionar ” % i ” à configuração –out-format ), a saída (no cliente) aumentará para mencionar todos os itens alterados em qualquer maneira. Veja a opção –out-format para mais detalhes.

-q, –quiet

Esta opção diminui a quantidade de informações que você recebe durante a transferência, suprimindo as mensagens de informações do servidor remoto. Esta opção é útil ao invocar o rsync do cron.

–no-motd

Esta opção afeta as informações emitidas pelo cliente no início de uma transferência de daemon. Isso suprime o texto da mensagem do dia (MOTD), mas também afeta a lista de módulos que o daemon envia em resposta à solicitação ” rsync host ::” (devido a uma limitação no protocolo rsync ). omita esta opção se desejar solicitar a lista de módulos do daemon.

-I, –ignore-times

Normalmente, o rsync ignora qualquer arquivo que já tenha o mesmo tamanho e tenha o mesmo registro de data e hora de modificação. Essa opção desativa esse comportamento de “verificação rápida”, fazendo com que todos os arquivos sejam atualizados.

–size-only

Isso modifica o algoritmo de “verificação rápida” do rsync para localizar arquivos que precisam ser transferidos, alterando-o do padrão de transferência de arquivos com um tamanho alterado ou com um horário alterado pela última vez modificado, para apenas procurar arquivos com tamanho alterado. Isso é útil ao começar a usar o rsync depois de usar outro sistema de espelhamento, que pode não preservar exatamente os carimbos de data e hora .

–modify-window

Ao comparar dois registros de data e hora, o rsync trata os registros de data e hora como iguais se diferirem por não mais que o valor da janela de modificação. Normalmente, é 0 (para uma correspondência exata), mas você pode achar útil definir isso para um valor maior em algumas situações. Em particular, ao transferir para ou de um sistema de arquivos MS Windows FAT (que representa tempos com uma resolução de 2 segundos), –modify-window = 1 é útil (permitindo que os tempos sejam diferentes em até 1 segundo).

-c, –checksum

Isso muda a maneira como o rsync verifica se os arquivos foram alterados e precisam de uma transferência. Sem essa opção, o rsync usa uma “verificação rápida” que (por padrão) verifica se o tamanho e o horário da última modificação de cada arquivo coincidem entre o remetente e o destinatário. Essa opção altera isso para comparar uma soma de verificação de 128 bits para cada arquivo que tenha um tamanho correspondente. Gerar as somas de verificação significa que os dois lados gastarão muito E / S de disco lendo todos os dados nos arquivos na transferência (e isso é anterior a qualquer leitura que será feita para transferir arquivos alterados), portanto, isso pode atrasar as coisas significativamente.

O lado de envio gera suas somas de verificação enquanto realiza a verificação do sistema de arquivos que cria a lista dos arquivos disponíveis. O receptor gera suas somas de verificação quando está pesquisando arquivos alterados e soma todos os arquivos com o mesmo tamanho que o arquivo do remetente correspondente: arquivos com tamanho alterado ou soma de verificação alterada são selecionados para transferência.

Observe que o rsync sempre verifica se cada arquivo transferido foi reconstruído corretamente no lado receptor, verificando uma soma de verificação de arquivo inteiro que é gerada à medida que o arquivo é transferido, mas essa verificação automática após a transferência não tem nada a ver com as opções anteriores. the-transfer “Este arquivo precisa ser atualizado?” Verifica.

Para o protocolo 30 e além (primeiro suportado no 3.0.0), a soma de verificação usada é MD5. Para protocolos mais antigos, a soma de verificação usada é MD4.

-a, –archive

Isso é equivalente a -rlptgoD . É uma maneira rápida de dizer que você deseja recursão e deseja preservar quase tudo (com -H sendo uma omissão notável). A única exceção à equivalência acima é quando –files-from é especificado, caso em que -r não está implícito.

Observe que -a não preserva os links físicos, porque é caro encontrar arquivos com links múltiplos. Você deve especificar separadamente -H .

–nenhuma opção

Você pode desativar uma ou mais opções implícitas, prefixando o nome da opção com “não”. Nem todas as opções podem ser prefixadas com um ” não- “: somente opções implícitas por outras opções (por exemplo, –no-D, –no-perms ) ou com padrões diferentes em várias circunstâncias (por exemplo, –no- arquivo inteiro, –no-blocking-io, –no-dirs ). Você pode especificar o nome da opção curta ou longa após o prefixo ” no- ” (por exemplo, –no-R é o mesmo que –no-relativo ).

Por exemplo: se você quiser usar -a ( –archive ) mas não quiser -o ( –owner ), em vez de converter -a em -rlptgD , poderá especificar -a –no-o (ou – um – sem dono ).

A ordem das opções é importante: se você especificar –no-r -a , a opção -r acabará sendo ativada, o oposto de -a –no-r . Observe também que os efeitos colaterais da opção –files-from NÃO são posicionais, pois afeta o estado padrão de várias opções e altera ligeiramente o significado de -a (consulte a opção –files-from para obter mais detalhes).

-r, –recursive

Isso diz ao rsync para copiar diretórios recursivamente. Veja também –dirs ( -d ).

A partir do rsync 3.0.0, o algoritmo recursivo usado agora é uma varredura incremental que usa muito menos memória do que antes e inicia a transferência após a varredura dos primeiros diretórios. Essa varredura incremental afeta apenas nosso algoritmo de recursão e não altera uma transferência não recursiva. Também é possível apenas quando as duas extremidades da transferência são pelo menos a versão 3.0.0.

Algumas opções exigem que o rsync conheça a lista completa de arquivos, portanto, essas opções desativam o modo de recursão incremental. Eles incluem: –delete-before, –delete-after, –une-empty-dirs e –delay-updates . Por esse motivo , o modo de exclusão padrão quando você especifica –delete agora é –delete-during quando ambas as extremidades da conexão são pelo menos 3.0.0 (use –del ou –delete-durante para solicitar este modo de exclusão aprimorado explicitamente). Veja também a opção –delete-delay que é uma escolha melhor do que usar –delete-after .

A recursão incremental pode ser desativada usando a opção –no-inc-recursive ou seu alias mais curto –no-ir .

-R, – relativo

Use caminhos relativos. Isso significa que os nomes dos caminhos completos especificados na linha de comando são enviados ao servidor, e não apenas as últimas partes dos nomes dos arquivos. Isso é particularmente útil quando você deseja enviar diretórios diferentes ao mesmo tempo. Por exemplo, se você usou este comando:

  rsync -av /foo/bar/baz.c remote: / tmp /

… isso criaria um arquivo chamado baz.c em / tmp / na máquina remota. Se você usou

  rsync -avR /foo/bar/baz.c remote: / tmp /

então, um arquivo chamado /tmp/foo/bar/baz.c seria criado na máquina remota, preservando seu caminho completo. Esses elementos extras do caminho são chamados de “diretórios implícitos” (ou seja, os diretórios “foo” e “foo / bar” no exemplo acima).

Começando com o rsync 3.0.0, o rsync sempre envia esses diretórios implícitos como diretórios reais na lista de arquivos, mesmo que um elemento do caminho seja realmente um link simbólico no lado de envio. Isso evita alguns comportamentos realmente inesperados ao copiar o caminho completo de um arquivo que você não percebeu ter um link simbólico no caminho. Se você deseja duplicar um link simbólico do lado do servidor, inclua o link simbólico pelo caminho e o diretório referente pelo caminho real. Se você está lidando com um rsync mais antigo no lado de envio, pode ser necessário usar a opção –no-implied-dirs .

Também é possível limitar a quantidade de informações do caminho que são enviadas como diretórios implícitos para cada caminho que você especificar. Com um rsync moderno no lado de envio (começando com 2.6.7), você pode inserir um ponto e uma barra no caminho de origem, assim:

  rsync -avR /foo/./bar/baz.c remote: / tmp /

Isso criaria /tmp/bar/baz.c na máquina remota. Observe que o ponto deve ser seguido por uma barra, para que ” / foo /. ” Não seja abreviado. Para versões mais antigas do rsync , você precisaria usar um chdir para limitar o caminho de origem. Por exemplo, ao enviar arquivos:

  (cd / foo; rsync -avR bar / baz.c remote: / tmp /)

Observe que o parens coloca os dois comandos em um sub-shell, para que o comando “cd” não permaneça em vigor para futuros comandos. Se você estiver obtendo arquivos de um rsync mais antigo, use este idioma (mas apenas para uma transferência não daemon):

  rsync -avR --rsync-path = "cd / foo; rsync" remoto: bar / baz.c / tmp /

–sem-implícitos-dirs

Esta opção afeta o comportamento padrão da opção –relative . Quando especificado, os atributos dos diretórios implícitos dos nomes de origem não são incluídos na transferência. Isso significa que os elementos de caminho correspondentes no sistema de destino permanecem inalterados, se existirem, e os diretórios implícitos ausentes são criados com atributos padrão. Isso ainda permite que esses elementos do caminho implícito tenham grandes diferenças, como ser um link simbólico para um diretório no lado de recebimento.

Por exemplo, se uma linha de comando arg ou uma entrada de arquivos solicitados ao rsync para transferir o arquivo ” path / foo / file “, os diretórios ” path ” e ” path / foo ” serão implícitos quando –relative for usado. Se ” path / foo ” é um link simbólico para ” bar ” no sistema de destino, o rsync receptor normalmente exclui ” path / foo “, recria-o como um diretório e recebe o arquivo no novo diretório. Com –no-implied-dirs , o rsync receptor atualiza ” path / foo / file ” usando os elementos de caminho existentes, o que significa que o arquivo acaba sendo criado em ” path / bar “. Outra maneira de realizar essa preservação de link é usar a opção –keep-dirlinks (que também afetará links simbólicos para diretórios no restante da transferência).

Ao extrair arquivos de um rsync anterior à 3.0.0, pode ser necessário usar esta opção se o lado de envio tiver um link simbólico no caminho solicitado e você desejar que os diretórios implícitos sejam transferidos como diretórios normais.

-b, –backup

Com esta opção, os arquivos de destino preexistentes são renomeados à medida que cada arquivo é transferido ou excluído. Você pode controlar para onde vai o arquivo de backup e qual sufixo (se houver) será anexado usando as opções –backup-dir e –suffix .

Observe que, se você não especificar –backup-dir , (1) a opção –omit-dir-times será implícita e (2) se –delete também estiver em vigor (sem –delete-excluído ) , o rsync adicionará uma regra de filtro “protect” para o sufixo de backup ao final de todas as suas exclusões existentes (por exemplo, -f “P * ~” ). Isso impedirá que os arquivos com backup anterior sejam excluídos. Observe que, se você estiver fornecendo regras de filtro, talvez seja necessário inserir manualmente a regra de exclusão / proteção em algum lugar mais alto da lista, para que ela tenha uma prioridade suficientemente alta para ser eficaz (por exemplo, se suas regras especificarem uma inclusão / exclusão à direita de ” * ‘, a regra de adição automática nunca seria alcançada).

–backup-dir = DIR

Em combinação com a opção –backup , isso diz ao rsync para armazenar todos os backups no diretório especificado no lado do recebimento. Isso pode ser usado para backups incrementais. Além disso, você pode especificar um sufixo de backup usando a opção –suffix (caso contrário, os arquivos copiados no diretório especificado manterão seus nomes originais).

Observe que, se você especificar um caminho relativo, o diretório de backup será relativo ao diretório de destino; portanto, você provavelmente desejará especificar um caminho absoluto ou um caminho que comece com ” ../ “. Se um daemon rsync for o receptor, o diretório de backup não poderá sair da hierarquia de caminhos do módulo, portanto, tome cuidado extra para não excluí-lo ou copiá-lo.

–suffix = SUFFIX

Esta opção permite substituir o sufixo de backup padrão usado com a opção –backup ( -b ). O sufixo padrão é ~ se nenhum –backup-dir foi especificado, caso contrário, é uma sequência vazia.

-u, –update

Isso força o rsync a ignorar qualquer arquivo existente no destino e ter um horário modificado mais recente que o arquivo de origem. Se um arquivo de destino existente tiver um tempo de modificação igual ao do arquivo de origem, ele será atualizado se os tamanhos forem diferentes.

Observe que isso não afeta a cópia de links simbólicos ou outros arquivos especiais. Além disso, uma diferença de formato de arquivo entre o remetente e o destinatário é sempre considerada importante o suficiente para uma atualização, independentemente da data dos objetos. Em outras palavras, se a fonte tiver um diretório em que o destino tenha um arquivo, a transferência ocorrerá independentemente dos carimbos de data e hora.

Essa opção é uma regra de transferência, não uma exclusão, portanto, não afeta os dados que entram nas listas de arquivos e, portanto, não afeta as exclusões. Apenas limita os arquivos que o receptor solicita que sejam transferidos.

–no lugar

Essa opção altera a maneira como o rsync transfere um arquivo quando seus dados precisam ser atualizados: em vez do método padrão de criar uma nova cópia do arquivo e movê-lo para o lugar quando estiver completo, o rsync grava os dados atualizados diretamente no arquivo de destino .

Isso tem vários efeitos:

  • Os links físicos não estão quebrados. Isso significa que os novos dados serão visíveis através de outros links físicos para o arquivo de destino. Além disso, as tentativas de copiar arquivos de origem diferentes em um arquivo de destino vinculado à multiplicação resultarão em um “cabo de guerra”, com os dados de destino mudando para frente e para trás.
  • Os binários em uso não podem ser atualizados (o sistema operacional impedirá que isso aconteça ou os binários que tentarem trocar seus dados terão um comportamento inadequado ou travarão).
  • Os dados do arquivo estarão em um estado inconsistente durante a transferência e serão deixados assim se a transferência for interrompida ou se uma atualização falhar.
  • Um arquivo no qual o rsync não pode gravar não pode ser atualizado. Enquanto um superusuário pode atualizar qualquer arquivo, um usuário normal precisa ter permissão de gravação para que a abertura do arquivo seja bem-sucedida.
  • A eficiência do algoritmo delta-transfer do rsync pode ser reduzida se alguns dados no arquivo de destino forem substituídos antes que possam ser copiados para uma posição posteriormente no arquivo. Isso não se aplica se você usar –backup , pois o rsync é inteligente o suficiente para usar o arquivo de backup como o arquivo base da transferência.

ATENÇÃOvocê não deve usar esta opção para atualizar arquivos que estão sendo acessados ​​por outras pessoas; portanto, tenha cuidado ao optar por usá-lo para uma cópia.

Essa opção é útil para transferir arquivos grandes com alterações baseadas em bloco ou dados anexados, e também em sistemas vinculados a disco e não à rede. Também pode ajudar a impedir que um instantâneo do sistema de arquivos copie na gravação desvie todo o conteúdo de um arquivo que possui apenas pequenas alterações.

A opção implica –partial (uma vez que uma transferência interrompida não exclui o arquivo), mas entra em conflito com –partial-dir e –delay-updates . Antes do rsync 2.6.4 – o inplace também era incompatível com –compare-dest e –link-dest .

–acrescentar

Isso faz com que o rsync atualize um arquivo anexando dados ao final do arquivo, que pressupõe que os dados que já existem no lado de recebimento são idênticos ao início do arquivo no lado de envio. Se um arquivo precisar ser transferido e seu tamanho no receptor for igual ou maior que o tamanho no remetente, o arquivo será ignorado. Isso não interfere na atualização dos atributos sem conteúdo de um arquivo (por exemplo, permissões, propriedade etc.) quando o arquivo não precisa ser transferido, nem afeta a atualização de arquivos não regulares. Implica –inplace , mas não entra em conflito com –sparse (pois está sempre estendendo o comprimento de um arquivo).

–append-verifique

Isso funciona exatamente como a opção –append , mas os dados existentes no lado do recebimento são incluídos na etapa de verificação de soma de verificação de arquivo completo, o que fará com que um arquivo seja reenviado se a etapa de verificação final falhar (o rsync usa um método normal, não -appending –inplace transfer for reenviar).

Nota: antes do rsync 3.0.0, a opção –append funcionava como –append-verifica , portanto, se você estiver interagindo com um rsync mais antigo (ou a transferência estiver usando um protocolo anterior a 30), a especificação de qualquer opção de acréscimo será iniciada uma transferência –append-check .

-d, –dirs

Diga ao lado do remetente para incluir os diretórios encontrados. Ao contrário de –recursive , o conteúdo de um diretório não é copiado, a menos que o nome do diretório especificado seja “.” ou termina com uma barra final (por exemplo, ” . “, ” dir /. “, ” dir / ” etc.). Sem essa opção ou a opção –recursive , o rsync ignorará todos os diretórios encontrados (e emitirá uma mensagem nesse sentido para cada um). Se você especificar –dirs e –recursive , –recursive terá precedência.

A opção –dirs é implícita na opção –files -from ou –list-only (incluindo um uso implícito –list-only ) se –recursive não foi especificado (para que os diretórios sejam vistos no diretório listagem). Especifique –no-dirs (ou –no-d ) se desejar desativar isso.

Há também uma opção auxiliar de compatibilidade com versões anteriores, –old-dirs (ou –old-d ), que diz ao rsync para usar um hack de ” -r –exclude = ‘/ * / *’ ” para obter um rsync mais antigo para listar um único diretório sem repetir.

-l, –links

Quando forem encontrados links simbólicos, recrie o link simbólico no destino.

-L, –copy-links

Quando links simbólicos são encontrados, o item para o qual eles apontam (o referente) é copiado, em vez do link simbólico. Nas versões mais antigas do rsync , essa opção também tinha o efeito colateral de dizer ao lado receptor para seguir links simbólicos, como links simbólicos para diretórios. Em um rsync moderno como este, você precisará especificar –keep-dirlinks ( -K ) para obter esse comportamento extra. A única exceção é ao enviar arquivos para um rsync muito antigo para entender -K – nesse caso, a opção -L ainda terá o efeito colateral de -K no rsync receptor mais antigo.

–copy-inseguro-links

Isso diz ao rsync para copiar o referente de links simbólicos que apontam para fora da árvore copiada. Links simbólicos absolutos também são tratados como arquivos comuns, assim como quaisquer links simbólicos no próprio caminho de origem quando –relative é usado. Esta opção não terá efeito adicional se –copy-links também tiver sido especificado.

–safe-links

Isso diz ao rsync para ignorar qualquer link simbólico que aponte para fora da árvore copiada. Todos os links simbólicos absolutos também são ignorados. O uso desta opção em conjunto com –relative pode gerar resultados inesperados.

-k, –copy-dirlinks

Essa opção faz com que o lado de envio trate um link simbólico para um diretório como se fosse um diretório real. Isso é útil se você não deseja que os links simbólicos para os não diretórios sejam afetados, pois eles usariam –copy-links .

Sem essa opção, se o lado de envio tiver substituído um diretório com um link simbólico para um diretório, o lado receptor excluirá qualquer coisa que esteja no caminho do novo link simbólico, incluindo uma hierarquia de diretórios (desde que –force ou –delete está em vigor).

Veja também –keep-dirlinks para uma opção análoga para o lado receptor.

–copy-dirlinks se aplica a todos os links simbólicos para diretórios na fonte. Se você deseja seguir apenas alguns links simbólicos especificados, um truque que você pode usar é passá-los como argumentos de origem adicionais com uma barra à direita, usando –relative para tornar os caminhos correspondentes. Por exemplo:

  rsync -r --relativo src /./ src /./ siga-me / dest /

Isso funciona porque o rsync chama lstat no arg de origem, conforme indicado, e a barra final faz com que o lstat siga o link simbólico, dando origem a um diretório na lista de arquivos que substitui o link simbólico encontrado durante a verificação de ” src /./ “.

-K, –keep-dirlinks

Essa opção faz com que o lado receptor trate um link simbólico para um diretório como se fosse um diretório real, mas apenas se corresponder a um diretório real do remetente. Sem essa opção, o link simbólico do destinatário seria excluído e substituído por um diretório real.

Por exemplo, suponha que você transfira um diretório ” foo ” que contenha um arquivo ” file “, mas ” foo ” seja um link simbólico para o diretório ” bar ” no receptor. Sem –keep-dirlinks , o destinatário exclui o link simbólico ” foo “, recria-o como um diretório e recebe o arquivo no novo diretório. Com –keep-dirlinks , o receptor mantém o link simbólico e o ” arquivo ” termina em ” bar “.

Uma nota de cautela: se você usar –keep-dirlinks , deverá confiar em todos os links simbólicos da cópia. Se for possível para um usuário não confiável criar seu próprio link simbólico para qualquer diretório, o usuário poderá (em uma cópia subsequente) substituir o link simbólico por um diretório real e afetar o conteúdo de qualquer diretório que o link simbólico referenciar. Para cópias de segurança, é melhor usar algo como uma montagem de ligação em vez de um link simbólico para modificar sua hierarquia de recebimento.

Veja também –copy-dirlinks para uma opção análoga para o lado que envia.

-H, –hard-links

Isso diz ao rsync para procurar arquivos vinculados na fonte e vincular os arquivos correspondentes no destino. Sem essa opção, os arquivos vinculados na fonte são tratados como se fossem arquivos separados.

Esta opção NÃO garante necessariamente que o padrão de links físicos no destino corresponda exatamente ao padrão na origem. Os casos em que o destino pode acabar com links físicos extras incluem o seguinte:

  • Se o destino contiver links físicos estranhos (mais links do que o que está presente na lista de arquivos de origem), o algoritmo de cópia não os quebrará explicitamente. No entanto, se um ou mais caminhos tiverem diferenças de conteúdo, o processo normal de atualização de arquivos interromperá esses links extras (a menos que você esteja usando a opção –inplace ).
  • Se você especificar um diretório –link-dest que contenha links físicos , a vinculação dos arquivos de destino aos arquivos –link-dest poderá fazer com que alguns caminhos no destino se vinculem devido às associações –link-dest .

Observe que o rsync pode detectar apenas links físicos entre arquivos que estão dentro do conjunto de transferência. Se o rsync atualizar um arquivo que possui conexões de hard-link extras para arquivos fora da transferência, essa ligação será interrompida. Se você estiver tentado a usar a opção –inplace para evitar essa quebra, tenha muito cuidado para saber como seus arquivos estão sendo atualizados, para ter certeza de que nenhuma alteração não intencional ocorre devido a links permanentes (e consulte o –inplace opção para mais advertências).

Se a recursão incremental estiver ativa (consulte –recursive ), o rsync poderá transferir um arquivo com vínculo físico ausente antes de descobrir que outro link para esse conteúdo existe em algum outro local da hierarquia. Isso não afeta a precisão da transferência (ou seja, quais arquivos são vinculados por hardware), apenas sua eficiência (por exemplo, copiar os dados para uma nova cópia inicial de um arquivo vinculado por hardware que poderia ter sido encontrado posteriormente na transferência em outro membro do conjunto de arquivos vinculados). Uma maneira de evitar essa ineficiência é desativar a recursão incremental usando a opção –no-inc-recursive .

-p, –perms

Essa opção faz com que o rsync de recebimento defina as permissões de destino iguais às permissões de origem. Veja também a opção –chmod para uma maneira de modificar o que o rsync considera serem as permissões de origem.

Quando esta opção está desativada, as permissões são definidas da seguinte maneira:

  • Os arquivos existentes (incluindo arquivos atualizados) mantêm suas permissões existentes, embora a opção –executability possa alterar apenas a permissão de execução do arquivo.
  • Os novos arquivos obtêm seus bits de permissão “normais” definidos como as permissões do arquivo de origem mascaradas com as permissões padrão do diretório de recebimento ( umask do processo de recebimento ou as permissões especificadas na ACL padrão do diretório de destino) e seus bits de permissão especiais desativados, exceto no caso em que um novo diretório herda um bit setgid do diretório pai.

Portanto, quando –perms e –executability estão desabilitados, o comportamento do rsync é o mesmo de outros utilitários de cópia de arquivo, como cp e tar .

Em resumo: para dar aos arquivos de destino (antigos e novos) as permissões de origem, use –perms . Para conceder aos novos arquivos as permissões padrão de destino (mantendo os arquivos existentes inalterados), verifique se a opção –perms está desativada e use –chmod = ugo = rwX (que garante que todos os bits não mascarados sejam ativados). Se você quiser facilitar a digitação desse último comportamento, defina um alias popt para ele, como colocar essa linha no arquivo ~ / .popt (o seguinte define a opção -Z e inclui –no- g para usar o grupo padrão do diretório de destino):

 alias do rsync -Z --no-p --no-g --chmod = ugo = rwX

Você poderia usar esta nova opção em um comando como este:

 rsync -avZ src / dest /

Advertência: certifique-se de que -a não siga -Z ou reative as duas opções ” –no- * ” mencionadas acima.

A preservação do bit setgid do destino nos diretórios criados recentemente quando –perms está desativado foi adicionada no rsync 2.6.7. As versões mais antigas do rsync preservavam erroneamente os três bits de permissão especiais para arquivos recém-criados quando –perms estava desativado, substituindo a configuração de bit setgid do destino em um diretório recém-criado. ACL padrão observância foi adicionado ao remendo ACL para rsync 2.6.7, de modo mais velhos (ou não-ACL-activado) rsync s uso umask mesmo se ACLs padrão estão presentes. Lembre-se de que é a versão do rsync de recebimento que afeta esses comportamentos.

-E, – executabilidade

Esta opção faz com que o rsync preserve a executabilidade (ou não executabilidade) dos arquivos regulares quando –perms não está ativado. Um arquivo regular é considerado executável se pelo menos um ‘ x ‘ estiver ativado em suas permissões. Quando a executabilidade de um arquivo de destino existente é diferente da do arquivo de origem correspondente, o rsync modifica as permissões do arquivo de destino da seguinte maneira:

  • Para tornar um arquivo não executável, o rsync desativa todas as suas permissões ‘ x ‘.
  • Para tornar um arquivo executável, o rsync ativa cada permissão ‘ x ‘ com a permissão ‘ r ‘ correspondente ativada.

Se –perms estiver ativado, esta opção será ignorada.

-A, –acls

Essa opção faz com que o rsync atualize as ACLs de destino para que sejam as mesmas das ACLs de origem. A opção também implica –perms .

Os sistemas de origem e destino devem ter entradas ACL compatíveis para que esta opção funcione corretamente. Consulte a opção –fake-super para obter uma maneira de fazer backup e restaurar ACLs que não são compatíveis.

-X, –xattrs

Esta opção faz com que o rsync atualize os atributos estendidos de destino para serem os mesmos que os de origem.

Para sistemas que suportam espaços para nome de atributo estendido, uma cópia sendo feita por um superusuário copia todos os espaços para nome, exceto system. *. Um usuário normal apenas copia o espaço para nome do usuário. *. Para poder fazer backup e restaurar espaços de nome que não sejam usuários como um usuário normal, consulte a opção –fake-super .

Observe que esta opção não copia os valores especiais xattr do rsync (por exemplo, aqueles usados ​​por –fake-super ), a menos que você repita a opção (por exemplo, -XX ). Este modo “copiar todos os xattrs” não pode ser usado com –fake-super .

–chmod

Esta opção informa ao rsync para aplicar um ou mais modos “chmod” separados por vírgula à permissão dos arquivos na transferência. O valor resultante é tratado como se fossem as permissões que o lado de envio forneceu para o arquivo, o que significa que esta opção pode parecer não ter efeito nos arquivos existentes se –perms não estiver ativado.

Além das regras de análise normais especificadas na página de manual chmod , você pode especificar um item que deve ser aplicado apenas a um diretório com um prefixo ‘ D ‘ ou um item que deve ser aplicado apenas a um arquivo com um ‘ F ‘. Por exemplo, o seguinte garantirá que todos os diretórios sejam marcados como set-gid, que nenhum arquivo seja gravável por outro, que seja gravável pelo usuário e gravável pelo grupo e que ambos tenham executabilidade consistente em todos os bits: –chmod = Dg + s, ug + w, Fo-w, + X

Também é legal especificar várias opções –chmod , pois cada opção adicional é apenas anexada à lista de alterações a serem feitas.

Veja as –perms e –executability opções de como o valor de permissão resultante pode ser aplicado para os arquivos na transferência.

-o, –owner

Esta opção faz com que o rsync para definir o proprietário do arquivo de destino seja o mesmo que o arquivo de origem, mas apenas se o recebimento rsync está sendo executado como o super-usuário (veja também a –super e opções –fake super ) . Sem essa opção, o proprietário de arquivos novos e / ou transferidos é definido como o usuário que está chamando no lado receptor.

A preservação da propriedade associará os nomes correspondentes por padrão, mas pode voltar a usar o número de ID em algumas circunstâncias (consulte também a opção –numeric-ids para uma discussão completa).

-g, –group

Essa opção faz com que o rsync defina o grupo do arquivo de destino como igual ao arquivo de origem. Se o programa receptor não estiver sendo executado como superusuário (ou se –no-super foi especificado), apenas os grupos dos quais o usuário que está chamando no lado receptor é membro serão preservados. Sem essa opção, o grupo é definido como o grupo padrão do usuário que está chamando no lado de recebimento.

A preservação das informações do grupo associará os nomes correspondentes por padrão, mas pode voltar a usar o número de ID em algumas circunstâncias (consulte também a opção –numeric-ids para uma discussão completa).

–dispositivos

Essa opção faz com que o rsync transfira caracteres e bloqueie arquivos de dispositivos no sistema remoto para recriar esses dispositivos. Esta opção não tem efeito se o recebimento rsync não é executado como o super-usuário (veja também a –super e –fake super- opções).

–especialidades

Essa opção faz com que o rsync transfira arquivos especiais, como soquetes nomeados e fifos.

-D

A opção -D é equivalente a –devices –specials .

-t, –times

Isso diz ao rsync para transferir os tempos de modificação junto com os arquivos e atualizá-los no sistema remoto. Observe que, se essa opção não for usada, a otimização que exclui arquivos que não foram modificados não pode ser eficaz; em outras palavras, um -t ou -a ausente fará com que a próxima transferência se comporte como se usasse -I , fazendo com que todos os arquivos sejam atualizados (embora o algoritmo de transferência delta do rsync torne a atualização bastante eficiente se os arquivos não tiverem sido atualizados) realmente mudou, é muito melhor usar -t ).

-O, –omit-dir-times

Isso diz ao rsync para omitir diretórios quando preserva os tempos de modificação (consulte –times ). Se o NFS estiver compartilhando os diretórios no lado de recebimento, é uma boa ideia usar -O . Esta opção é inferida se você usar –backup sem –backup-dir .

–super

Isso instrui o lado receptor a tentar atividades de superusuário, mesmo que o rsync receptor não tenha sido executado pelo superusuário. Essas atividades incluem: preservar usuários através da opção –owner , preservar todos os grupos (não apenas os grupos de usuários atuais) pela opção –groups e copiar dispositivos através da opção –devices . Isso é útil para sistemas que permitem essas atividades sem ser o superusuário, e também para garantir que você receba erros se o lado receptor não estiver sendo executado como superusuário. Para desativar as atividades de superusuário, o superusuário pode usar –no-super .

–fake-super

Quando essa opção está ativada, o rsync simula as atividades de superusuário salvando / restaurando os atributos privilegiados por meio de atributos estendidos especiais anexados a cada arquivo (conforme necessário). Isso inclui o proprietário e o grupo do arquivo (se não for o padrão), as informações do dispositivo do arquivo (o dispositivo e os arquivos especiais são criados como arquivos de texto vazios) e quaisquer bits de permissão que não permitiremos que sejam definidos no arquivo real (por exemplo, o arquivo real nos obtém , gs, ot por segurança) ou isso limitaria o acesso do proprietário (como o superusuário real sempre pode acessar / alterar um arquivo, os arquivos que criamos sempre podem ser acessados ​​/ alterados pela criação do utilizador). Essa opção também manipula ACLs (se –acls foi especificado) e atributos estendidos para não usuários (se –xattrs foi especificado).

Essa é uma boa maneira de fazer backup de dados sem usar um superusuário e armazenar ACLs de sistemas incompatíveis.

A opção –fake-super afeta apenas o lado em que a opção é usada. Para afetar o lado remoto de uma conexão de shell remoto, especifique um caminho rsync :

 rsync -av --rsync-path = "rsync --fake-super" / src / host: / dest /

Como existe apenas um “lado” em uma cópia local, essa opção afeta o envio e o recebimento de arquivos. Você precisará especificar uma cópia usando ” localhost ” se precisar evitar isso, possivelmente usando o script de shell “lsh” (no diretório de suporte) como um substituto para um shell remoto real (consulte –rsh ).

Esta opção é substituída por –super e –no-super .

Veja também a configuração “fake super” no arquivo rsyncd.conf do daemon .

-S, –para

Tente manipular arquivos esparsos com eficiência, para que ocupem menos espaço no destino. Conflita com –inplace porque não é possível sobrescrever dados de maneira esparsa.

-n, –dry-run

Isso faz com que o rsync execute uma execução de avaliação que não faça alterações (e produz principalmente a mesma saída que uma execução real). É mais comumente usado em combinação com as opções -v , –verbose e / ou -i , –itemize-changes para ver o que um comando rsync fará antes que ele seja executado.

A saída de –itemize-changes deve ser exatamente a mesma em uma execução a seco e uma execução real subsequente (exceto trapaças intencionais e falhas de chamada do sistema); se não for, isso é um bug. Outros resultados devem permanecer praticamente inalterados, mas podem diferir em algumas áreas. Notavelmente, uma execução a seco não envia os dados reais para transferências de arquivos, portanto – progroga não tem efeito, as estatísticas “bytes enviados”, “bytes recebidos”, “dados literais” e “dados correspondentes” são muito pequenas e o valor “speedup” é equivalente a uma execução na qual não são necessárias transferências de arquivos.

-W, –whole-file

Com esta opção , o algoritmo de transferência delta do rsync não é usado e o arquivo inteiro é enviado como está. A transferência pode ser mais rápida se essa opção for usada quando a largura de banda entre as máquinas de origem e de destino for maior que a largura de banda do disco (especialmente quando o “disco” é realmente um sistema de arquivos em rede). Esse é o padrão quando a origem e o destino são especificados como caminhos locais, mas apenas se nenhuma opção de gravação em lote estiver em vigor.

-x, –um sistema de arquivos

Isso diz ao rsync para evitar cruzar um limite do sistema de arquivos ao repetir. Isso não limita a capacidade do usuário de especificar itens para copiar de vários sistemas de arquivos, apenas a recursão do rsync através da hierarquia de cada diretório que o usuário especificou, e também a recursão análoga no lado de recebimento durante a exclusão. Além disso, lembre-se de que o rsync trata uma montagem “bind” no mesmo dispositivo que no mesmo sistema de arquivos.

Se essa opção for repetida, o rsync omitirá todos os diretórios do ponto de montagem da cópia. Caso contrário, ele inclui um diretório vazio em cada ponto de montagem que encontra (usando os atributos do diretório montado porque os do diretório do ponto de montagem subjacente são inacessíveis).

Se o rsync foi instruído a recolher os links simbólicos (via –copy-links ou –copy-unsafe-links ), um link simbólico para um diretório em outro dispositivo é tratado como um ponto de montagem. Os links simbólicos para não diretórios não são afetados por esta opção.

–existing, –ignore-inexistente

Isso diz ao rsync para ignorar a criação de arquivos (incluindo diretórios) que ainda não existem no destino. Se essa opção for combinada com a opção –ignore-existente , nenhum arquivo será atualizado (o que pode ser útil se tudo o que você deseja fazer é excluir arquivos externos).

Essa opção é uma regra de transferência, não uma exclusão, portanto, não afeta os dados que entram nas listas de arquivos e, portanto, não afeta as exclusões. Apenas limita os arquivos que o receptor solicita que sejam transferidos.

–ignore-existente

Isso diz ao rsync para ignorar a atualização de arquivos que já existem no destino (isso não ignora os diretórios existentes ou nada seria feito). Veja também –existing .

Essa opção é uma regra de transferência, não uma exclusão, portanto, não afeta os dados que entram nas listas de arquivos e, portanto, não afeta as exclusões. Apenas limita os arquivos que o receptor solicita que sejam transferidos.

Essa opção pode ser útil para aqueles que fazem backups usando a opção –link-dest quando precisam continuar uma execução de backup interrompida. Como uma execução –link-dest é copiada para uma nova hierarquia de diretórios (quando usada corretamente), o uso de –ignore existente garantirá que os arquivos já manipulados não sejam aprimorados (o que evita uma alteração nas permissões no diretório arquivos com links físicos). Isso significa que esta opção está apenas visualizando os arquivos existentes na própria hierarquia de destino.

–remove-source-files

Isso diz ao rsync para remover do lado de envio os arquivos (que não são diretórios) que fazem parte da transferência e que foram duplicados com sucesso no lado de recebimento.

Observe que você só deve usar esta opção nos arquivos de origem que estão inativos. Se você estiver usando isso para mover arquivos que aparecem em um diretório específico para outro host, verifique se os arquivos finalizados foram renomeados para o diretório de origem, não gravados diretamente nele, para que o rsync não possa transferir um arquivo que ainda não está totalmente escrito. Se você não conseguir gravar os arquivos em um diretório diferente, use um idioma de nomeação que permita ao rsync evitar a transferência de arquivos que ainda não foram finalizados (por exemplo, nomeie o arquivo “foo.new” quando ele estiver gravado, renomeie-o para “foo” quando estiver pronto e use a opção –exclude = ‘*. new’ para a transferência rsync ).

–excluir

Isso diz ao rsync para excluir arquivos estranhos do lado de recebimento (aqueles que não estão no lado de envio), mas apenas para os diretórios que estão sendo sincronizados. Você deve ter solicitado ao rsync para enviar o diretório inteiro (por exemplo, ” dir ” ou ” dir / “) sem usar um curinga para o conteúdo do diretório (por exemplo, ” dir / * “), pois o curinga é expandido pelo shell e, portanto, o rsync recebe uma solicitação para transferir arquivos individuais, não o diretório pai dos arquivos . Os arquivos excluídos da transferência também são excluídos da exclusão, a menos que você use o botão –delete-deletedopção ou marque as regras como correspondendo apenas no lado de envio (consulte os modificadores de inclusão / exclusão na seção REGRAS DE FILTRO). Antes do rsync 2.6.7, esta opção não teria efeito a menos que –recursive estivesse ativado. A partir do 2.6.7, as exclusões também ocorrerão quando –dirs ( -d ) estiver ativado, mas apenas para diretórios cujo conteúdo está sendo copiado.

Esta opção pode ser perigosa se usada incorretamente. É uma idéia muito boa tentar primeiro executar uma execução usando a opção –dry-run ( -n ) para ver quais arquivos serão excluídos.

Se o lado de envio detectar algum erro de E / S, a exclusão de qualquer arquivo no destino será automaticamente desativada. Isso evita que falhas temporárias no sistema de arquivos (como erros NFS ) no lado do envio causem uma exclusão maciça de arquivos no destino. Você pode substituir isso pela opção –ignore-errors .

A opção –delete pode ser combinada com uma das opções –delete-WHEN sem conflito, bem como –delete-excluídos . Entretanto, se nenhuma das opções –delete-WHEN for especificada, o rsync escolherá o algoritmo –delete-durante ao conversar com o rsync 3.0.0 ou mais recente, e o algoritmo –delete-before ao conversar com um rsync mais antigo . Veja também –delete-delay e –delete-after .

–delete-before

Solicite que as exclusões de arquivos no lado receptor sejam feitas antes do início da transferência. Veja –delete (que está implícito) para mais detalhes sobre a exclusão de arquivos.

A exclusão antes da transferência é útil se o sistema de arquivos estiver com pouco espaço e a remoção de arquivos estranhos ajudaria a tornar a transferência possível. No entanto, ele introduz um atraso antes do início da transferência, e esse atraso pode causar o tempo limite da transferência (se –timeout foi especificado). Também força o rsync a usar o algoritmo de recursão não incremental antigo, que exige que o rsync verifique todos os arquivos na transferência para a memória de uma só vez (consulte –recursive ).

–delete-durante, –del

Solicite que as exclusões de arquivos no lado receptor sejam feitas incrementalmente à medida que a transferência ocorre. A verificação de exclusão por diretório é feita imediatamente antes de cada diretório ser verificada quanto a atualizações, por isso se comporta como um –delete-before mais eficiente , incluindo a exclusão antes de qualquer arquivo de filtro por diretório ser atualizado. Esta opção foi adicionada pela primeira vez no rsync versão 2.6.4. Veja –delete (que está implícito) para mais detalhes sobre a exclusão de arquivos.

–delete-delay

Solicite que as exclusões de arquivos no lado receptor sejam computadas durante a transferência (como –delete-durante ) e removidas após a conclusão da transferência. Isso é útil quando combinado com –delay-updates e / ou –fuzzy , e é mais eficiente do que usar –delete-after (mas pode se comportar de maneira diferente, pois –delete-after calcula as exclusões em uma passagem separada, afinal atualizações são feitas). Se o número de arquivos removidos exceder um buffer interno, um arquivo temporário será criado no lado receptor para conter os nomes (ele é removido enquanto aberto, portanto você não deve vê-lo durante a transferência). Se a criação do arquivo temporário falhar, o rsync tentará voltar a usar–delete-after (o que não pode ser feito se –recursive estiver fazendo uma varredura incremental). Veja –delete (que está implícito) para mais detalhes sobre a exclusão de arquivos.

–delete-after

Solicite que as exclusões de arquivos no lado receptor sejam feitas após a transferência ser concluída. Isso é útil se você estiver enviando novos arquivos de mesclagem por diretório como parte da transferência e desejar que suas exclusões entrem em vigor na fase de exclusão da transferência atual. Também força o rsync a usar o antigo algoritmo de recursão não incremental que exige que o rsync verifique todos os arquivos na transferência para a memória de uma só vez (consulte –recursive ). Veja –delete (que está implícito) para mais detalhes sobre a exclusão de arquivos.

–excluir-excluído

Além de excluir os arquivos no lado de recebimento que não estão no lado de envio, isso diz ao rsync para excluir todos os arquivos no lado de recebimento que são excluídos (consulte –exclude ). Consulte a seção REGRAS DO FILTRO para obter uma maneira de fazer com que exclusões individuais se comportem dessa maneira no receptor e para proteger os arquivos contra –delete-excluídos . Veja –delete (que está implícito) para mais detalhes sobre a exclusão de arquivos.

–ignore-errors

Diz ao –delete para continuar e excluir arquivos, mesmo quando houver erros de E / S.

–força

Essa opção informa ao rsync para excluir um diretório não vazio quando for substituído por um não diretório. Isso é relevante apenas se as exclusões não estiverem ativas (consulte –delete para obter detalhes).

Nota para as versões mais antigas do rsync : –force ainda era necessário ao usar –delete-after , e costumava não ser funcional, a menos que a opção –recursive também estivesse ativada.

–max-delete = NUM

Isso diz ao rsync para não excluir mais de NUM arquivos ou diretórios. Se esse limite for excedido, um aviso será emitido e o rsync sairá com um código de erro 25 (novo para 3.0.0).

Além disso, novo na versão 3.0.0, você pode especificar –max-delete = 0 a ser avisado sobre quaisquer arquivos estranhos no destino sem remover nenhum deles. Clientes mais antigos interpretaram isso como “ilimitado”; portanto, se você não souber qual versão é o cliente, poderá usar o menos óbvio –max-delete = -1 como uma maneira compatível com versões anteriores para especificar que nenhuma exclusão será permitida ( embora as versões mais antigas não avisassem quando o limite foi excedido).

–max-size = TAMANHO

Isso diz ao rsync para evitar a transferência de qualquer arquivo maior que o tamanho especificado. O valor SIZE pode ser sufixado com uma string para indicar um multiplicador de tamanho e pode ser um valor fracionário (por exemplo, ” –max-size = 1,5m “).

Essa opção é uma regra de transferência, não uma exclusão, portanto, não afeta os dados que entram nas listas de arquivos e, portanto, não afeta as exclusões. Apenas limita os arquivos que o receptor solicita que sejam transferidos.

Os sufixos são os seguintes: ” K ” (ou “KiB”) é um kibibyte (1024), ” M ” (ou ” MiB “) é um mebibyte (1024 * 1024) e ” G ” (ou ” GiB “) é um gibibyte (1024 * 1024 * 1024). Se você deseja que o multiplicador seja 1000 em vez de 1024, use ” KB “, ” MB ” ou ” GB “. Nota: minúsculas também são aceitas para todos os valores. Finalmente, se o sufixo terminar em ” +1 ” ou ” -1 “, o valor será compensado em um byte na direção indicada.

Exemplos: –max-size = 1.5mb-1 é 1499999 bytes e –max-size = 2g + 1 é 2147483649 bytes.

–min-size = SIZE

Isso indica ao rsync para evitar a transferência de qualquer arquivo menor que o TAMANHO especificado , o que pode ajudar a não transferir arquivos indesejados pequenos. Consulte a opção –max-size para obter uma descrição de SIZE e outras informações.

-B, –block-size = BLOCKSIZE

Isso força o tamanho do bloco usado no algoritmo delta-transfer do rsync para um valor fixo. Normalmente, é selecionado com base no tamanho de cada arquivo que está sendo atualizado. Veja o relatório técnico para detalhes.

-e, –rsh = COMANDO

Esta opção permite escolher um programa remoto remoto para usar na comunicação entre as cópias local e remota do rsync . Normalmente, o rsync está configurado para usar o ssh por padrão, mas você pode preferir usar o rsh em uma rede local.

Se essa opção for usada com [ user @ ] host :: module / path , o COMMAND do shell remoto será usado para executar um daemon rsync no host remoto e todos os dados serão transmitidos por essa conexão do shell remoto, e não por uma conexão de soquete direta com um daemon rsync em execução no host remoto. Consulte a seção “usando os recursos do rsync-daemon através de uma conexão shell remota” acima.

Os argumentos da linha de comando são permitidos no COMMAND, desde que o COMMAND seja apresentado ao rsync como um único argumento. Você deve usar espaços (não tabulações ou outros espaços em branco) para separar o comando e os argumentos, e você pode usar aspas simples e / ou duplas para preservar espaços em um argumento (mas não barras invertidas). Observe que dobrar uma aspas simples dentro de uma sequência de aspas simples fornece uma aspas simples; da mesma forma para aspas duplas (embora você precise prestar atenção em quais aspas seu shell está analisando e quais rsync está analisando). Alguns exemplos:

 -e 'ssh -p 2234'
 -e 'ssh -o "ProxyCommand nohup ssh firewall nc -w1% h% p"'

Observe que os usuários ssh podem personalizar alternadamente as opções de conexão específicas do site em seu arquivo .ssh / config.

Você também pode escolher o programa de shell remoto usando a variável de ambiente RSYNC_RSH , que aceita o mesmo intervalo de valores que -e .

Consulte também a opção –blocking-io que é afetada por esta opção.

–rsync-path = PROGRAMA

Use isso para especificar qual programa deve ser executado na máquina remota para iniciar o rsync . Geralmente usado quando o rsync não está no caminho padrão do shell remoto (por exemplo, –rsync-path = / usr / local / bin / rsync ). Observe que PROGRAM é executado com a ajuda de um shell, portanto, pode ser qualquer sequência de programa, script ou comando que você gostaria de executar, desde que não corrompa a entrada e saída padrão que o rsync está usando comunicar.

Um exemplo complicado é definir um diretório padrão diferente na máquina remota para uso com a opção –relative . Por exemplo:

 rsync -avR --rsync-path = "cd / a / b && rsync" host: c / d / e /

-C, –cvs-exclude

Este é um atalho útil para excluir uma ampla variedade de arquivos que você frequentemente não deseja transferir entre sistemas. Ele usa um algoritmo semelhante ao CVS para determinar se um arquivo deve ser ignorado.

A lista de exclusões é inicializada para excluir os seguintes itens (esses itens iniciais são marcados como perecíveis):

  • RCS
  • SCCS
  • CVS
  • CVS.adm
  • RCSLOG
  • cvslog. *
  • Tag
  • TAG
  • .make.state
  • .nse_depinfo
  • * ~
  • # *
  • . # *
  • , *
  • _ $ *
  • * $
  • *.velho
  • * .bak
  • * .BAK
  • * .orig
  • * .rej
  • .del- *
  • *.uma
  • * .olb
  • * .o
  • * .obj
  • *.então
  • *.Exe
  • * .Z
  • * .elc
  • * .ln
  • testemunho
  • .svn /
  • .git /
  • .hg /
  • .bzr /

então, os arquivos listados em um $ HOME / .cvsignore são adicionados à lista e todos os arquivos listados na variável de ambiente CVSIGNORE (todos os nomes de cvsignore são delimitados por espaços em branco).

Por fim, qualquer arquivo será ignorado se estiver no mesmo diretório que um arquivo .cvsignore e corresponder a um dos padrões listados nele. Ao contrário dos arquivos de filtro / exclusão do rsync , esses padrões são divididos em espaço em branco. Veja o manual cvs para mais informações.

Se você estiver combinando -C com as regras –filter , observe que essas exclusões do CVS são anexadas ao final de suas regras, independentemente de onde o -C foi colocado na linha de comando. Isso os torna uma prioridade mais baixa do que quaisquer regras que você especificou explicitamente. Se você deseja controlar onde essas exclusões do CVS são inseridas em suas regras de filtro, omita o -C como uma opção de linha de comando e use uma combinação de –filter =: C e –filter = -C (no seu linha de comando ou colocando o ” : C ” e ” -C “regras em um arquivo de filtro com suas outras regras). A primeira opção ativa a verificação por diretório do arquivo .cvsignore. A segunda opção faz uma importação única do CVS excluída mencionada acima.

-f, –filter = REGRA

Esta opção permite adicionar regras para excluir seletivamente certos arquivos da lista de arquivos a serem transferidos. Isso é mais útil em combinação com uma transferência recursiva.

Você pode usar quantas opções –filter na linha de comando quiser criar a lista de arquivos a serem excluídos. Se o filtro contiver espaço em branco, certifique-se de citá-lo para que o shell forneça a regra para rsync como um único argumento. O texto abaixo também menciona que você pode usar um sublinhado para substituir o espaço que separa uma regra do seu argumento.

-F

A opção -F é um atalho para adicionar duas regras –filter ao seu comando. A primeira vez que é usada é um atalho para esta regra:

 --filter = 'mesclagem de diretório /.rsync-filter'

Isso instrui o rsync a procurar por arquivos .rsync-filter por diretório que foram espalhados pela hierarquia e usar suas regras para filtrar os arquivos na transferência. Se -F for repetido, é uma abreviação para esta regra:

 --filter = 'excluir filtro .rsync'

Isso filtra os arquivos de filtro .rsync da transferência.

Consulte a seção REGRAS DO FILTRO para obter informações detalhadas sobre como essas opções funcionam.

–exclude = PATTERN

Essa opção é uma forma simplificada da opção –filter que padroniza uma regra de exclusão e não permite a sintaxe completa de análise de regras das regras normais de filtro.

Consulte a seção REGRAS DO FILTRO para obter informações detalhadas sobre esta opção.

–exclude-de = ARQUIVO

Esta opção está relacionada à opção –exclude , mas especifica um ARQUIVO que contém padrões de exclusão (um por linha). Linhas em branco no arquivo e linhas começando com ‘ ‘ou’ # ‘são ignorados. Se FILE for  , a lista será lida a partir da entrada padrão .

–include = PADRÃO

Essa opção é uma forma simplificada da opção –filter que padroniza uma regra de inclusão e não permite a sintaxe completa de análise de regras das regras normais de filtro.

Consulte a seção REGRAS DO FILTRO para obter informações detalhadas sobre esta opção.

–include-from = ARQUIVO

Esta opção está relacionada à opção –include , mas especifica um ARQUIVO que contém padrões de inclusão (um por linha). Linhas em branco no arquivo e linhas começando com ‘ ‘ou’ # ‘são ignorados. Se FILE for  , a lista será lida a partir da entrada padrão.

–files-from = FILE

O uso desta opção permite especificar a lista exata de arquivos a serem transferidos (conforme lido no arquivo especificado ou  para entrada padrão). Também ajusta o comportamento padrão do rsync para facilitar a transferência apenas dos arquivos e diretórios especificados:

  • opção –relative ( -R ) está implícita, o que preserva as informações de caminho especificadas para cada item no arquivo (use –no- related ou –no-R se desejar desativar isso).
  • A opção –dirs ( -d ) está implícita, o que criará diretórios especificados na lista no destino, em vez de ignorá-los ruidosamente (use –no-dirs ou –no-d se desejar desativar isso).
  • O comportamento da opção –archive ( -a ) não implica –recursive ( -r ), portanto, especifique-a explicitamente, se você desejar.
  • Esses efeitos colaterais alteram o estado padrão do rsync , de modo que a posição da opção –files-from na linha de comando não influencia a maneira como outras opções são analisadas (por exemplo, -a funciona da mesma maneira antes ou depois de –files -de , assim como –no-R e todas as outras opções).

Os nomes dos arquivos lidos no FILE são todos relativos ao diretório de origem; quaisquer barras principais são removidas e nenhuma referência ” .. ” pode ir mais alto que o diretório de origem. Por exemplo, tome este comando:

 rsync -a --files-from = / tmp / foo / usr remote: / backup

Se / tmp / foo contiver a string ” bin ” (ou mesmo ” / bin “), o diretório / usr / bin será criado como / backup / bin / no host remoto. Se ele contiver ” bin / ” (observe a barra à direita), o conteúdo imediato do diretório também será enviado (sem precisar ser explicitamente mencionado no arquivo; isso começou na versão 2.6.4). Nos dois casos, se a opção -r estiver ativada, a hierarquia inteira desse diretório também será transferida (lembre-se de que -r precisa ser especificado explicitamente com –files-from , pois não está implícito em -a) Além disso, observe que o efeito da opção –relative (ativada por padrão) – é duplicar apenas as informações do caminho que são lidas no arquivo; não força a duplicação do caminho da especificação de origem ( / usr neste caso).

Além disso, o arquivo –files-from pode ser lido no host remoto em vez do host local se você especificar um ” host: ” na frente do arquivo (o host deve corresponder a uma extremidade da transferência). Como atalho, você pode especificar apenas um prefixo de ” : ” para significar “usar a extremidade remota da transferência”. Por exemplo:

 rsync -a --files-from =: / caminho / lista de arquivos src: / / tmp / copy

Isso copiaria todos os arquivos especificados no arquivo / path / list- file localizado no host “src” remoto.

Se as opções –iconv e –protect-args forem especificadas e os nomes de arquivo –files-from estiverem sendo enviados de um host para outro, os nomes de arquivo serão traduzidos do conjunto de caracteres do host de envio para o conjunto de caracteres do host de recebimento.

NOTA : classificar a lista de arquivos na entrada –files-from ajuda o rsync a ser mais eficiente, pois evita visitar novamente os elementos do caminho que são compartilhados entre as entradas adjacentes. Se a entrada não for classificada, alguns elementos do caminho (diretórios implícitos) podem acabar sendo varridos várias vezes e o rsync acabará desduplicando-os depois que forem transformados em elementos da lista de arquivos.

-0, –de0

Isso informa ao rsync que os nomes de regras / arquivos que ele lê de um arquivo são finalizados por um caractere nulo (‘ \ 0 ‘), não por NL , CR ou CR + LF . Isso afeta –exclude-from , –include-from , –files-from e todos os arquivos mesclados especificados em uma regra –filter . Isso não afeta –cvs-exclude (uma vez que todos os nomes lidos em um arquivo .cvsignore são divididos em espaço em branco).

-s, –protect-args

Essa opção envia todos os nomes de arquivos e a maioria das opções para o rsync remoto, sem permitir que o shell remoto os interprete. Isso significa que os espaços não são divididos em nomes e os caracteres especiais não curinga não são traduzidos (como ~ , $ , ; , & , etc.). Os curingas são expandidos no host remoto pelo rsync (em vez do shell fazer isso).

Se você usar esta opção com –iconv , os argumentos relacionados ao lado remoto também serão traduzidos do conjunto de caracteres local para o remoto. A tradução acontece antes que os curingas sejam expandidos. Veja também a opção –files-from .

-T, –temp-dir = DIR

Esta opção instrui o rsync a usar o DIR como um diretório temporário ao criar cópias temporárias dos arquivos transferidos no lado de recebimento. O comportamento padrão é criar cada arquivo temporário no mesmo diretório que o arquivo de destino associado.

Essa opção é usada com mais freqüência quando a partição do disco de recebimento não possui espaço livre suficiente para armazenar uma cópia do maior arquivo da transferência. Nesse caso (ou seja, quando o diretório de trabalho estiver em uma partição de disco diferente), o rsync não poderá renomear cada arquivo temporário recebido por cima do arquivo de destino associado, mas deve copiá-lo no lugar. O rsync faz isso copiando o arquivo por cima do arquivo de destino, o que significa que o arquivo de destino conterá truncadodados durante esta cópia. Se isso não fosse feito dessa maneira (mesmo que o arquivo de destino tenha sido removido primeiro, os dados copiados localmente para um arquivo temporário no diretório de destino e renomeado para o local), seria possível que o arquivo antigo continuasse ocupando espaço em disco (se alguém o tivesse aberto) e, portanto, talvez não haja espaço suficiente para ajustar a nova versão no disco ao mesmo tempo.

Se você estiver usando esta opção por outros motivos que não a falta de espaço em disco, convém combiná-la com a opção –delay-updates , que garantirá que todos os arquivos copiados sejam colocados em subdiretórios na hierarquia de destino, aguardando o final da transferência. Se você não tiver espaço suficiente para duplicar todos os arquivos que chegam na partição de destino, outra maneira de dizer ao rsync que você não está muito preocupado com o espaço em disco é usar a opção –partial-dir com um caminho relativo; porque isso diz ao rsync que não há problema em esconder uma cópia de um único arquivo em um subdiretório na hierarquia de destino, rsyncusará o dir-parcial como uma área de preparação para trazer o arquivo copiado e renomeá-lo para o lugar a partir daí. Especificar um –partial-dir com um caminho absoluto não tem esse efeito colateral.

-y, –fuzzy

Esta opção informa ao rsync que ele deve procurar um arquivo base para qualquer arquivo de destino que esteja faltando. O algoritmo atual procura no mesmo diretório do arquivo de destino um arquivo que tenha tamanho idêntico e tempo de modificação, ou um arquivo com nome semelhante. Se encontrado, o rsync usa o arquivo de base difusa para tentar acelerar a transferência.

Observe que o uso da opção –delete pode se livrar de possíveis arquivos de correspondência difusa, portanto, use –delete-after ou especifique algumas exclusões de nomes de arquivos se você precisar evitar isso.

–compare-dest = DIR

Esta opção instrui o rsync a usar o DIR na máquina de destino como uma hierarquia adicional para comparar os arquivos de destino com as transferências (se os arquivos estiverem ausentes no diretório de destino). Se um arquivo for encontrado no DIR idêntico ao arquivo do remetente, o arquivo NÃO será transferido para o diretório de destino. Isso é útil para criar um backup escasso de apenas arquivos que foram alterados em um backup anterior.

A partir da versão 2.6.4, vários diretórios –compare-dest podem ser fornecidos, o que fará com que o rsync procure na lista na ordem especificada para uma correspondência exata. Se for encontrada uma correspondência que difere apenas em atributos, é feita uma cópia local e os atributos são atualizados. Se uma correspondência não for encontrada, um arquivo base de um dos DIRs será selecionado para tentar acelerar a transferência.

Se DIR é um caminho relativo, é relativo ao diretório de destino. Veja também –copy-dest e –link-dest .

–copy-dest = DIR

Essa opção se comporta como –compare-dest , mas o rsync também copiará arquivos inalterados encontrados no DIR para o diretório de destino usando uma cópia local. Isso é útil para fazer transferências para um novo destino, mantendo intactos os arquivos existentes e, em seguida, fazer uma transição em flash quando todos os arquivos foram transferidos com êxito.

Vários diretórios –copy-dest podem ser fornecidos, o que fará com que o rsync procure na lista na ordem especificada para um arquivo inalterado. Se uma correspondência não for encontrada, um arquivo base de um dos DIRs será selecionado para tentar acelerar a transferência.

Se DIR é um caminho relativo, é relativo ao diretório de destino. Veja também –compare-dest e –link-dest .

–link-dest = DIR

Essa opção se comporta como –copy-dest , mas os arquivos inalterados são vinculados do DIR ao diretório de destino. Os arquivos devem ser idênticos em todos os atributos preservados (por exemplo, permissões, possivelmente propriedade) para que os arquivos sejam vinculados. Um exemplo:

 rsync -av --link-dest = $ PWD / host prior_dir: src_dir / new_dir /

Se os arquivos não estiverem vinculando, verifique novamente seus atributos. Além disso, verifique se alguns atributos estão sendo forçados fora do controle do rsync , como uma opção de montagem que aperta a raiz para um único usuário ou monta uma unidade removível com propriedade genérica (como a opção “Ignorar propriedade neste volume” do OS X) .

A partir da versão 2.6.4, vários diretórios –link-dest podem ser fornecidos, o que fará com que o rsync procure na lista na ordem especificada para uma correspondência exata. Se for encontrada uma correspondência que difere apenas em atributos, é feita uma cópia local e os atributos são atualizados. Se uma correspondência não for encontrada, um arquivo base de um dos DIRs será selecionado para tentar acelerar a transferência.

Essa opção funciona melhor ao copiar para uma hierarquia de destino vazia, pois o rsync trata os arquivos existentes como definitivos (para que nunca apareça nos diretórios de destino do link quando já existe um arquivo de destino) e como maleável (para alterar os atributos de um diretório). arquivo de destino, que afeta todas as versões com links físicos).

Observe que, se você combinar essa opção com –ignore-times , o rsync não vinculará nenhum arquivo, pois somente vincula arquivos idênticos como substituto da transferência do arquivo, nunca como uma verificação adicional após a atualização do arquivo.

Se DIR é um caminho relativo, é relativo ao diretório de destino. Veja também –compare-dest e –copy-dest .

Observe que as versões do rsync anteriores à 2.6.1 tinham um bug que podia impedir –link-dest de funcionar corretamente para um não superusuário quando -o era especificado (ou implícito por -a ). Você pode solucionar esse bug evitando a opção -o ao enviar para um rsync antigo .

-z, –compress

Com esta opção, o rsync compacta os dados do arquivo conforme eles são enviados para a máquina de destino, o que reduz a quantidade de dados transmitidos; algo que é útil em uma conexão lenta.

Observe que essa opção geralmente obtém melhores taxas de compactação do que as obtidas usando um shell remoto ou um transporte de compactação, porque tira proveito das informações implícitas nos blocos de dados correspondentes que não são enviados explicitamente pela conexão.

Consulte a opção –skip-compress para obter a lista padrão de sufixos de arquivos que não serão compactados.

–compress-level = NUM

Defina explicitamente o nível de compactação a ser usado (consulte –compress ) em vez de deixá-lo como padrão. Se NUM for diferente de zero, a opção –compress está implícita.

–skip-compress = LIST

Substitua a lista de sufixos de arquivo que não serão compactados. A LIST deve ser um ou mais sufixos de arquivo (sem o ponto) separados por barras ( / ).

Você pode especificar uma sequência vazia para indicar que nenhum arquivo deve ser ignorado.

A correspondência simples de classe de caracteres é suportada: cada uma deve consistir em uma lista de letras entre colchetes (por exemplo, nenhuma classe especial, como ” [: alpha:] “, é suportada e ‘  ‘ não tem significado especial).

Os caracteres asterisco ( * ) e ponto de interrogação ( ? ) Não têm significado especial.

Aqui está um exemplo que especifica 6 sufixos a serem ignorados (já que 1 das 5 regras corresponde a 2 sufixos): –skip-compress = gz / jpg / mp [34] / 7z / bz2

A lista padrão de sufixos que não serão compactados é: 7z avi bz2 deb gz iso jpeg jpg mov mp3 mp4 ogg rpm tbz tgz z zip .

Esta lista será substituída pela sua lista –skip-compress em todas as situações, exceto uma: uma cópia de um daemon rsync adicionará seus sufixos ignorados à sua lista de arquivos sem compactação (e sua lista pode ser configurada para um padrão diferente) .

–numeric-ids

Com esta opção, o rsync transferirá IDs de grupo e de usuário numéricos, em vez de usar nomes de usuário e grupo e mapeá-los nas duas extremidades.

Por padrão, o rsync usará o nome de usuário e o nome do grupo para determinar qual propriedade fornecer aos arquivos. O uid especial 0 e o grupo especial 0 nunca são mapeados pelos nomes de usuário / grupo, mesmo que a opção –numeric-ids não esteja especificada.

Se um usuário ou grupo não tiver um nome no sistema de origem ou não corresponder no sistema de destino, o ID numérico do sistema de origem será usado. Veja também os comentários sobre a configuração “use chroot ” na página de manual rsyncd.conf para obter informações sobre como a configuração chroot afeta a capacidade do rsync de procurar os nomes dos usuários e grupos e o que você pode fazer sobre isso.

–timeout = TIMEOUT

Esta opção permite definir um tempo limite máximo de E / S em segundos. Se nenhum dado for transferido pelo tempo especificado, o rsync sairá. O padrão é 0, o que significa que não há tempo limite.

–contimeout

Esta opção permite que você defina a quantidade de tempo que o rsync aguardará pela conexão com um daemon do rsync . Se o tempo limite for atingido, o rsync será encerrado com um erro.

–endereço

Por padrão, o rsync se vincula ao endereço curinga ao se conectar a um daemon rsync . A opção –address permite especificar um endereço IP (ou nome de host ) específico para vincular. Veja também esta opção na seção – daemon mode.

–port = PORT

Isso especifica um número de porta TCP alternativo a ser usado, em vez do padrão 873. Isso é necessário apenas se você estiver usando a sintaxe de dois pontos e dois pontos ( : 🙂 para conectar-se a um daemon rsync (já que a sintaxe da URL tem uma maneira de especificar o porta como parte da URL). Veja também esta opção na seção – daemon mode.

–sockopts

Essa opção pode proporcionar diversão sem fim para pessoas que gostam de ajustar seus sistemas ao máximo. Você pode definir todos os tipos de opções de soquete que podem tornar as transferências mais rápidas (ou mais lentas!). Leia a página de manual da chamada do sistema setsockopt () para obter detalhes sobre algumas das opções que você pode definir. Por padrão, nenhuma opção de soquete especial está definida. Isso afeta apenas as conexões diretas de soquete com um daemon rsync remoto . Esta opção também existe na seção modo – daemon .

–blocking-io

Isso diz ao rsync para usar E / S de bloqueio ao iniciar um transporte de shell remoto. Se o shell remoto for rsh ou remsh, o rsync usará E / S de bloqueio, caso contrário, usará E / S sem bloqueio. Observe que o ssh prefere E / S sem bloqueio.

-i, –itemize-changes

Solicita uma lista detalhada e simples das alterações que estão sendo feitas em cada arquivo, incluindo alterações de atributo. É exatamente o mesmo que especificar –out-format = ‘% i% n% L’ . Se você repetir a opção, os arquivos inalterados também serão gerados, mas apenas se o rsync receptor for pelo menos a versão 2.6.7 (você pode usar -vv com versões mais antigas do rsync , mas isso também ativará a saída de outras mensagens detalhadas) .

O escape ” % i ” possui uma saída enigmática com 11 letras. O formato geral é como a sequência YXcstpoguax , em que Y é substituído pelo tipo de atualização que está sendo feita, X é substituído pelo tipo de arquivo e as outras letras representam atributos que podem ser gerados se estiverem sendo modificados.

Os tipos de atualização que substituem o Y são os seguintes:

  • Um < significa que um arquivo está sendo transferido para o host remoto (enviado).
  • > significa que um arquivo está sendo transferido para o host local (recebido).
  • c meios que uma alteração / criação local está a ocorrer para o produto (tal como a criação de uma lista telefónica ou a mudança de uma ligação simbólica, etc).
  • h significa que o item é um hard link para outro item (requer –hard-links ).
  • A. significa que o item não está sendo atualizado (embora possa ter atributos que estão sendo modificados).
  • * significa que o restante da área de saída discriminada contém uma mensagem (por exemplo, “excluindo”).

Os tipos de arquivo que substituem o X são: f para um arquivo, d para um diretório, um L para um link simbólico, um D para um dispositivo e um S para um arquivo especial (por exemplo, soquetes nomeados e fifos ).

As outras letras na sequência acima são as letras reais que serão exibidas se o atributo associado ao item estiver sendo atualizado ou um “.” para nenhuma mudança. Três exceções a isso são:

  1. um item recém-criado substitui cada letra por um ” + “,
  2. um item idêntico substitui os pontos por espaços e
  3. um atributo desconhecido substitui cada letra por um ” ? ” (isso pode acontecer ao conversar com um rsync mais antigo ).

O atributo que está associado a cada letra é o seguinte:

  • Um c significa que um arquivo comum possui uma soma de verificação diferente (requer –checksum ) ou que um link simbólico, dispositivo ou arquivo especial possui um valor alterado. Observe que se você estiver enviando arquivos para um rsync antes da 3.0.1, esse sinalizador de alteração estará presente apenas para arquivos regulares com soma de verificação diferente.
  • s significa que o tamanho de um arquivo regular é diferente e será atualizado pela transferência de arquivos.
  • t significa que o tempo de modificação é diferente e está sendo atualizado para o valor do remetente (requer –times ). Um valor alternativo de T significa que o tempo de modificação será definido como o tempo de transferência, o que acontece quando um arquivo / link simbólico / dispositivo é atualizado sem –times e quando um link simbólico é alterado e o receptor não pode definir seu horário. Nota: ao usar um cliente rsync 3.0.0, você poderá ver o sinalizador s combinado com t em vez do sinalizador T apropriado para esta falha de configuração de tempo.
  • p significa que as permissões são diferentes e estão sendo atualizados para o valor do remetente (requer –perms ).
  • Um o significa que o proprietário é diferente e está sendo atualizado com o valor do remetente (requer privilégios de proprietário e superusuário).
  • Um g significa que o grupo é diferente e está sendo atualizado para o valor do remetente (requer –group ea autoridade para definir o grupo).
  • O slot u é reservado para uso futuro.
  • A significa que as informações da ACL foram alteradas.
  • x significa que as informações do atributo estendido foram alteradas.

Outra saída é possível: ao excluir arquivos, o ” % i ” exibirá a string ” * delete ” para cada item que está sendo removido (supondo que você esteja falando com um rsync recente o suficiente para que ele registre exclusões em vez de produzi-las como uma mensagem detalhada).

–out-format = FORMAT

Isso permite especificar exatamente o que o cliente rsync gera para o usuário por atualização. O formato é uma sequência de texto que contém sequências de escape de um único caractere, prefixadas com um caractere de porcentagem ( % ). Um formato padrão de ” % n% L ” será assumido se -v for especificado (que relata o nome do arquivo e, se o item for um link, para onde ele aponta). Para obter uma lista completa dos possíveis caracteres de escape, consulte a configuração “formato de log” na página de manual do rsyncd.conf .

A especificação da opção –out-format mencionará cada arquivo, diretório, etc. atualizado de maneira significativa (um arquivo transferido, um link simbólico / dispositivo recriado ou um diretório tocado ). Além disso, se o escape itemize-changes ( % i ) estiver incluído na string (por exemplo, se a opção –itemize-changes foi usada), o registro de nomes aumentará para mencionar qualquer item que seja alterado de alguma maneira (desde que como o lado receptor é pelo menos 2.6.4). Veja a opção –itemize-changes para obter uma descrição da saída de ” % i “.

O rsync produzirá a string de formato externo antes da transferência de um arquivo, a menos que uma das escapes da estatística de transferência seja solicitada; nesse caso, o log é feito no final da transferência do arquivo. Quando esse registro tardio estiver em vigor e –progress também for especificado, o rsync também emitirá o nome do arquivo que está sendo transferido antes de suas informações de progresso (seguido, é claro, pela saída de formato externo).

–log-file = FILE

Esta opção faz com que o rsync registre o que está fazendo em um arquivo. Isso é semelhante ao log que um daemon faz, mas pode ser solicitado para o lado do cliente e / ou o servidor de uma transferência não daemon. Se especificado como uma opção do cliente, o log de transferência será ativado com um formato padrão ” % i% n% L “. Consulte a opção –log-file-format se desejar substituir isso.

Aqui está um exemplo de comando que solicita ao lado remoto para registrar o que está acontecendo:

 rsync -av --rsync-path = "rsync --log-arquivo = / tmp / rlog" src / dest /

Isso é muito útil se você precisar depurar por que uma conexão está sendo fechada inesperadamente.

–log-file-format = FORMAT

Isso permite que você especifique exatamente qual log por atualização é colocado no arquivo especificado pela opção –log-file (que também deve ser especificada para que essa opção tenha efeito). Se você especificar uma sequência vazia, os arquivos atualizados não serão mencionados no arquivo de log. Para obter uma lista dos possíveis caracteres de escape, consulte a configuração “formato de log” na página de manual do rsyncd.conf .

FORMAT padrão usado se –log-file for especificado e esta opção não for for ‘ % i% n% L ‘.

–Estatísticas

Isso instrui o rsync a imprimir um conjunto detalhado de estatísticas sobre a transferência de arquivos, permitindo que você informe a eficácia do algoritmo de transferência delta do rsync para seus dados.

As estatísticas atuais são as seguintes:

  • Número de arquivos é a contagem de todos os “arquivos” (no sentido genérico), que inclui diretórios, links simbólicos etc.
  • Número de arquivos transferidos é a contagem de arquivos normais que foram atualizados pelo algoritmo delta-transfer do rsync , que não inclui diretórios, links simbólicos criados etc.
  • O tamanho total do arquivo é a soma total de todos os tamanhos de arquivo na transferência. Isso não conta com nenhum tamanho para diretórios ou arquivos especiais, mas inclui o tamanho dos links simbólicos.
  • O tamanho total do arquivo transferido é a soma total de todos os tamanhos de arquivos apenas para os arquivos transferidos.
  • Dados literais são quantos dados de atualização de arquivo incomparáveis ​​tivemos que enviar ao destinatário para que ele recriasse os arquivos atualizados.
  • Dados correspondentes são quantos dados o receptor obteve localmente ao recriar os arquivos atualizados.
  • O tamanho da lista de arquivos é o tamanho dos dados da lista de arquivos quando o remetente os enviou ao destinatário. Isso é menor que o tamanho da memória da lista de arquivos devido a alguma compactação de dados duplicados quando o rsync envia a lista.
  • O tempo de geração da lista de arquivos é o número de segundos que o remetente passou criando a lista de arquivos. Isso requer um rsync moderno no lado de envio para que isso esteja presente.
  • O tempo de transferência da lista de arquivos é o número de segundos que o remetente passou enviando a lista de arquivos para o destinatário.
  • O total de bytes enviados é a contagem de todos os bytes que o rsync enviou do lado do cliente para o lado do servidor .
  • O total de bytes recebidos é a contagem de todos os bytes que não são de mensagens que rsync receberam pelo lado do cliente do lado do servidor. Bytes “sem mensagem” significa que não contamos os bytes de uma mensagem detalhada que o servidor nos enviou, o que torna as estatísticas mais consistentes.

Saída de -8, –8 bits

Isso diz ao rsync para deixar todos os caracteres de alto bit sem escape na saída, em vez de tentar testá-los para ver se eles são válidos no código de idioma atual e escaparem dos inválidos. Todos os caracteres de controle (mas nunca as guias) são sempre escapados, independentemente da configuração desta opção.

O idioma de escape iniciado em 2.6.7 é produzir uma barra invertida literal ( \ ) e um hash ( # ), seguidos por exatamente três dígitos octais. Por exemplo, uma nova linha seria exibida como ” \ # 012 “. Uma barra invertida literal que está em um nome de arquivo não é escapada, a menos que seja seguida por um hash e três dígitos (0-9).

-h, – legível por humanos

Números de saída em um formato mais legível por humanos. Isso gera grandes números de saída usando unidades maiores, com um sufixo K , M ou G. Se essa opção foi especificada uma vez, essas unidades são K (1000), M (1000 * 1000) e G (1000 * 1000 * 1000); se a opção for repetida, as unidades são potências de 1024 em vez de 1000.

–parcial

Por padrão, o rsync excluirá qualquer arquivo parcialmente transferido se a transferência for interrompida. Em algumas circunstâncias, é mais desejável manter os arquivos parcialmente transferidos. O uso da opção –partial diz ao rsync para manter o arquivo parcial, o que deve tornar a transferência subseqüente do restante do arquivo muito mais rápida.

–partial-dir = DIR

Uma maneira melhor de manter arquivos parciais do que a opção –partial é especificar um DIR que será usado para armazenar os dados parciais (em vez de gravá-los no arquivo de destino). Na próxima transferência, o rsync usará um arquivo encontrado nesse diretório como dados para acelerar o reinício da transferência e, em seguida, excluí-lo depois de cumprir seu objetivo.

Observe que se –whole-file for especificado (ou implícito), qualquer arquivo dir-parcial encontrado para um arquivo que está sendo atualizado será removido (uma vez que o rsync está enviando arquivos sem usar o algoritmo de transferência delta do rsync ).

O rsync criará o DIR se ele estiver ausente (apenas o último diretório, não o caminho inteiro). Isso facilita o uso de um caminho relativo (como ” –partial-dir = .rsync-parcial “) para que o rsync crie o diretório parcial no diretório do arquivo de destino, quando necessário, e remova-o novamente quando o arquivo parcial esta deletado.

Se o valor dir-parcial não for um caminho absoluto, o rsync adicionará uma regra de exclusão ao final de todas as exclusões existentes. Isso impedirá o envio de arquivos de diretório parcial que possam existir no lado de envio e também evitará a exclusão prematura de itens de diretório parcial no lado de recebimento. Um exemplo: a opção –partial-dir acima adicionaria o equivalente a ” -f ‘-p .rsync-parcial /’ ” no final de qualquer outra regra de filtro.

Se você está fornecendo excluir regras, você pode precisar adicionar uma regra de exclusão / esconder / proteção para o parcial-dir porque a regra automaticamente acrescentado pode ser ineficaz no final de suas outras regras, ou você pode querer substituir rsync ‘s excluir escolha. Por exemplo, se você quiser fazer com que o rsync limpe todos os diretórios parciais restantes que estejam por aí, especifique –delete-after e adicione uma regra de filtro de “risco”, por exemplo, -f ‘R .rsync -partial / ‘ . Evite usar –delete-before ou –delete-durante, a menos que você não precise do rsync para usar qualquer um dos dados de diretores parciais restantes durante a execução atual.

IMPORTANTE: o –partial-dir não deve ser gravável por outros usuários ou é um risco à segurança. Por exemplo, evite ” / tmp “.

Você também pode definir o valor parcial-dir da variável de ambiente RSYNC_PARTIAL_DIR . Definir isso no ambiente não força a ativação do –partial , mas afeta aonde os arquivos parciais vão quando o –partial é especificado. Por exemplo, em vez de usar –partial-dir = .rsync-tmp junto com –progress , você pode definir RSYNC_PARTIAL_DIR = .rsync-tmp em seu ambiente e, em seguida, basta usar a opção -P para ativar o uso do. dir rsync-tmp para transferências parciais. As únicas vezes que a opção –partial não procura esse valor de ambiente é quando –inplace foi especificado (uma vez que –inplaceentra em conflito com –partial-dir ) e também quando –delay-updates foi especificado (veja abaixo).

Para os propósitos da configuração de “opções de recusa” do daemon-config, –partial-dir não implica –partial . Isso é para que uma recusa da opção –partial possa ser usada para impedir a substituição de arquivos de destino com uma transferência parcial, enquanto ainda permite o idioma mais seguro fornecido pelo –partial-dir .

–delay-updates

Essa opção coloca o arquivo temporário de cada arquivo atualizado em um diretório de espera até o final da transferência, momento em que todos os arquivos são renomeados para o lugar em rápida sucessão. Isso tenta tornar a atualização dos arquivos um pouco mais atômica. Por padrão, os arquivos são colocados em um diretório chamado ” . ~ Tmp ~ ” no diretório de destino de cada arquivo, mas se você especificou a opção –partial-dir , esse diretório será usado. Veja os comentários na seção –partial-dir para uma discussão sobre como esse diretório ” . ~ Tmp ~ ” será excluído da transferência e o que você pode fazer se quiser que o rsync limpe antigos ” . ~ Tmp ~ ” dirs isso pode estar por aí.Conflitos com–inplace e –append .

Essa opção usa mais memória no lado de recebimento (um bit por arquivo transferido) e também requer espaço livre em disco suficiente no lado de recebimento para armazenar uma cópia adicional de todos os arquivos atualizados. Observe também que você não deve usar um caminho absoluto para –partial-dir, a menos que não haja chance de nenhum dos arquivos na transferência ter o mesmo nome (pois todos os arquivos atualizados serão colocados em um único diretório se o caminho for absoluto) e não há pontos de montagem na hierarquia (pois as atualizações atrasadas falharão se não puderem ser renomeadas no lugar).

Veja também o script perl “atomic-rsync” no subdiretório “support” para um algoritmo de atualização ainda mais atômico (ele usa –link-dest e uma hierarquia paralela de arquivos).

-m, –prune-empty-dirs

Esta opção diz ao rsync receptor para se livrar dos diretórios vazios da lista de arquivos, incluindo diretórios aninhados que não têm filhos que não sejam do diretório. Isso é útil para evitar a criação de vários diretórios inúteis quando o rsync remetente estiver recursivamente varrendo uma hierarquia de arquivos usando regras de inclusão / exclusão / filtro.

Observe que o uso de regras de transferência, como a opção –min-size , não afeta o que entra na lista de arquivos e, portanto, não deixa os diretórios vazios, mesmo que nenhum dos arquivos em um diretório corresponda à regra de transferência.

Como a lista de arquivos está realmente sendo removida, essa opção também afeta quais diretórios são excluídos quando uma exclusão está ativa. No entanto, lembre-se de que arquivos e diretórios excluídos podem impedir que itens existentes sejam excluídos devido à exclusão de ocultar arquivos de origem e proteger arquivos de destino. Consulte a opção de regra de filtro perecível para saber como evitar isso.

Você pode impedir a remoção de determinados diretórios vazios da lista de arquivos usando um filtro global de “proteção”. Por exemplo, essa opção garantiria que o diretório ” emptydir ” fosse mantido na lista de arquivos:

  --filter 'protect emptydir /'

Aqui está um exemplo que copia todos os arquivos .pdf em uma hierarquia, criando apenas os diretórios de destino necessários para armazenar os arquivos .pdf e garante que todos os arquivos e diretórios supérfluos no destino sejam removidos (observe o filtro oculto dos não-diretórios sendo usados em vez de uma exclusão):

  rsync -avm --del --include = '*. pdf' -f 'ocultar ,!  * / 'src / dest

Se você não deseja remover arquivos de destino supérfluos, as opções mais antigas de ” –include = ‘* /’ –exclude = ‘*’ ” funcionariam bem no lugar do filtro de ocultação (se isso for mais natural para você).

–progresso

Esta opção informa ao rsync para imprimir informações mostrando o andamento da transferência. Isso dá ao usuário entediado algo para assistir. Implica –verbose se ainda não foi especificado.

Enquanto o rsync está transferindo um arquivo comum, ele atualiza uma linha de progresso semelhante a esta: 782448 63% 110.64kB / s 0:00:04

Neste exemplo, o receptor reconstruiu 782448 bytes ou 63% do arquivo do remetente, que está sendo reconstruído a uma taxa de 110,64 kilobytes por segundo , e a transferência será concluída em 4 segundos se a taxa atual for mantida até o final.

Essas estatísticas podem ser enganosas se o algoritmo delta-transfer do rsync estiver em uso. Por exemplo, se o arquivo do remetente consistir no arquivo base seguido por dados adicionais, a taxa relatada provavelmente cairá drasticamente quando o destinatário acessar os dados literais e a transferência provavelmente levará muito mais tempo para ser concluída do que o destinatário estimado como estava. finalizando a parte correspondente do arquivo.

Quando a transferência do arquivo termina, o rsync substitui a linha de progresso por uma linha de resumo semelhante a esta: 1238099 100% 146.38kB / s 0:00:08 (xfer # 5, verificação = 169/396)

Neste exemplo, o arquivo tinha 1238099 bytes de comprimento no total, a taxa média de transferência de todo o arquivo foi de 146,38 kilobytes por segundo nos 8 segundos necessários para concluir, foi a 5ª transferência de um arquivo regular durante o rsync atual sessão e há mais 169 arquivos para o receptor verificar (para ver se estão atualizados ou não) restantes do total de 396 arquivos na lista de arquivos.

-P

A opção -P é equivalente a –partial –progress . Seu objetivo é facilitar a especificação dessas duas opções para uma transferência longa que pode ser interrompida.

–password-file

Essa opção permite fornecer uma senha em um arquivo para acessar um daemon rsync . O arquivo não deve ser legível mundialmente. Ele deve conter apenas a senha como a primeira linha do arquivo (todas as outras linhas são ignoradas).

Esta opção não fornece uma senha para um transporte remoto de shell, como ssh; para aprender como fazer isso, consulte a documentação do shell remoto. Ao acessar um daemon rsync usando um shell remoto como transporte, esta opção somente entra em vigor após o shell remoto concluir sua autenticação (ou seja, se você também especificou uma senha no arquivo de configuração do daemon).

–list-only

Esta opção fará com que os arquivos de origem sejam listados em vez de transferidos. Esta opção é inferida se houver um único argumento de origem e nenhum destino especificado, portanto, seus principais usos são transformar um comando de cópia que inclua um argumento de destino em um comando de listagem de arquivos ou, secundariamente, para poder especificar mais de uma origem argumento (nota: lembre-se de incluir o destino). Cuidado: lembre-se de que um argumento de origem com um curinga é expandido pelo shell em vários argumentos, portanto, nunca é seguro tentar listar esse argumento sem usar esta opção. Por exemplo:

  rsync -av - somente lista foo * dest /

Nota de compatibilidade: ao solicitar uma listagem remota de arquivos de um rsync versão 2.6.3 ou anterior, você poderá encontrar um erro se solicitar uma listagem não recursiva. Isso ocorre porque uma lista de arquivos implica a opção –dirs sem – recursiva , e os rsync mais antigos não têm essa opção. Para evitar esse problema, especifique a opção –no-dirs (se você não precisar expandir o conteúdo de um diretório) ou ative a recursão e exclua o conteúdo dos subdiretórios: -r –exclude = ‘/ * / * ‘

–bwlimit = KBPS

Esta opção permite especificar uma taxa de transferência máxima em kilobytes por segundo. Essa opção é mais eficaz ao usar o rsync com arquivos grandes (vários megabytes e mais). Devido à natureza das transferências do rsync , os blocos de dados são enviados; se o rsync determinar que a transferência foi muito rápida, ele aguardará antes de enviar o próximo bloco de dados. O resultado é uma taxa de transferência média igual ao limite especificado. Um valor zero especifica sem limite.

–write-batch = FILE

Grave um arquivo que possa ser aplicado posteriormente em outro destino idêntico com –read-batch . Consulte a opção –only-write-batch .

–only-write-batch = FILE

Funciona como –write-batch , exceto que nenhuma atualização é feita no sistema de destino ao criar o lote. Isso permite transportar as alterações para o sistema de destino por outros meios e aplicá- las via –read-batch .

Observe que você pode gravar o lote diretamente em algumas mídias portáteis: se essa mídia estiver cheia antes do final da transferência, basta aplicar essa transferência parcial ao destino e repetir todo o processo para obter o restante alterações (desde que você não se importe com um sistema de destino parcialmente atualizado enquanto o ciclo de várias atualizações estiver acontecendo).

Além disso, observe que você só economiza largura de banda ao enviar alterações para um sistema remoto, pois isso permite que os dados em lote sejam desviados do remetente para o arquivo em lotes sem precisar passar pelo fio para o receptor (ao puxar, o remetente é remoto, e, portanto, não pode gravar o lote).

–read-batch = FILE

Aplique todas as alterações armazenadas no FILE, um arquivo gerado anteriormente pelo –write-batch . Se FILE for  , os dados do lote serão lidos a partir da entrada padrão.

–protocol = NUM

Força uma versão mais antiga do protocolo a ser usada. Isso é útil para criar um arquivo em lotes compatível com uma versão mais antiga do rsync . Por exemplo, se o rsync 2.6.4 estiver sendo usado com a opção –write-batch , mas o rsync 2.6.3 for o que será usado para executar a opção –read-batch , você deverá usar ” –protocol = 28 ” ao criar o arquivo em lotes para forçar a versão mais antiga do protocolo a ser usada no arquivo em lotes (supondo que você não possa atualizar o rsync no sistema de leitura).

–iconv = CONVERT_SPEC

O rsync pode converter nomes de arquivos entre conjuntos de caracteres usando esta opção. O uso de um CONVERT_SPEC de ” . ” Informa ao rsync para procurar o conjunto de caracteres padrão por meio da configuração de localidade. Como alternativa, você pode especificar completamente o que fazer, fornecendo um conjunto de caracteres local e remoto separados por vírgula na ordem, para garantir que a opção permaneça a mesma, independentemente de você estar empurrando ou puxando arquivos. Por fim, você pode especificar –no-iconv ou um CONVERT_SPEC de ”  ” para desativar qualquer conversão. A configuração padrão desta opção é específica do site e também pode ser afetada pela variável de ambiente RSYNC_ICONV .

Para obter uma lista dos nomes de charset suportados pela sua biblioteca iconv local, você pode executar ” iconv –list “.

Se você especificar a opção –protect-args ( -s ), o rsync converterá os nomes de arquivo que você especificar na linha de comando que está sendo enviada para o host remoto. Veja também a opção –files-from .

Observe que o rsync não faz nenhuma conversão de nomes nos arquivos de filtro (incluindo arquivos de inclusão / exclusão). Cabe a você garantir a especificação de regras de correspondência que possam corresponder nos dois lados da transferência. Por exemplo, você pode especificar regras adicionais de inclusão / exclusão se houver diferenças nos nomes dos arquivos nos dois lados que precisam ser contabilizadas.

Quando você passa uma opção –iconv para um daemon rsync que permite, o daemon usa o charset especificado em seu parâmetro de configuração “charset”, independentemente do charset remoto que você realmente passa. Portanto, você pode se sentir à vontade para especificar apenas o conjunto de caracteres local para uma transferência de daemon (por exemplo, –iconv = utf8 ).

-4, –ipv4 ou -6, –ipv6

Informa ao rsync que prefere IPv4 / IPv6 ao criar soquetes. Isso afeta apenas os soquetes sobre os quais o rsync tem controle direto, como o soquete de saída ao entrar em contato diretamente com um daemon rsync . Veja também essas opções na seção modo – daemon .

Se o rsync for cumprido sem suporte para IPv6, a opção –ipv6 não terá efeito. A saída –version dirá se este é o caso.

–checksum-seed = NUM

Defina a semente da soma de verificação como o número inteiro NUM. Essa semente de soma de verificação de 4 bytes é incluída em cada cálculo de soma de verificação de bloco e arquivo. Por padrão, a semente da soma de verificação é gerada pelo servidor e o padrão é a hora atual (). Essa opção é usada para definir uma semente de soma de verificação específica, útil para aplicativos que desejam somas de verificação de blocos e arquivos repetíveis ou no caso em que o usuário deseja uma semente de soma de verificação mais aleatória. Definir NUM como 0 faz com que o rsync use o padrão time () para a semente da soma de verificação.

Opções de Daemon

As opções permitidas ao iniciar um daemon rsync são as seguintes:

–daemon

Isso informa ao rsync que ele deve ser executado como um daemon. O daemon que você começa a executar pode ser acessado usando um cliente rsync usando o host :: module ou rsync: // host / module / syntax.

Se a entrada padrão for um soquete, o rsync assumirá que está sendo executado pelo inetd; caso contrário, será desconectado do terminal atual e se tornará um daemon em segundo plano. O daemon lerá o arquivo de configuração ( rsyncd.conf ) em cada conexão feita por um cliente e responderá às solicitações de acordo. Veja a página de manual rsyncd.conf para mais detalhes.

–endereço

Por padrão, o rsync se vincula ao endereço curinga quando executado como um daemon com a opção –daemon . A opção –address permite especificar um endereço IP (ou nome de host) específico para vincular. Isso possibilita a hospedagem virtual em conjunto com a opção –config . Veja também a opção global “address” na página de manual rsyncd.conf.

–bwlimit = KBPS

Esta opção permite especificar uma taxa de transferência máxima em kilobytes por segundo para os dados que o daemon envia. O cliente ainda pode especificar um valor –bwlimit menor, mas o valor solicitado será arredondado para baixo se tentar excedê-lo. Consulte a versão do cliente desta opção (acima) para obter mais detalhes.

–config = FILE

Isso especifica um arquivo de configuração alternativo ao padrão. Isso é relevante apenas quando –daemon é especificado. O padrão é /etc/rsyncd.conf , a menos que o daemon esteja executando um programa shell remoto e o usuário remoto não seja o superusuário; nesse caso, o padrão é rsyncd.conf no diretório atual (normalmente $ HOME ).

– sem desanexar

Ao executar como um daemon, essa opção instrui o rsync a não se desconectar e se tornar um processo em segundo plano. Esta opção é necessária ao executar como um serviço no Cygwin e também pode ser útil quando o rsync é supervisionado por um programa como daemontools ou o System Resource Controller do AIX. –no-desanexar também é recomendado quando o rsync é executado em um depurador. Esta opção não tem efeito se o rsync for executado a partir do inetd ou sshd.

–port = PORT

Isso especifica um número de porta TCP alternativo para o daemon escutar, em vez do padrão 873. Consulte também a opção global “port” na página de manual do rsyncd.conf.

–log-file = FILE

Esta opção informa ao daemon rsync para usar o nome do arquivo de log fornecido em vez de usar a configuração “arquivo de log” no arquivo de configuração.

–log-file-format = FORMAT

Esta opção informa ao daemon rsync para usar a sequência FORMAT especificada em vez de usar a configuração “formato de log” no arquivo de configuração. Também habilita o “log de transferência”, a menos que a string esteja vazia; nesse caso, o log de transferência está desativado.

–sockopts

Isso substitui a configuração de opções de soquete no arquivo rsyncd.conf e tem a mesma sintaxe.

-v, –verbose

Esta opção aumenta a quantidade de informações que o daemon registra durante sua fase de inicialização. Depois que o cliente se conectar, o nível de verbosidade do daemon será controlado pelas opções que o cliente usou e pela configuração “max verbosity” na seção de configuração do módulo.

-4, –ipv4 ou -6, –ipv6

Diz ao rsync que prefere o IPv4 / IPv6 ao criar os soquetes de entrada que o daemon rsync usará para escutar as conexões. Uma dessas opções pode ser necessária em versões mais antigas do Linux para solucionar um bug do IPv6 no kernel (se você vir um erro “o endereço já está em uso” quando nada mais estiver usando a porta, tente especificar –ipv6 ou –ipv4 ao iniciar o daemon).

Se o rsync for cumprido sem suporte para IPv6, a opção –ipv6 não terá efeito. A saída –version dirá se este é o caso.

-h, –help

Quando especificado após –daemon , imprima uma pequena página de ajuda descrevendo as opções disponíveis para iniciar um daemon rsync .

Links Simbólicos

Três comportamentos básicos são possíveis quando o rsync encontra um link simbólico no diretório de origem.

Por padrão, os links simbólicos não são transferidos. Uma mensagem “ignorando o arquivo não-regular” é emitida para todos os links simbólicos existentes.

Se –links for especificado, os links simbólicos serão recriados com o mesmo destino no destino. Observe que –archive implica –links .

Se –copy-links for especificado, os links simbólicos serão “recolhidos” copiando o referente, em vez do link simbólico.

O Rsync também pode distinguir links simbólicos “seguros” e “não seguros”. Um exemplo em que isso pode ser usado é um espelho do site que deseja garantir que o módulo rsync copiado não inclua links simbólicos para / etc / passwd na seção pública do site. O uso de –copy-unsafe-links fará com que todos os links sejam copiados como o arquivo para o qual eles apontam no destino. O uso de –safe-links fará com que os links não seguros sejam completamente omitidos. Observe que você deve especificar –links para –safe-links para ter algum efeito.

Os links simbólicos são considerados inseguros se forem links simbólicos absolutos (iniciam com / ), vazios ou se contêm componentes ” .. ” suficientes para ascender do diretório que está sendo copiado.

Aqui está um resumo de como as opções de link simbólico são interpretadas. A lista está em ordem de precedência; portanto, se sua combinação de opções não for mencionada, use a primeira linha que é um subconjunto completo de suas opções:

–copy-links

Transforme todos os links simbólicos em arquivos normais (não deixando links simbólicos para outras opções afetarem).

–links, –copy-inseguro-links

Transforme todos os links simbólicos inseguros em arquivos e duplique todos os links simbólicos seguros.

–copy-inseguro-links

Transforme todos os links simbólicos inseguros em arquivos, pule ruidosamente todos os links simbólicos seguros.

–links – links seguros

Duplicar links simbólicos seguros e pular os inseguros.

–links

Duplique todos os links simbólicos.

variáveis ​​ambientais

CVSIGNORE

A variável de ambiente CVSIGNORE complementa todos os padrões de ignorância nos arquivos .cvsignore . Veja a opção –cvs-exclude para mais detalhes.

RSYNC_ICONV

Especifique uma configuração –iconv padrão usando essa variável de ambiente. (Primeiro suportado no 3.0.0.)

RSYNC_RSH

A variável de ambiente RSYNC_RSH permite substituir o shell padrão usado como o transporte para o rsync . As opções de linha de comando são permitidas após o nome do comando, assim como na opção -e .

RSYNC_PROXY

A variável de ambiente RSYNC_PROXY permite redirecionar seu cliente rsync para usar um proxy da web ao conectar-se a um daemon rsync. Você deve configurar RSYNC_PROXY como um nome de host: par de portas .

RSYNC_PASSWORD

Definir RSYNC_PASSWORD como a senha necessária permite executar conexões rsync autenticadas em um daemon rsync sem intervenção do usuário. Observe que isso não fornece uma senha para um transporte shell remoto, como ssh ; para aprender como fazer isso, consulte a documentação do shell remoto.

USUÁRIO ou LOGNAME

As variáveis ​​de ambiente USER ou LOGNAME são usadas para determinar o nome de usuário padrão enviado para um daemon rsync. Se nenhum estiver definido, o nome de usuário será padronizado como “ninguém”.

CASA

A variável de ambiente HOME é usada para encontrar o arquivo .cvsignore padrão do usuário.

Exemplos

  rsync -t * .htm esperança: public_html /

Use rsync para transferir todos os arquivos .htm para o diretório public_html no sistema denominado esperança .

rcp – Copia arquivos para ou de um sistema remoto.

25 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.