
Quero manter dois diretórios "sincronizados", de modo que a versão local possa conter apenas umsubconjuntoda versão remota. Portanto, sincronizá-los deve resultar em quaisquer alterações no subconjunto local sendo enviadas para o diretório remoto, e quaisquer alterações no diretório remoto, feitas no subconjunto relevante, sendo puxadas para o diretório local. No entanto, não quero que novos arquivos ou diretórios sejam extraídos do diretório remoto sem que sejam copiados explicitamente.
(A razão pela qual quero fazer isso é porque tenho uma coleção de músicas muito grande em um servidor remoto, mas não consigo colocar toda a coleção no meu laptop de uma só vez, por falta de espaço em disco. No entanto, gostaria de manter o que quer que seja. parte da coleção, que tenho aqui localmente, sincronizada com a parte relevante no servidor, principalmente nos casos em que atualizei tags ID3, comentários Vorbis, etc.)
O sinalizador do rsync --ignore-non-existing
parecia uma maneira razoável de fazer isso, a partir de sua documentação na página de manual, mas não produziu os resultados esperados. Ele pula o primeiro nível de subdiretórios, mesmo que ambos os diretórios raiz contenham os mesmos filhos.
Por exemplo, se o diretório remoto example.org:/path/to/it/
contiver dir1
e dir2
e o diretório local /other/dir/
contiver dir1
e dir2
, obtenho os seguintes resultados ...
$ rsync --dry-run --ignore-non-existing example.org:/path/to/it/ /other/dir/
skipping directory .
Ou tentando com um curinga ...
$ rsync --dry-run --ignore-non-existing example.org:/path/to/it/* /other/dir/
skipping directory dir1
skipping directory dir2
Alguém sabe como usar corretamente esse sinalizador? Ou estou entendendo mal seu propósito? Ou, se você tiver alguma outra sugestão para manter um subconjunto de um diretório sincronizado, entre em contato.
Obrigado. :)
Responder1
Tente fazer isso recursivamente:
rsync --recursive --dry-run --ignore-non-existing example.org:/path/to/it/ /other/dir/