Je veux rsync mon répertoire de travail à deux autres répertoires. Une destination serait pour la sauvegarde, une autre pour la tester. J'ai essayé ceci:
rsync -av --exclude='.git' source dest1,dest2
Mais alors je reçois une erreur - 'dest1,dest2'
Le répertoire n'a pas été trouvé. Il semble donc que cela voit cela comme un chemin de répertoire. Bien sûr, je dirigerais la commande deux fois avec un répertoire de destination différent, mais qui ajoute, et je voudrais toujours rsync sans avoir besoin d'utiliser plusieurs commandes.
Est-il possible de faire quelque chose comme ça?
Peut-être utiliser une boucle for
:
for dest in dest1 dest2; do
rsync -av --exclude='.git' source $dest
done
La solution de boucle suggérée fonctionne, mais si vous transférez une grande quantité de données, ce sera très lent. C'est parce qu'il sérialise les travaux, qui sont liés par la vitesse de l'écriture de disque. Une alternative meilleure mais légèrement plus complexe consiste à utiliser GNU parallèle:
http://www.gnu.org/software/parallel/
Vous pouvez proposer une commande pour parallementer plusieurs pistes RSYNC, qui seraient N fois plus rapides si vous écrivez à N disques en même temps.
Une solution parallèle similaire pour un problème lié au réseau est donnée ici:
https://stackoverflow.com/questions/24058544/Speed-up-rSync-with-Simultané-concurrent-file-Transfers