Alguém pode me dizer o que isso faz?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Será que apagar bkp01
e offbk2
e envia um registro para offbkp01.log
?
Alguém pode me dizer o que isso faz?
rsync -uva --delete /srv/bkp01 /srv/offbk2/ > ~/offbkp01.log
Será que apagar bkp01
e offbk2
e envia um registro para offbkp01.log
?
Respostas:
Para dividir isso em partes, há duas seções principais, seguidas por um resumo e notas:
rsync
comando:rsync -uva --delete /srv/bkp01 /srv/offbk2/
rsync-command > ~/offbkp01.log
rsync
comando:rsync
- Presumo que isso não precise de explicação (mas fornecerá se solicitado).-uva
- Um conjunto de opções de caracteres únicos, sendo (formulário curto e longo mostrado):
-u
--update
- Informa ao rsync que todas as modificações devem ser aplicadas apenas aos arquivos no destino com a mesma idade (e tamanhos diferentes) ou mais antigos que os da fonte. Ou seja, o rsync deve transmitir apenas as alterações da fonte que atualizaria o destino, mas não deve fazer alterações que tornariam um arquivo de destino uma versão mais antiga.
Existem algumas exceções. As diferenças de tipo (por exemplo, um é um arquivo e o outro um diretório) causarão uma atualização independentemente das datas. Links simbólicos e outros arquivos especiais ignoram esta opção. E, o mais importante, isso não afeta quais arquivos são excluídos.
-v
--verbose
- Aumenta a quantidade de informações que o rsync imprime durante a execução. Sem isso, o rsync imprimirá (quase?) Nada. Com esta opção como está, o rsync informa quais arquivos estão sendo transferidos e coloca um resumo no final. Mais v
s aumentam as informações impressas, embora a página de manual diga que mais de dois v
s devem ser usados apenas durante a depuração. -a
--archive
- Isso é equivalente a várias outras opções ( -rlptgD
) empacotadas juntas. Como o nome longo sugere, é uma maneira rápida de definir muitas opções comuns para arquivar arquivos e diretórios. Será:-r
--recursive
- Diz ao rsync para copiar diretórios recursivamente. Sem isso, ou a -d
--dirs
opção mais específica , o rsync simplesmente ignoraria os diretórios encontrados (e informaria sobre isso em sua saída). -l
--links
- Quando a origem for um link simbólico, crie um link simbólico no destino. Dependendo de outras opções, os links simbólicos podem, de outra forma, ser ignorados ou transformados em uma cópia separada completa (por exemplo, um diretório verdadeiro com conteúdo (ou outra cópia do arquivo) em vez do link simbólico). -p
--perms
- Define as permissões dos arquivos de destino como iguais aos arquivos de origem. -t
--times
- Define os tempos de modificação dos arquivos de destino para os mesmos que os arquivos de origem. Como manter esses tempos em sincronia torna o algoritmo rsync mais eficiente, geralmente você sempre deseja que ele seja usado, explícita ou implicitamente. -g
--group
- Define o atributo de grupo do destino para o mesmo que a fonte. Associados por nome, por padrão, mas retornará ao número de identificação do grupo em algumas circunstâncias. Se o rsync de recebimento não for executado como superusuário (ou fingir --fake-super
), apenas os grupos dos quais o usuário que chamou o rsync no lado de recebimento é membro podem ser configurados. Caso contrário, o grupo será definido apenas como o grupo padrão do mesmo usuário mencionado anteriormente. -D
- Equivalente às opções --devices
e --specials
juntos. Eles significam:--devices
- Arquivos de caracteres e dispositivos de bloco são transferidos. Não tem efeito se o rsync de recebimento não for executado como superusuário (ou falsificado --fake-super
). --specials
- Arquivos especiais (como soquetes) são transferidos (caso contrário, não seriam). --delete
- Diz ao rsync para excluir arquivos que estão no destino, mas não na fonte. Isso NÃO é afetado pela opção de atualização definida acima (na verdade, como poderia ser, pois a maioria dos sistemas de arquivos não retém os dados necessários para ver qual ação foi mais recente?). Esta opção atua nas fontes após a expansão de curinga / glob, portanto, dir / * não é o mesmo que dir /. Algumas notas importantes:--dry-run
opção primeiro, que fará uma transferência fingida que permite garantir que nenhuma alteração indesejada seja feita. --ignore-errors
opção, embora você provavelmente não queira / não fará isso.--delete-during
algoritmo é usado. Se o receptor for mais antigo, então --delete-before
é usado. Se for importante que os arquivos mantenham um certo tipo de consistência caso ocorra um erro (como não excluir nada até que todas as outras alterações sejam feitas), você deve usar uma opção mais específica que a padrão./srv/bkp01
- O arquivo ou diretório de origem. Existem algumas regras detalhadas sobre o que significa se existe / não uma barra no final do diretório e se o outro diretório existe. Você pode ver a seção USAGE da página de manual para obter detalhes, mas aqui a falta de uma barra final significa que esse diretório será copiado no destino, em vez de o conteúdo desse diretório ser copiado no destino. O mesmo se for um arquivo e não um diretório./srv/offbk2/
- O diretório de destino. Em geral, esse sempre será o último item listado na seção de comando rsync, a menos que uma opção seja usada para especificá-lo em outra parte do comando.>
- Isso redireciona o stdout (a saída padrão) do que estiver à esquerda para o arquivo à direita, tornando-se seu conteúdo e criando o arquivo (se possível), se ele ainda não existir. Algumas notas:2>&1
ao final do comando acima. A ordem é importante, portanto, tenha cuidado ao generalizar onde colocar isso. O número mágico 1
refere-se a stdout, 2
refere-se a stderr, &
é (essencialmente) "o endereço de" e o trecho de comando completo significa "redirecionar a saída de stderr para o fluxo de stdout". >>
. O método para redirecionar o stderr para o mesmo local permanece o mesmo. 1> stdout_file 2> stderr_file
. Você também pode usar, em >>
vez de >
nesse comando, anexando em vez de substituir.~
- Este é um atalho para o diretório inicial do usuário atual e faz parte do próximo bit.~/offbkp01.log
- o arquivo offbkp01.log dentro do diretório inicial do usuário atual. É aqui que a saída do comando rsync será colocada devido ao redirecionamento com >
.Em resumo, este comando irá:
/srv/bkp01
, /srv/offbk2/bkp01
, e excluirá qualquer coisa /srv/offbk2/
que não esteja/srv/bkp01
, com as seguintes condições:
/srv/offbk2/
que é mais recente do que o seu tempo de modificação em /srv/bkp01
, ele não será atualizado , se ambos os itens ainda são o mesmo tipo (regular arquivo, diretório, ou link simbólico (? )). Além disso, o rsync imprimirá algumas informações sobre o que está fazendo (especificamente, quais arquivos estão sendo transferidos e um resumo final ), que o shell gravará no arquivo ~/offbkp01.log
. Esse arquivo de log será criado novamente, se ainda não existir, e será sobrescrito, se já existir.
Nota: --fake-super
é uma opção usada para fazer com que o rsync simule atividades de superusuário. Isso é feito usando os atributos estendidos dos arquivos para armazenar os atributos que não puderam ser definidos sem ter maiores privilégios. A versão real de cada atributo é configurada para o que fizer sentido, dadas as opções e os privilégios disponíveis. Embora isso torne conveniente fazer alguns backups, mesmo que você não tenha privilégios de superusuário, observe também que ele pode representar um risco de segurança maior que o uso do rsync em geral, pois os atributos reais de segurança podem não estar definidos. adequadamente, mesmo que as informações sobre eles tenham sido armazenadas em backup.
Fonte: muito tempo trabalhando com o rsync e lendo sua página de manual .
Do manual:
--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 executar o 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 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 a opção --delete-deleted ou marque as regras como correspondendo apenas no lado do envio (consulte os modificadores de inclusão / exclusão na seção REGRAS DO FILTRO).
Portanto, ele excluirá os arquivos do destino que não fazem parte do diretório original se você não usou caracteres curinga.
Diretório de origem:
1.txt
2.txt
3.txt
Diretório de destino:
4.txt
4.txt desaparecerá após o rsync e 1.txt, 2.txt e 3.txt estarem no destino.
Em relação às outras coisas:
uva
Não, ele exclui apenas arquivos estranhos do bkp01
diretório.
Além disso:
-u
, --update
- pula arquivos mais recentes no receptor-v
, --verbose
- aumentar a verbosidade-a
, --archive
- modo de arquivo; é igual a -rlptgoD (sem -H, -A, -X)A saída do rsync -uva --delete /srv/bkp01 /srv/offbk2/
comando é enviada ao ~/offbkp01.log
arquivo usando o operador de redirecionamento ( >
) para ser impresso no seu terminal. Se o arquivo não existir, ele será criado. Se o arquivo existir, o conteúdo antigo será apagado.
Veja man rsync
para mais informações.
bkp01
. Apenas apaga arquivos estranhos - ou seja, aqueles que não existem na fonte - do destino.
rsync
Cópia remota de arquivo - Sincronize árvores de arquivos em discos, diretórios locais ou em uma rede.
-u update
-v verbose
-a archive
--delete --> delete
Aqui ele excluirá os arquivos dentro do offbk2 .
Em seguida, a saída do resultado (êxito ou não) será redirecionada para esse arquivo de log.