web-dev-qa-db-fra.com

scp -r ... mais laisse de côté (exclut) un sous-répertoire spécifié

Voici la structure du répertoire:

/a/
/a/b/
/a/c/

Je veux tout copier, SAUF pour le sous-répertoire/a/c /.

scp -rp myserver:/a .      # this will copy everything

Q: Comment pourrais-je spécifier un répertoire à ne pas utiliser dans la commande scp?

29
russian_spy

Je ne pense pas que vous puissiez le faire, mais vous pouvez utiliser rsync? Quelque chose comme ça:

rsync -a --exclude=a/c myserver:/a .
28
Paul Dixon

Je pense que c'est peut-être la bonne façon de le faire, donc vous utilisez toujours SSH. Je n'ai pas trouvé de moyen de le faire avec scp - mais utiliser rsync sur ssh pourrait le résoudre.

rsync -e 'ssh -ax' -av --exclude /a/c myserver:/a .

Si vous utilisez le commutateur -n, le processus sera alors exécuté à sec:

 rsync -e 'ssh -ax' -av --exclude /a/c -n myserver:/a .
5
Ket Majmudar

Vous pouvez utiliser le globbing étendu comme dans l'exemple ci-dessous:

#Enable extglob
shopt -s extglob

cp -rv !(./excludeme/*.jpg) /var/destination
1
WackGet

Ce n’est pas le moyen idéal de le faire, mais définissez le sous-répertoire que vous voulez exclure en lecture seule. chmod -R 444 /a/c devrait faire l'affaire. Vous obtiendrez une erreur "autorisation refusée" lorsqu'il essaiera d'écrire sur ce répertoire.

0
sjobe