Mercredi 02 avril 2025 à 16:48

Note de type #mémento #mémo.

J'ai souvent besoin d'exécuter l'équivalent de :

$ scp -r root@myserver:/foo/bar/ ./tmp/

ou l'inverse :

$ scp -r ./tmp/ root@myserver:/foo/bar/

sur des serveurs sur lesquels je n'ai pas directement accès à l'utilisateur root par ssh.

J'accède, par exemple, à ce serveur via l'utilisateur ubuntu. L'utilisateur ubuntu n'a pas accès aux fichiers que je souhaite download ou upload.

Sur le serveur, j'ai accès aux fichiers de l'utilisateur root via sudo.

Voici une astuce pour download des fichiers via ssh et sudo :

$ ssh ubuntu@myserver "sudo tar cf - -C /foo/bar/ ." | tar xf - -C ./tmp/

Et, voici une méthode pour upload :

$ tar cf - -C ./tmp/ . | ssh ubuntu@myserver "sudo tar xf - -C /foo/bar/"