Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transfert de fichier avec ssh

4 réponses
Avatar
Yves Lambert
Bonjour,
Je suis sur une machine A (unix) j'ai un acces ssh sur une machine B
(unix like)
je veux transferer des fichiers de B vers A (et vice versa)

Solution bete et mechante :

Il se trouve que j'ai un acces ftp sur A depuis B. J'ouvre une session
ssh sur B et je transfere avec un client ftp. Je trouve cette solution
peu satisfaisante.

Quelles autres solutions puis-je mettre en oeuvre ?

merci pour les tuyaux.

4 réponses

Avatar
Kevin Denis
Le 03-10-2006, Yves Lambert a écrit :
Bonjour,
Je suis sur une machine A (unix) j'ai un acces ssh sur une machine B
(unix like)
je veux transferer des fichiers de B vers A (et vice versa)

Quelles autres solutions puis-je mettre en oeuvre ?

sftp

sftp> help
Available commands:
cd path Change remote directory to 'path'
lcd path Change local directory to 'path'
chgrp grp path Change group of file 'path' to 'grp'
chmod mode path Change permissions of file 'path' to
'mode'
chown own path Change owner of file 'path' to 'own'
help Display this help text
get remote-path [local-path] Download file
lls [ls-options [path]] Display local directory listing
ln oldpath newpath Symlink remote file
lmkdir path Create local directory
lpwd Print local working directory
ls [path] Display remote directory listing
lumask umask Set local umask to 'umask'
mkdir path Create remote directory
progress Toggle display of progress meter
put local-path [remote-path] Upload file
pwd Display remote working directory
exit Quit sftp
quit Quit sftp
rename oldpath newpath Rename remote file
rmdir path Remove remote directory
rm path Delete remote file
symlink oldpath newpath Symlink remote file
version Show SFTP version
!command Execute 'command' in local shell
! Escape to local shell
? Synonym for help
sftp>

ou scp.
--
Pour connaitre ce qu'est la recursivite, il faut commencer par connaitre
la recursivite.

Avatar
Mehdi BENKIR
Yves Lambert wrote:
Bonjour,
Je suis sur une machine A (unix) j'ai un acces ssh sur une machine B
(unix like)
je veux transferer des fichiers de B vers A (et vice versa)

Solution bete et mechante :

Il se trouve que j'ai un acces ftp sur A depuis B. J'ouvre une session
ssh sur B et je transfere avec un client ftp. Je trouve cette solution
peu satisfaisante.

Quelles autres solutions puis-je mettre en oeuvre ?

merci pour les tuyaux.


Quelque chose comme (syntaxe à ajuster selon contexte) :

aprompt$ cd $directory2 ; ssh tar -cf - $directory1/ | tar -xf -

aprompt$ cd $directory2 ; tar -cf - . | ssh ( cd $directory1 &&
tar -xf - )

Avatar
Yves Lambert
Mehdi BENKIR wrote:
(je simplifie l'écriture)
$ cd d2 ; ssh tar -cf - d1/ | tar -xf -


d1 sans '/' sinon ça ne marche pas (SunOS) : message d'erreur surprenant
tar: d1/: No such file or directory.
Apparemment tar considère que '/' fait partie du nom du fichier

Cette méthode me semble plus sûre.

Depuis 'B' (je suis rentré chez moi) :

$ cp -r ~/d1/* ~/d2/ # l'arborescence de d1 est reproduite dans d2
$ scp -r :~/d1/* ~/d1 # ça fait tout autre chose :(

Apparemment, (la structure de 'd1' était simple) les fichiers des
sous-répertoires de d1 se retrouvent au premier niveau à la destination.
C'est très gênant...

Conclusion : l'emploi de sftp ou la méthode proposée par Mehdi me
semblent préférable.

Pour recopier une arborescence ce que propose Mehdi est plus naturel,
de plus j'ai bien scp et sftp sous linux, pas sûr du tout d'en disposer
sous irix ou SunOs.

$ cd $d2 ; tar -cf - . | ssh ( cd d1 && tar -xf - )


bash n'aime pas ces parenthèses :
bash: syntax error near unexpected token `('
J'essaie plus simple :

$ tar -cf - d2|ssh tar -xf -
ça marche : le répertoire d2 est créé (probleme : le répertoire est créé
sur ~yuser/)

résumé :

$ tar -cf - d1|ssh tar -xf - # pour copier d1 vers 'b'
$ ssh tar -cf - d1 | tar -xf - # pour récupérer d1 depuis 'b'


--
Est il possible que les participants, sauf les nouveaux mais y en a pas
du tout puissent annoncer leur rang sur USENET de manière à leur
répondre d'une manière adaptée, s'il vous plait.

Avatar
manu
Yves Lambert wrote:

$ cd $d2 ; tar -cf - . | ssh ( cd d1 && tar -xf - )


bash n'aime pas ces parenthèses :
bash: syntax error near unexpected token `('


Faut pas y mettre des quotes, pour que toute la comande soit
envoyée en face?

cd $d2 ; tar -cf - . | ssh '( cd d1 && tar -xf - )'

Note que du coup, on peut mettre ca:

cd $d2 ; tar -cf - . | ssh 'cd d1 && tar -xf -'

--
Emmanuel Dreyfus
http://hcpnet.free.fr/pubz