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?
tar
viassh
: unix.stackexchange.com/a/10028/79839Réponses:
La commande
scp -r source user@target:dest
parcourra tous les sous-répertoires de source et les copiera.Cependant,
scp
se comporte commecp
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 ne ferez probablement que des mises à jour, et non pas recréer le tout, vous trouverez donc probablement que les choses avancent plus rapidement si vous utilisez
rsync
plus de ssh à la place descp
. Probablement quelque chose comme...pour commencer. Si vous faites cela sur un réseau local, j'utiliserais personnellement les options
-avW
pourrsync
.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é de destination.la source
scp a un indicateur récursif qui fera ce que vous voulez.
scp -r /base/directory user@server:/to/location
de
man scp
la source
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.)
la source