Quero fazer backup do meu diretório pessoal em uma unidade externa todas as noites usando um cron
trabalho para executar rsync
. Não tenho certeza do comportamento exato dos rsync
sinalizadores de link simbólico de.
rsync
O-a
sinalizador inclui o-l
sinalizador (por exemplo, "copiar links simbólicos como links simbólicos"). Isso significa apenas que ele copiará o link ou que seguirá o link e copiará tudo no diretório link-to? Quero evitar isso porque tenho links para diretórios cheios de arquivos de mídia que envolvem a cópia de centenas de gigabytes dos quais não preciso fazer backup.- Com medo (mas não certo) de
rsync -a
copiar todos os arquivos de mídia, adicionei a--no-links
flag. Este não parece ser o comportamento que eu quero. Ele simplesmente ignora a cópia de qualquer link problemático, porque eu tenho links que eu quero copiar (por exemplo, links para arquivos de cabeçalho comuns de diferentes diretórios do projeto). - Supondo que o número 1 acima (sem a
--no-links
bandeira) seja o que eu realmente quero e ele apenas copia o link sem copiar os arquivos vinculados, os links serão interrompidos quando o backup for feito? Por exemplo, possorsync
fornecer o diretório/home/me/projects/misc
para/media/extdrive/backup/home/me/projects/misc
. Nesse caso, suponho quersync
não seja inteligente o suficiente nem tente corrigir o conteúdo dos links simbólicos para as alterações de diretório relativas. 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 a hora em que precisarem ser restaurados.
linux
rsync
symbolic-link
sean
fonte
fonte
Respostas:
"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
, descrevem o comportamento oposto (sempre copiando os dados) que você descreveu como indesejável.)Veja também a seção "Links simbólicos":
Não é o comportamento que você deseja, porque você está interpretando mal o que
--links
faz e, portanto, solicitando o comportamento errado (consulte a resposta nº 1).Por padrão, ele copia exatamente o destino .
Ou seja, se o link apontar para um caminho absoluto (por exemplo
/home/me/projects
), continuará apontando para o mesmo caminho; não quebrará , continuará apontando para um arquivo no diretório inicial e não no arquivo de 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 à localização do link simbólico, o link simbólico em seu backup também apontará para um arquivo em seu backup.Infelizmente, parece não 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 relativos (o que geralmente é uma boa ideia, para links dentro de $ HOME).
fonte
--copy-links
e--links
?--copy-links
=-L
e--links
=-l
. Veja a descrição da documentação na minha resposta aqui: superuser.com/a/1388910/425838O @grawity tem uma ótima resposta, mas aqui está uma captura de tela de algumas informações relevantes da documentação. Aqui está o texto exato 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 no Linux.Observe também que a opção
-a
(--archive
) também inclui a-l
opção, o que é incrível, pois eu realmente gosto de usar a-l
opção para preservar meus links simbólicos da fonte como links simbólicos no destino. Nas páginas do manual:Observe, para meus
rsync
comandos e instruções favoritos , incluindo cópia, espelhamento, exibição do progresso total ...... fazendo corridas secas, registrando stderr e stdout para arquivos (separados), mostrando estatísticas, usando um arquivo de inclusão caminho e um arquivo de exclusão , etc, veja a minha resposta completa aqui sob a 2ª secção, intitulada " 2. rsync Comando-line ferramenta (Linux, Windows com Cygwin) ": https://superuser.com/a/1464264/425838
fonte