rsync e links simbólicos

52

Eu quero fazer backup do meu diretório pessoal em uma unidade externa por noite usando um trabalho cron para executar rsync . Não tenho certeza do comportamento exato dos sinalizadores de link simbólico de rsync .

  1. O sinalizador rsync -a inclui o sinalizador -l (por exemplo, "copiar links simbólicos como links simbólicos"). Isso significa apenas que ele copiará o link ou que ele seguirá o link e copiará tudo no diretório link-to? Eu quero evitar isso porque eu tenho links para diretórios cheios de arquivos de mídia que envolvem a cópia de centenas de gigabytes que eu não preciso fazer backup.
  2. Temendo (mas não garantindo) que rsync -a copie todos os arquivos de mídia, eu adicionei o sinalizador --no-links . Isso não parece ser um comportamento que eu quero. Ele apenas ignora a cópia de qualquer link que seja problemático porque eu tenho links que eu quero copiar (por exemplo, links para arquivos de cabeçalho comuns de diretórios de projeto diferentes).
  3. Assumindo que o # 1 acima (sem o --no-links flag) é o que eu realmente quero e copie o link sem copiar os arquivos vinculados, os links serão quebrados quando o backup deles for feito? Por exemplo, eu posso rsync diretório de origem /home/me/projects/misc to /media/extdrive/backup/home/me/projects/misc . Neste caso eu assumo que rsync não é inteligente o suficiente nem tenta corrigir o conteúdo de links simbólicos para as mudanças relativas no diretório. Isso está correto? Tudo bem, não importa se os links estão quebrados nos diretórios de backup, desde que sejam corrigidos e funcionem se chegar o momento em que eles precisam ser restaurados.
por sean 18.08.2014 / 06:35

2 respostas

65
  1. "Copiar links simbólicos como links simbólicos" significa exatamente o que diz: Se o rsync vir um link simbólico no diretório de origem, ele criará um link simbólico idêntico no destino. Nada mais.

    (Algumas linhas abaixo na página de manual, uma opção diferente , --copy-links , descreve o comportamento oposto (sempre copiando os dados) que você descreveu como indesejável.)

    Veja também a seção "Links simbólicos":

    If --links is specified, then symlinks are recreated with the same target on the destination.

  2. Não é o comportamento que você quer porque você está interpretando mal o que o --links faz e, portanto, pedindo o comportamento errado (veja a resposta # 1).

  3. Por padrão, ele copia o destino exatamente.

    Ou seja, se o link apontou para um caminho absoluto (por exemplo, /home/me/projects ), ele continuará apontando para o mesmo caminho; ele não irá quebrar , ele apenas continuará apontando para um arquivo em seu diretório pessoal, em vez daquele em seu backup.

    Enquanto isso, se o link apontar para um caminho relativo (por exemplo, ../../projects ), ele também continuará apontando para o mesmo caminho, mas como é relativo ao local do symlink, o link simbólico seu backup também estará apontando para um arquivo em seu backup.

    Infelizmente não parece haver nenhuma opção para traduzir links simbólicos absolutos para sua nova base (apenas uma opção para quebrá-los completamente). Para evitar problemas, você deve alterar os links simbólicos existentes para os relativos (geralmente é uma boa idéia para links dentro de $ HOME).

por 18.08.2014 / 07:26
1

Existem várias páginas muito boas que descrevem o rsync em grande detalhe.

link

link

Também recomendo utilitários como backintime ou rsnapshot.

    
por 29.04.2015 / 20:48