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 qu'une seule commande envoie les fichiers à mon serveur Ubuntu. Je ne veux pas y installer FTP si je n'en ai pas trop, je me demande si scp serait capable de gérer ça?
La commande scp -r source user@target:dest
parcourra tous les sous-répertoires de source et les copiera.
Cependant, scp
se comporte comme cp
et copie toujours les fichiers, même s'il est identique à la fois sur la source et sur la destination. [Voir ici pour une solution de contournement.]
Comme il s'agit d'un site Web statique, vous n'effectuerez probablement que des mises à jour, et non pas recréerez le tout, donc vous constaterez probablement que les choses avancent plus rapidement si vous utilisez rsync
sur ssh au lieu de scp
. Probablement quelque chose comme
rsync -av -e ssh source user@target:dest
...pour commencer. Si vous faites cela sur un réseau local, j'utiliserais personnellement les options -avW
à la place de rsync
.
Rsync vous donne également la possibilité de dupliquer les suppressions dans votre source; donc si vous supprimez un fichier de votre arborescence, vous pouvez exécuter rsync
comme ci-dessus et inclure l'indicateur --delete
et il supprimera le même fichier du côté destination.
scp a un indicateur 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.
scp -r et rsync -r sont les moyens les plus fiables pour 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 lecteur local: sshfs user@Host:/site /mnt/mountpoint
(Cependant, il vaut probablement mieux travailler localement et déployer avec rsync. Juste un autre outil à connaître.)