rsync somente arquivos criados ou modificados após uma data e hora

6

O objetivo é rsync (ou usar qualquer outra ferramenta que forneça o resultado desejado) somente arquivos criados ou modificados após uma data. Deve funcionar com nomes de arquivos contendo espaços (e / ou outros caracteres que precisam escapar).

Consegui usar este comando no OS X 10.6.5: find . -newermt "2010-11-23 16:52:50" -type f -exec rsync -vuptn '{}' ../rsync_test/ ';' Eu não acho que o -newermt esteja trabalhando no SO do que no OS X.

O problema com este comando é que ele executa rsync uma vez por arquivo encontrado e essa não parece ser a maneira correta de fazê-lo. Eu tentei alterar o último ; com um + para que aguarde a lista de arquivos inteira, mas ele freia (eu tentei "+" , \+ e outra maneira de escapar).

Histórico: Estou tentando fazer backup dos meus arquivos em um local remoto. Os arquivos sendo muitas fotos em formato raw e outros (fotografias funcionam. Cerca de 30GB por dia), rsync'ing embora a rede levaria tempo inutilizável devido à pequena largura de banda de upload (ADSL é uma porcaria). Portanto, a ideia é ter muito espaço em disco em um local remoto e transportar arquivos novos / modificados em um pequeno disco rígido externo uma vez por semana. O rsync pode então ser facilmente usado para adicionar os arquivos novos / modificados no local remoto. Para isso preciso sincronizar os arquivos novos / modificados em um disco rígido externo durante a semana, para que eu sempre tenha 2 cópias de todos os arquivos em um local remoto para arquivos anteriores a uma semana ou em um disco rígido externo para arquivos novos / modificados desde o último transporte.

Eu ia fazer este comando rodar a cada 10 minutos (cron) com a data e a hora da última vez que foi executado.

Você pode consertar meu comando? Ou você tem uma solução ainda melhor?

    
por Yanik 23.11.2010 / 18:58

2 respostas

7

Estou um pouco confuso sobre o que você está tentando fazer. O Rsync, sozinho, só transfere arquivos novos / modificados. Portanto, se você transportar dados em um disco rígido uma vez por semana, poderá executar o rsync periodicamente e não haverá mais largura de banda do que (e possivelmente menos que) a solução que você está propondo usando find .

Todo esse trabalho com find parece que você está apenas duplicando recursos que já estão presentes.

Se você realmente quiser usar find , não precisará de xargs ou xargs , como recursos; basta fazer isso:

find ... -print | rsync ... --files-from=-

Onde ... é "qualquer outra opção que você julgue apropriada". Isso faz com que o rsync leia uma lista de arquivos do stdin.

    
por 23.11.2010 / 19:30
0

+ só funciona com o GNU find, e o OSX tem o BSD. Use -print0 e xargs -0 para simulá-lo.

-newermt deve funcionar para novas versões suficientes do GNU find. Minha máquina Fedora 13 (GNU find 4.4.2) possui, mas não minha máquina CentOS 5 (GNU find 4.2.27). Você deve ser capaz de simulá-lo usando touch para criar um arquivo com o tempo apropriado e, em seguida, usar -newer nele.

    
por 23.11.2010 / 19:20