Lorsque vous envoyez le même ensemble de fichiers, rsync
est mieux adapté car il n'enverra que des différences. tar
enverra toujours tout et c'est un gaspillage de ressources quand beaucoup de données sont déjà là. Le tar + rsync + untar
perd cet avantage dans ce cas, ainsi que l'avantage de garder les dossiers synchronisés avec rsync --delete
.
Si vous copiez les fichiers pour la première fois, le premier empaquetage, puis l'envoi, puis le déballage (AFAIK rsync
ne prend pas d'entrée canalisée) est lourd et toujours pire que le simple rsyncing, car il rsync
n'aura à effectuer aucune tâche plus que de tar
toute façon.
Astuce: rsync version 3 ou ultérieure effectue une récursivité incrémentielle, ce qui signifie qu'il commence à copier presque immédiatement avant de compter tous les fichiers.
Astuce 2: Si vous utilisez rsync
plus ssh
, vous pouvez également utiliser soittar+ssh
tar -C /src/dir -jcf - ./ | ssh user@server 'tar -C /dest/dir -jxf -'
ou juste scp
scp -Cr srcdir user@server:destdir
Règle générale, restez simple.
MISE À JOUR:
J'ai créé 59 millions de données de démonstration
mkdir tmp; cd tmp
for i in {1..5000}; do dd if=/dev/urandom of=file$i count=1 bs=10k; done
et testé plusieurs fois le transfert de fichiers vers un serveur distant (pas dans le même lan), en utilisant les deux méthodes
time rsync -r tmp server:tmp2
real 0m11.520s
user 0m0.940s
sys 0m0.472s
time (tar cf demo.tar tmp; rsync demo.tar server: ; ssh server 'tar xf demo.tar; rm demo.tar'; rm demo.tar)
real 0m15.026s
user 0m0.944s
sys 0m0.700s
tout en conservant des journaux distincts des paquets de trafic ssh envoyés
wc -l rsync.log rsync+tar.log
36730 rsync.log
37962 rsync+tar.log
74692 total
Dans ce cas, je ne vois aucun avantage à réduire le trafic réseau en utilisant rsync + tar, ce qui est attendu lorsque le mtu par défaut est de 1500 et que les fichiers ont une taille de 10k. rsync + tar a généré plus de trafic, a été plus lent pendant 2-3 secondes et a laissé deux fichiers d'ordures qui ont dû être nettoyés.
J'ai fait les mêmes tests sur deux machines sur le même lan, et là le rsync + tar a fait des temps bien meilleurs et beaucoup moins de trafic réseau. Je suppose que la cause des trames jumbo.
Peut-être que rsync + tar serait mieux que juste rsync sur un ensemble de données beaucoup plus grand. Mais franchement, je ne pense pas que cela en vaille la peine, vous avez besoin d'un double espace de chaque côté pour l'emballage et le déballage, et il y a quelques autres options comme je l'ai déjà mentionné ci-dessus.