Connexion à distance via le terminal sur macOS - Partie 3
Si l'on combine la commande ssh pour se connecter à distance, ainsi que la commande cp pour réaliser une copie, nous obtenons la commande scp. Vous l'aurez compris, j'espère, elle permet de réaliser des copies d'un Mac (ou Linux) à un autre en passant par ssh, et donc totalement en ligne de commande.
Pour cela, il faut bien sur, et comme nous avions vu dans les articles précédents que l'ordinateur distant soit accessible à distance, et que vous possédiez un compte sur ce même ordinateur.
Ensuite, c'est assez simple, puisque cela fonctionne comme cp, mais en indiquant une source ou une origine distante.
Par exemple, pour copier un fichier MonFichier.jpg de mon bureau vers le bureau de mon compte disponible sur l'ordinateur distant, dont le nom local est distant.local, je tape
scp ~/Desktop/MonFichier.jpg distant.local:~/Desktop/
le mot de passe de mon compte distant est alors demandé, avant de faire la copie.
Si l'on reprend le principe de ssh, et que mon compte n'est pas le même sur l'ordinateur distant, alors, il faut que je le précise
scp ~/Desktop/MonFichier.jpg sky@distant.local:~/Desktop/
Si je veux récupérer un fichier depuis l'ordinateur distant, il suffit d'inverser la source et la destination
scp sky@distant.local:~/Desktop/MonFichier.jpg ~/Desktop/
Copier un fichier dont le nom ou le chemin contient des espaces est évidemment possible. Si vous utilisez régulièrement le terminal, vous savez qu'il faut échapper les espaces et autres caractères spéciaux avec un anti-slash. Dans le cas d'un envoi par scp, il faut se souvenir que le chemin distant doit être doublement échappé, une fois pour l'ordinateur cible, et une fois l'ordinateur local.
Ainsi si le fichier "Mon Fichier.jpg" est dans un dossier "Mon Dossier", et doit aller dans le dossier du même nom localement, tout deux sur le bureau, voici la commande
scp sky@distant.local:~/Desktop/Mon\ Dossier/Mon\ Fichier.jpg ~/Desktop/Mon Dossier
Comme vous pouvez le voir, le chemin du côté distant est double-échappé, alors que le chemin local reste comme d'habitude.
Alternativement, il est possible, si vous préférez, d'utiliser des guillemets pour indiquer le chemin. Vous pouvez soit mettre deux niveaux de guillemets, tel que
scp sky@distant.local:"'~/Desktop/Mon Dossier/Mon Fichier.jpg'" ~/Desktop/Mon Dossier
avec donc un premier niveau en double-guillemets, et le second simple, afin de ne pas les mélanger.
Soit faire un intermédiaire, avec un échappement et un niveau de guillemets
scp sky@distant.local:"~/Desktop/Mon Dossier/Mon Fichier.jpg" ~/Desktop/Mon Dossier
Maintenant, si l'on prend le fonctionnement de cp, il faut savoir que si un fichier existe, avec le même nom, il sera écrasé sans aucune autre forme de procès.
Il est aussi possible de copier un dossier avec l'option -r, par exemple, pour copier le dossier "Mon Dossier" distant vers mon bureau local
scp -r sky@distant.local:~/Desktop/Mon\ Dossier/ ~/Desktop/