39 votes

Puis-je scp un dossier qui a des sous-dossiers ?

J'ai un dossier qui contient des fichiers pour un site web statique comme :

/site/index.html
/site/css/css.css
/site/js/js.js
/site/images/...

Si je mets à jour quelque chose sur mon ordinateur portable, je veux une commande unique pour envoyer les fichiers à mon serveur ubuntu. Je ne veux pas configurer FTP sur ce serveur si ce n'est pas nécessaire, je me demande si scp pourrait gérer cela ?

0 votes

Je préfère tar via ssh : unix.stackexchange.com/a/10028/79839

67voto

David Mackintosh Points 14093

La commande scp -r source user@target:dest parcourra tous les sous-répertoires de source et les copier.

Cependant, scp se comporte comme cp et copie toujours les fichiers, même s'ils sont identiques sur la source et la destination. [Voir ici pour une solution de contournement].

Comme il s'agit d'un site web statique, il est fort probable que vous ne fassiez que des mises à jour, et non que vous recréiez l'ensemble du site. rsync par ssh au lieu de scp . Probablement quelque chose comme

rsync -av -e ssh source user@target:dest

...pour commencer. Si vous effectuez cette opération sur un réseau local, j'utiliserais personnellement les options suivantes -avW au lieu de rsync .

Rsync vous donne également la possibilité de dupliquer les suppressions dans votre source ; ainsi, si vous supprimez un fichier de votre arborescence, vous pouvez lancer l'opération suivante rsync comme ci-dessus, et inclure le drapeau --delete et il supprimera le même fichier du côté de la destination.

10voto

Zypher Points 36865

Scp a un drapeau récursif qui fera ce que vous voulez. scp -r /base/directory user@server:/to/location

de man scp

-r      Recursively copy entire directories.  Note that scp follows symbolic
          links encountered in the tree traversal.

2voto

Scp -r et rsync -r sont les moyens les plus fiables d'obtenir ce que vous voulez, comme d'autres l'ont noté.

Vous pouvez également utiliser sshfs pour le "monter" comme s'il s'agissait d'un disque local : sshfs user@host:/site /mnt/mountpoint

(Cependant, il est probablement préférable de travailler localement et de déployer avec rsync. Juste un autre outil à connaître).

0voto

user552904 Points 61

Utilisez la commande suivante

scp -r dossier source nom d'utilisateur@serveur : dossier de destination

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X