J'ai une grande quantité de données (plusieurs Go) sur un lecteur distant, qui est monté de manière transparente via nfs. Je voudrais copier ces fichiers dans un sous-répertoire de l'endroit où ils résident déjà, afin que tout reste sur le même disque physique. Pour cette raison, je voudrais éviter un aller-retour inutile sur le réseau.
Il semble que cp files* subdir
fait la chose naïve et lit toutes les données en mémoire, puis les réécrit. Est-ce vrai? Existe-t-il une commande spéciale qui effectue la copie réelle entièrement sur le serveur auquel le disque est physiquement connecté?
cp
) ou déplacer (comme dansmv
)? Si vous déplacez les fichiers, je ne vois pas pourquoi il devrait y avoir des allers-retours.Réponses:
Il semble que cd files * subdir fasse la chose naïve et lit toutes les données en mémoire puis les réécrit. Est-ce vrai?
Oui.
Existe-t-il une commande spéciale qui effectue la copie réelle entièrement sur le serveur auquel le disque est physiquement connecté?
Non, sauf si vous pouvez vous connecter à la machine distante avec ssh et y faire la copie.
EDIT Il y a du travail en cours pour ajouter une "copie côté serveur" à la version 4.2 du protocole NFS (la version actuelle est 4.1). Voir par exemple http://www.usenix.org/events/fast11/posters_files/Lentini.pdf . Notez que l'utilisation de cette fonctionnalité nécessiterait a) des clients NFS et des serveurs la prenant en charge b) un nouveau syscall pour le système d'exploitation client (peut-être reflink ou copyfile ()?) C) la prise en charge de l'utilisation du nouveau syscall dans les utilitaires habituels (cp, rsync , etc.). Je suppose que cela prendra au moins plusieurs années avant que quoi que ce soit voit le jour.
la source