2014-08-18 04:35:50 +0000 2014-08-18 04:35:50 +0000
77
77

rsync e ligações simbólicas

Quero fazer uma cópia de segurança do meu directório home para um disco externo à noite usando um trabalho cron para executar rsync. Não tenho a certeza do comportamento exacto das bandeiras de ligação simbólica do rsync.

  1. rsync‘s -a inclui a bandeira -l (ou seja, “copiar links simbólicos como links simbólicos”). Isto significa apenas que copiará o link ou que seguirá o link e copiará tudo no directório link-to? Quero evitar isso porque tenho links para directórios cheios de ficheiros multimédia que envolveriam a cópia de centenas de gigabytes que não preciso de fazer cópias de segurança.
  2. Temendo (mas não certo) que rsync -a copiasse todos aqueles ficheiros de media, em vez disso adicionei a bandeira --no-links. Isto não parece ser um comportamento que eu queira. Apenas ignora a cópia de qualquer ligação que seja problemática porque tenho ligações que quero copiar (por exemplo, ligações para ficheiros de cabeçalho comuns de diferentes directórios de projectos).
  3. Assumindo o número 1 acima (sem a bandeira --no-links) é o que eu realmente quero e apenas copia o link sem copiar os ficheiros com link, será que os links se quebrarão quando forem copiados? Por exemplo, posso rsync diretório fonte /home/me/projects/misc a /media/extdrive/backup/home/me/projects/misc. Neste caso presumo que rsync não é suficientemente inteligente nem tenta corrigir o conteúdo dos links simbólicos para as alterações relativas ao directório. Será isto correcto? Não há problema, não importa se os links são quebrados nos directórios de backup, desde que sejam corrigidos e funcionem se chegar o momento em que precisem de ser restaurados.

Respostas (2)

98
98
98
2014-08-18 05:26:17 +0000
  1. “Copy symlinks as symlinks” significa exactamente o que diz: Se o rsync vê um symlink no directório de origem, criará um symlink idêntico no destino. Nada mais.

  2. Não é o comportamento que se quer porque se está a interpretar mal o que --links faz e, portanto, a pedir o comportamento errado (ver resposta #1).

  3. Por defeito, copia o destino exactamente.

19
19
19
2018-12-30 07:47:50 +0000

@grawity tem uma grande resposta, mas aqui está uma captura de ecrã de algumas informações relevantes da documentação. Aqui está a redacção exacta das opções -l e -L, por exemplo, que parecem ser as mais relevantes em questão:

Fonte: https://linux.die.net/man/1/rsync , ou man rsync páginas de manual sobre Linux.

Note também que a opção -a (--archive) também inclui a opção -l dentro dela, o que é fantástico, uma vez que gosto muito de usar a opção -l para preservar os meus symlinks da fonte como symlinks no destino. A partir das páginas de homem:

-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)

Nota, para os meus comandos e instruções rsync favoritos, incluindo cópia, espelhamento, mostrando o progresso total…

…fazendo execuções secas, registando stderr e stdout em ficheiros (separados), mostrando estatísticas, usando um include path file e um exclude file, etc., ver a minha resposta completa aqui na 2ª secção, intitulada “2. rsync Command-line tool (Linux, Windows com Cygwin)”: https://superuser.com/a/1464264/425838