web-dev-qa-db-fra.com

Comment faire scp copier des fichiers cachés?

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?

64
rascher

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.

68
Matt Simmons

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.)

25
cstamas

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.

9
kbyrd

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

3
stevensagaar

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é)

1

Comme scp prend en charge les expressions régulières, cela fera bien l'affaire pour vous:

scp -rp src/(*|.*) user@server:dest/

0
donmutti

Le contrôle de révision distribué gère les fichiers cachés

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 .

0
Serge Stroobandt

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.

0
Ray Cote

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.

0
Gergely Lukacsy