J'utilise souvent SCP pour copier des fichiers, en particulier des fichiers liés au Web. Le problème est que chaque fois que je fais cela, je ne peux pas obtenir ma commande pour copier des fichiers cachés (par exemple, .htaccess).
J'appelle généralement ceci:
scp -rp src/ user@server:dest/
Cela ne copie pas les fichiers cachés. Je ne veux pas avoir à invoquer ce nouveau (en faisant quelque chose comme scp -rp src/.* ...
- et qui a étrange .
et ..
implications de toute façon.
Je n'ai rien vu dans la scp
page de manuel concernant un "inclure les fichiers cachés".
Comment puis-je accomplir cela?
src/.*
copiessrc/..
(le répertoire parent), non?Réponses:
Cela devrait absolument correspondre aux fichiers cachés. Le / à la fin de la source dit "chaque fichier sous ce répertoire". Néanmoins, les tests et les recherches vous le permettent. C'est un comportement stupide.
La " réponse " consiste à ajouter un point à la fin de la source:
scp -rp src/. user@server:dest/
La vraie réponse est d'utiliser rsync.
la source
scp -r source/ host:source2
copie les fichiers de points. Fonctionne sous OpenSSH 5.1 à partir de 2007..
à la fin ne fonctionne plus (2019) en raison de problèmes de sécurité. Ceci est expliqué ici: superuser.com/questions/1403473/scp-error-unexpected-filenameVous pouvez essayer rsync. C'est mieux adapté pour ce travail:
(Et sa page de manuel mérite d'être lue.)
la source
Ne mettez pas de barre oblique après le répertoire source. Votre code ressemblerait à ceci:
Cela créera un répertoire "src" sous "dest" sur la machine distante, avec tous les fichiers cachés inclus. Ce n'est probablement pas exactement ce que vous voulez, mais il va copier les fichiers cachés dans src.
la source
Ce qui suit va résoudre le problème, cela a été entièrement testé sur notre environnement d'intégration continue
J'espère que ça aide
la source
scp: error: unexpected filename: .
. Assurez-vous de vérifier si cela fonctionne avec votre distribution, collègue Googler :)Pour copier uniquement les fichiers cachés, utilisez cette commande
Le jeu réel est l’
/.[!.]*
étiquette qui fait référence aux fichiers commençant par.
(caché)la source
Aucune des solutions scp ci-dessus n'a fonctionné pour moi. Cependant, j’ai constaté que cgwin fonctionnait comme suit: scp -r répertoire / * hôte: répertoire Le "*" correspond à tous les fichiers visibles et ignore l’invisible.
la source
Si la connexion par mot de passe est désactivée sur la machine distante et que le seul moyen de se connecter est via une clé publique, vous pouvez utiliser ceci:
Il copie également les fichiers cachés.
Veuillez également noter que "utilisateur1" doit avoir les autorisations pour lire ces fichiers. Par exemple, vous ne pouvez pas copier les dossiers ssh des autres utilisateurs avec cette méthode.
la source
Comme
scp
supporte les expressions régulières, ceci fera bien l'affaire pour vous:scp -rp src/(*|.*) user@server:dest/
la source
Le contrôle de révision distribué gère les fichiers cachés
En raison de la vulnérabilité CVE-2018-20685, l'
/.
astuce ne peut plus être utilisé avecscp
. Cependant, un contrôle de révision distribué tel quegit
ou Hg Mecurial gérera les fichiers cachés comme n'importe quel autre fichier. Voici les commandes pour mon favori Hg Mercurial :Les modifications ultérieures devront être validées à nouveau avec
client:$ hg com -m "commit message"
, puis poussées à l'aide de laclient:$ hg push
commande. En savoir plus sur les modifications à apporter à cette aide-mémoire Hg Mercurial .la source