lsyncd: É possível sincronizar arquivos individuais de uma lista?

1

Eu quero sincronizar certos arquivos de um sistema Linux para outro usando o lsyncd. Os arquivos não estão confinados em um diretório, nem eu quero todos os arquivos de um diretório.

Especificamente, estou tentando garantir que certos arquivos do servidor de e-mail sejam mantidos em sincronia com um servidor em espera. Aqui está uma lista:

/etc/postfix/master.cf /etc/postfix/main.cf /etc/postfix/blocked_senders /etc/postfix/relay_recipients /etc/mail/spamassassin/local.cf

Posso especificar todos esses arquivos em uma única sub-rotina de sincronização por meio de algum tipo de lista ou precisarei configurar cada arquivo individual em sub-rotinas de sincronização separadas?

    
por Aditya K 05.06.2015 / 12:18

3 respostas

3

Sugiro

--[[
The _extra= hack allows synchronization of individual files. Use one sync {}
stanza per source directory. Use additional --include= lines to handle multiple
files within a single source directory.
]]

sync {
  default.rsync,
  delay = 0,
  source = "/etc/postfix/",
  target = "standby.example.com:/etc/postfix/",
  rsync = {
    _extra = {
      "--include=master.cf",
      "--include=main.cf",
      "--include=blocked_senders",
      "--include=relay_recipients",
      "--exclude=*",
    }
  }
}

sync {
  default.rsync,
  delay = 0,
  source = "/etc/mail/spamassassin/",
  target = "standby.example.com:/etc/mail/spamassassin/",
  rsync = {
    _extra = {
      "--include=local.cf",
      "--exclude=*",
    }
  }
}

Acho que uma estrofe {} de sincronização é necessária para cada diretório de origem, pois o lsyncd detecta alterações de forma eficiente por meio de gatilhos estabelecidos no nível do diretório.

    
por 09.03.2017 / 00:30
1

Embora este seja um antigo, eu gostaria de colocar a resposta de David em um contexto "lsyncd". Uma configuração de amostra pode ter essa aparência (testada e confirmada em um dos meus sistemas):

sync {
   default.rsyncssh,
   source = "/tmp",
   host = "gw2",
   targetdir = "/tmp",
   delete = false,
   rsync = { _extra = { "--files-from=/etc/lsyncd/files.list" } }
}

Com o arquivo /etc/lsyncd/files.list contendo os arquivos que você deseja sincronizar com os caminhos relativos ao "destino" (/ tmp aqui).

    
por 19.05.2016 / 20:21
0

Salve-os em um arquivo file_list

rsync -a --files-from=file_list /source /dest

Se apenas esses 5 arquivos, então eu acho que você também pode usar as opções -c (checksum check) e -z (compression).

    
por 28.07.2015 / 08:42