Comment puis-je obtenir la commande scp pour écraser le dossier de destination

41

J'utilise la commande scp pour copier certains fichiers sur un PC distant, comme vous le faites avec scp :)

Je remarque que le comportement par défaut d'une copie scp pour les fichiers consiste à écraser tous les fichiers existants. Maintenant, je veux copier un dossier afin que je fasse essentiellement la même chose:

scp -r <source_path> user@myOtherPc:<dest_path>

Où les parties de <> sont les chemins de mes dossiers. Cependant, lorsque je lance ceci, je reçois le message "le fichier existe". Y a-t-il un moyen de contourner ceci? une sorte de force écrasante?

Merci, fourrage

code_fodder
la source
2
Pourriez-vous donner quelques exemples de chemin? Je n'effectue pas de reproduire ceci sur mon système. Aussi, avez-vous vérifié les autorisations de fichiers?
Levans
Est-ce que cela vous donne des informations utiles si vous utilisez le mode verbeux? -v. En outre, utilisez-vous un chemin absolu ou relatif du côté de la destination? Je pense que si le dossier de destination existe déjà, il va créer le chemin source à l'intérieur du dossier de destination plutôt que d'écraser ( testdir/testdir)
beroe
2
C'est étrange que vous obteniez ceci. Soi-disant scp n'a pas noclobber ...
beroe
1
@ Levans Je n'ai pas vérifié les autorisations, je viens de jeter un coup d'œil et je pense que vous avez peut-être raison. J'ai supprimé tout ce qui se trouvait dans la zone cible et j'ai recommencé en n'utilisant que la commande "scp" et en utilisant l'utilisateur "root". J'ai pu copier le fichier / le dossier plusieurs fois :) ... Je ne suis pas sûr à 100% du problème d'autorisation I eu, mais maintenant, j'ai un "handle" sur la question, je peux probablement comprendre, merci
code_fodder
1
@Beroe Oui, c'est ce que je pensais aussi ... ça m'a confondu, mais je pense avoir commis une erreur d'utilisateur ici avec les permissions, je ne suis pas encore expert en Linux :( Mais je vais essayer de faire le verbose la prochaine fois que j'ai un problème comme celui-ci pour obtenir plus d'informations, merci. De plus, j'ai remarqué que parfois, le "dossier-à l'intérieur du dossier" se produisait ... mais c'est un autre problème: o
code_fodder

Réponses:

27

Comme indiqué précédemment, scp écrase volontiers tout fichier déjà présent.

Le problème "Le fichier existe" ne peut se produire que si vous avez un autre processus (comme un processus scp simultané ou autre) en train d'écrire des dossiers et des fichiers dans la même destination. Pensez à utiliser rsync à la place.

nicolasochem
la source
1
Je voudrais seulement ajouter: ... aussi longtemps que vous avez un accès en écriture à ce fichier ...
SDsolar
mais pour les dossiers, fusionne-t-il le dossier ou le remplace-t-il?
Dr_Hope
5

Comme Levans, je suis incapable de reproduire cela, mais avez-vous plutôt envisagé d'utiliser rsync sur ssh? Si vous copiez un grand nombre de fichiers, rsync peut être une meilleure option que scp. Il existe un certain nombre de bons guides en ligne, tels que:

http://troy.jdmz.net/rsync/index.html https://calomel.org/rsync_tips.html

Ce premier lien concerne les sauvegardes automatisées via cron. Par conséquent, certaines instructions (comme la création d'une clé ssh sans phrase secrète) peuvent ne pas être pertinentes pour vous.

Ben
la source
Intéressant, je ne savais pas que vous pouviez utiliser rsync de cette façon ... vous avez juste jeté un coup d’œil rapide à la page de manuel et vous avez l’impression que vous pouvez l’utiliser de la même manière que scp avec <source_path> et <utilisateur @ hôte: dest_path> paramètres. Je ne suis pas sûr à 100% que c'est ce que je veux depuis que je veux toujours copier / écraser sans me soucier du statut de la destination, mais c'est quand même une bonne idée :)
code_fodder
Ouais, ça vaudrait peut-être la peine d’avoir une pièce de théâtre, car elle devrait copier le fichier s'il a été modifié (ou la partie du fichier qui a été modifiée, il faudrait que je vérifie et je suis un peu trop fatigué à droite à présent).
Ben
haha .... ne t'inquiète pas pour le vérifier, je peux le faire ... mais merci pour l'info :)
code_fodder
Ah, cool, je peux arrêter de regarder les allumettes comme un moyen de tenir mes paupières ouvertes. ;)
Ben
1
Cela peut marcher, mais c'est un peu comme utiliser un marteau pour masser une mouche. ;-)
SDsolar
3

Vous recevrez ce message d'erreur si le répertoire de destination contient déjà un fichier portant le même nom que le répertoire source que vous tentez de transférer. Vous ne pouvez pas avoir un fichier portant le même nom qu'un répertoire dans le même répertoire.

EvR2f
la source