Comment copier un répertoire entier dans un répertoire du même nom sans remplacer le contenu du répertoire de destination? (au lieu de cela, j'aimerais ajouter au contenu du dossier de destination)
ssh
rsync
scp
synchronization
Daniel Böhmer
la source
la source
Réponses:
Utilisez
rsync
et passez-u
si vous voulez mettre à jour uniquement les fichiers les plus récents du répertoire d'origine ou--ignore-existing
ignorer tous les fichiers déjà présents dans la destination.(Notez le
/
côté source: sans celarsync
, il créerait/remote/directory/directory
.)la source
--ignore-existing
ajoute sans remplacer, quelle perte de données voyez-vous?rsync
facilement disponible .... (comme Win32-OpenSSH)--rsync-path
est nécessaire)scp écrasera les fichiers si vous avez des droits en écriture.
En d'autres termes: vous pouvez faire
scp
en sorte que les fichiers soient ignorés en supprimant temporairement les autorisations d'écriture sur ces fichiers (si vous êtes le propriétaire des fichiers, c'est-à-dire).la source
scp -r [email protected]:/location/of/files/* /local/location/
Vous ne pouvez copier que les nouveaux fichiers par date. Utilisation
find
la source
Si vous pouvez rendre le contenu du fichier de destination en lecture seule:
avant de courir
scp
(il va se plaindre et sauter les fichiers existants).Et modifiez-les ensuite (
chmod +w
pour obtenir une valeur basée sur umask). Si tous les fichiers n’ont pas l’autorisation d’écrire en fonction de votre umask, vous devrez peut-être stocker ces autorisations pour pouvoir les restaurer.(La réponse de Gilles écrase les fichiers existants si, localement, ils sont plus récents, j'ai perdu de précieuses données de cette façon. Je ne comprends pas pourquoi cette réponse fausse et nuisible a autant de votes positifs).
la source
rsync --ignore-existing
avez-vous perdu des données?find: missing argument to '-exec'
utilisant cette commande, et avait plutôt à utiliser:find . -type f -exec chmod a-w {} \;
. Mon linux est mauvais, ymmv.find . -type f -exec chmod a-w {} \;
J'ai eu une tâche similaire, dans mon cas , je ne pouvais pas utiliser
rsync
,csync
ou FUSE parce que mon stockage a seulement SFTP.rsync
impossible de changer la date et l’heure du fichier, certains autres utilitaires (du typecsync
) m’ont montré d’autres erreurs: « Impossible de créer un fichier temporaire Clock skew détecté ».Si vous avez accès au serveur de stockage, installez-le
openssh-server
ou lancez-le enrsync
tant que démon ici.Dans mon cas, je ne pouvais pas faire cela et la solution était: lftp .
lftp
L'utilisation de Syncronization est la suivante:/src/folder
- est le dossier sur mon PC,/rem/folder
- estsftp://sft.domain.tld/rem/folder
.Vous pouvez trouver des pages de manuel par le lien: http://lftp.yar.ru/lftp-man.html
la source
Pour copier tout un tas de fichiers, il est plus rapide de les archiver. En utilisant -k, vous évitez également que tar écrase les fichiers lors de sa décompression sur le système cible.
la source
scp
écrase les fichiers et il n’ya pas d’interrupteur pour l’interrompre, mais vous pouvez copier des choses comme vous le voulez, faire le scp, puis copier les fichiers existants. Exemples:Copiez tous les fichiers existants en chemin
Copier tout en utilisant scp
Copiez les fichiers originaux sur tout ce que scp a écrit:
la source
Pour ce faire, vous pouvez également effectuer une opération
ls
dans le dossier de destination:Sur le dossier de destination distant:
Sur source:
Sur la destination:
la source
-
>
nouvelle ligne ou d'autres caractères spéciaux. 3. Coder en dur une boucle for dans un script python. Générer un programme à l'exécution est difficile et délicat (même lorsqu'il est effectué par des programmeurs professionnels), pour de nombreuses raisons. Générer un script shell est encore pire - une idée terrible.