Réponses:
Un mot: rsync
.
Notez que si vous êtes sur une liaison lente, ou si le serveur est sous forte charge, l'outil utilisé pour la copie ne sera pas le goulot d'étranglement, et tout moyen de copie sera lent de toute façon.
Cela devrait vous donner l'utilisation de base pour la copie entre votre ordinateur local et le serveur distant: http://oreilly.com/pub/h/38
Pour copier depuis un ordinateur local vers un serveur distant (vous devez bien sûr remplacer les chemins, le nom d'utilisateur et l'adresse d'hôte):
rsync -avz -e ssh /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
-a
archiver-v
verbeux-z
compresse-e ssh
"utiliser un tunnel SSH"Pour copier dans l'autre sens, changez de chemin (le premier est de , le second est de ):
rsync -avz -e ssh remoteuser@remotehost.somewhere.example.com:/path/on/server /path/on/local/computer
Mais rsync est utile même pour copier des choses sur le même serveur:
rsync -av /path-to/copy/from /path_to/copy/to
-z
pour la copie LAN ou la copie sur une seule machine; tester avec et sans -z
pour la copie sur Internet (l'un ou l'autre peut être plus rapide, en fonction de beaucoup de choses).
-e ssh
est maintenant par défaut pour les hôtes distants, il n'est donc pas nécessaire de passer l'option explicitement.
Un autre mot: scp
scp /path/on/local/computer remoteuser@remotehost.somewhere.example.com:/path/on/server
Pour les offres uniques, scp est pratique. Si c'est beaucoup de fichiers, rsync est une bonne idée. Si une connexion est interrompue, rsync peut reprendre là où il s'était arrêté.
Je savais que rsync avait compression ( -z
), et je viens d'apprendre que scp aussi ( -C
).
Dans votre configuration, rsync est probablement suffisant ... mais à titre d'exemple, s'il y a beaucoup de petits fichiers, il peut être plus rapide de tarer les fichiers d'abord que de les transférer ensuite via rsync. En effet, le transfert du propriétaire, des horodatages et des autorisations est parfois plus lourd que le fichier lui-même si le fichier est petit. Tar fusionnera toutes ces informations dans un seul fichier et rsync copiera des blocs plus gros.
Ou encore mieux, si aucune sécurité n'est nécessaire, utilisez tar et nc:
À destination, préparez un démon de réception, décompressez et décompressez:
nc -l -p 12345 | pigz -d | tar xvf -
Sur la source, tarez tout, compressez en parallèle et envoyez-le à la destination:
tar cvf - ./ | pigz | nc host 12345
-z
option pour la copie locale car elle ajoute une surcharge inutile. À mon humble avis, vous ne devez utiliser que-z
lorsque vous utilisez rsync sur une liaison réseau lente. Si vous copiez de grandes quantités de données sur 100Base-T, vous pouvez très bien vous en passer-z
. Avec une connexion réseau rapide, l'utilisation de la compression peut ancrer votre CPU et affaiblir d'autres processus.