39 votes

Empêcher l'écrasement des fichiers lors de l'utilisation de Scp

Je copiais des fichiers en utilisant scp et je ne veux pas écraser les fichiers déjà présents.

Si j'utilisais la commande cp, je pense que cela peut être fait en utilisant cp -n.

Existe-t-il une option similaire pour scp, j'ai parcouru la documentation de SCP et il semble qu'il n'y ait pas de telle option.

Est-ce que rsync ou sftp est la solution pour résoudre ce problème ?

Informations complémentaires :

Système d'exploitation : Ubuntu 12.04

36voto

osulehria Points 466

Rsync semble être la solution à votre problème. Voici un exemple que j'ai obtenu de ici :

rsync -avz foo:src/bar /data/tmp

L'option -a préservera les permissions, la structure des répertoires, la propriété et les liens symboliques. Vous pouvez également spécifier n'importe laquelle de ces options individuellement.

-v et -z signifient respectivement verbeux et compressé. Vous n'en avez pas vraiment besoin, bien que -z soit utile si vous copiez de gros fichiers.

15voto

Bruno Points 41

Je viens de trouver une solution simple. Marquez les fichiers existants comme étant en lecture seule.

11voto

Asif Khan Points 31
rsync -avz --ignore-existing /source folder/* user@remoteserver:/dstfolder/

--ignore-existing n'écrasera pas les fichiers du serveur distant ou du serveur de destination*.

0voto

dsz Points 506

J'ai utilisé rsync dans le passé pour cela, mais je me suis retrouvé à essayer de récupérer des fichiers à partir d'une machine Windows avec CopSSH et sans rsync :-( La méthode suivante a bien fonctionné pour moi, en utilisant des tests de fichiers pour éliminer les fichiers qui seraient écrasés, et en générant plusieurs requêtes 'get' vers une instance sftp.

(  echo  'cd work/ftp/' ; 
   ssh <user>@<machine> 'cd work/ftp/ && ls -1 ITEM_SALE_SUMMARY_V.*.dat.xz' |
   while read line; do [[ -f "$line" ]] || echo get "$line"; done 
) | sftp  <user>@<machine>

Juste au cas où d'autres auraient besoin d'une solution non-rsync !

-1voto

vladr Points 34562

rsync sur ssh il devra l'être.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X