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 les fichiers cachés (par exemple, .htaccess).
J'invoque généralement ceci:
scp -rp src/ user@server:dest/
Cela ne copie pas les fichiers cachés. Je ne veux plus avoir à invoquer cela (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 page de manuel scp
concernant un "inclure les fichiers cachés".
Comment puis-je accomplir cela?
Cela devrait absolument correspondre aux fichiers cachés. Le/à la fin de la source indique "chaque fichier dans ce répertoire". Néanmoins, les tests et les recherches vous confirment. C'est un comportement stupide.
Le " answer " consiste à ajouter un point à la fin de la source:
scp -rp src/. user@server:dest/
La vraie réponse consiste à utiliser rsync.
Vous pouvez essayer rsync. Il est mieux adapté à ce travail:
rsync -av src/user @ server: dest /
(Et sa page de manuel mérite d'être lue.)
Ne mettez pas de barre oblique après le répertoire source. Votre code ressemblerait à ceci:
scp -rp src user@server:dest/
Cela va créer 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 copiera les fichiers cachés dans src.
Ce qui suit résoudra le problème, ceci a été entièrement testé sur notre environnement d'intégration continue
scp -rp src/. user@server:dest/
example scp -rp /usr/src/code/. [email protected]:/usr/dest/code/
J'espère que cela aide
Pour copier uniquement les fichiers cachés, utilisez cette commande
scp -rp /path_to_copy_hidden/.[!.]* user@Host:/path_to_paste/
Le jeu réel est le /.[!.]*
tag qui fait référence aux fichiers commençant par .
(caché)
Comme scp
prend en charge les expressions régulières, cela fera bien l'affaire pour vous:
scp -rp src/(*|.*) user@server:dest/
En raison de la vulnérabilité CVE-2018-20685, le /.
astuce ne peut plus être utilisé avec scp
. Cependant, le contrôle de révision distribué comme git
ou Hg Mecurial gèrera les fichiers cachés comme tous les autres fichiers. Voici les commandes de mon favori - Hg Mercurial :
server:$ Sudo apt install Mercurial
client:$ Sudo apt install Mercurial
client:$ hg init src
client:$ cd src/
client:$ hg addr
client:$ hg com -m "first commit"
client:$ cd
client:$ hg clone src ssh://user@server/dest/
Les modifications ultérieures devront être validées à nouveau avec client:$ hg com -m "commit message"
puis poussé en utilisant le client:$ hg Push
commande. Apprenez-en davantage sur les modifications à apporter à partir de cette Aide-mémoire Hg Mercurial .
Aucune des solutions scp ci-dessus n'a fonctionné pour moi. Cependant, j'ai trouvé que ce qui suit fonctionnait sur cygwin: scp -r directory/* Host: directory Le '*' correspondait à tous les fichiers visibles et sautait l'invisible.
Si la connexion par mot de passe est désactivée sur la machine distante et que la seule façon de se connecter est via une clé publique, vous pouvez utiliser ceci:
$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress [email protected]:/remote/source/directory/ /local/destination/directory/
Il copie également les fichiers cachés.
Veuillez également noter que "user1" doit avoir les autorisations pour lire ces fichiers, par exemple, vous ne pouvez pas copier les dossiers ssh d'autres utilisateurs avec cette méthode.