Pergunta

Estou criando um script bash para fazer backup dos meus arquivos com o RSYNC.

Os backups vêm de um único diretório. Eu só quero que arquivos novos ou modificados sejam backup.

Atualmente, estou dizendo ao RSYNC para fazer backup do DIR e verificar os arquivos em comparação com o último backup.

A maneira como estou fazendo isso é

THE_TIME=`date "+%Y-%m-%dT%H:%M:%S"`
rsync -aP --link-dest=/Backup/Current /usr/home/user/backup /Backup/Backup-$THE_TIME
rm -f /Backup/Current
ln -s /Backup/Backup-$THE_TIME /Backup/Current

Tenho certeza de que tenho a sintaxe correta para isso. Cada backup verificará na pasta "atual" e fará o upload apenas como necessário. Em seguida, ele excluirá a pasta atual e recriará o symblink para o backup mais recente que acabou de fazer.

Estou recebendo um erro ao executar o script:

rsync: link "/Backup/Backup-2010-08-04-12:21:15/dgs1200series_manual_310.pdf"

=> /Backup/current/dgs1200series_manual_310.pdf falha: Operação não suportada (45)

O sistema operacional host está executando o sistema de arquivos HFS, que suporta uma ligação dura. Estou tentando descobrir se algo mais não está apoiando isso ou se tenho um problema no meu código.

Obrigado por qualquer ajuda

Editar:

Sou capaz de criar um link rígido na minha máquina local. Também sou capaz de criar um link rígido no servidor remoto (quando logado localmente) não consigo criar um link rígido no servidor remoto quando montado via AFP. Mesmo que existam ambos os arquivos no servidor.

Acho que isso é uma limitação da AFP.

Foi útil?

Solução

Duas coisas da página do homem se destacam que valem a pena verificar:

Se o arquivo não estiver vinculando, verifique novamente seus atributos. Verifique também se alguns atributos estão sendo forçados fora do controle do RSYNC, uma opção de montagem que esmaga a raiz para um único usuário ou monta uma unidade removível com propriedade genérica (como a opção “ignorar o OS X nesse volume”).

e

Observe que as versões do RSYNC antes do 2.6.1 tinham um bug que poderia impedir que-Link-Destine funcione corretamente para um usuário não super-super quando foi especificado (ou implícito por -a). Você pode trabalhar com esse bug, evitando a opção -o ao enviar para um RSYNC antigo.

Você tem a opção "ignorar a propriedade" ativada? Qual versão de rsync você tem?

Além disso, você já tentou criar manualmente um hardlink semelhante usando ln Na linha de comando?

Outras dicas

Apenas caso sua linha de comando seja apenas um exemplo: certifique-se de especificar sempre o diretório de link-dest com um absoluto Nome do caminho! Isso é algo que levei algum tempo para descobrir ...

Não sei se esse é o mesmo problema, mas sei que o RSYNC não pode sincronizar um arquivo quando o destino é uma partição FAT32 e o nome do arquivo tem um ":" (cólon). [O sistema de arquivos de origem é ext3 e o destino é FAT32

Tente reconfigurar o date comando para que ele não use um cólon e veja se isso faz a diferença.

por exemplo

THE_TIME=`date "+%Y-%m-%dT%H_%_%S"`
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top