J'essaie de copier un grand répertoire d'un lecteur à un autre. Je me suis déconnecté par erreur avant la fin, donc seulement environ 80% des fichiers ont été copiés. Est-il possible de copier les fichiers restants sans recommencer à zéro?
23
cp -u
peut ne pas s'en soucier, car il ne vérifie que les horodatages, pas la taille ... Donc, vous devez d'abordtouch
les fichiers source si vous devez l'utiliser . (Ou utilisez simplementrsync
.)Pour les transferts de fichiers partiels,
cp
ce n'est peut-être pas ce dont vous avez besoin.Je suggère d'utiliser à la
rsync
place. Même lorsque le transfert échoue, vous pouvez simplement réexécuter la commande ultérieurement, et elle ne copiera que les fichiers manquants.Exemple:
(copiera
from/
dans leto/
répertoire)Étant donné
rsync
que la synchronisation et la vérification après chaque transfert, garantir que les fichiers ont été copiés correctement est triviale.L'ensemble swich
-aPEmivvz
est le standard aller à la sélection, à chaque fois que la copie de fichiers sur des réseaux ou des disques externes, y compris les appareils plug-in, comme des cartes SD, etc.Ce sont les commutateurs que j'utilise presque toujours:
-a
: "archive", inclut-rlptgo
(récursif, liens symboliques en tant que liens symboliques, autorisations, heures, groupe, propriétaire)-P
: "progression partielle" montre une belle barre de progression pour chaque fichier-E
: "l'exécutabilité" conserve l'exécutable ou non-m
: "noempty" élague les dires vides-i
: "résumé" imprimer le résumé des modifications pour toutes les mises à jour-vv
: "plus verbeux"-z
: "compression"la source
Ce que vous voulez probablement plutôt que
cp
dans ce cas, c'estrsync
.Copiez simplement récursivement une structure de répertoires vers un nouvel emplacement:
la source
Vous ne devez pas l'utiliser
cp
pour cela. Comme d'autres l'ont dit, ce n'est pas le bon outil pour le travail. L'outil correct va dépendre de vos objectifs.Si vous voulez juste une copie directe:
rsync /source /destination
avec un certain niveau de drapeaux. Voir les autres réponses pour de très bons exemples.Si vous souhaitez avoir des mises à jour bidirectionnelles
unison
est la voie à suivre. Rsync ne réussit pas très bien dans la résolution des conflits avec les synchronisations bidirectionnelles. Supprime spécialement. Donc, vous voulez que des copies bidirectionnelles se déclenchentunison
Si vous souhaitez des sauvegardes et que les fichiers sont basés sur du texte, vous pouvez essayer d'utiliser
git
. Git peut être exécuté localement, il n'y a pas besoin de "serveur". En fait, les serveurs git ne sont que des méthodes de partage de fichiers. Vous pouvez totalement avoir un dépôt git sur le lecteur de sauvegarde et y "pousser". Encore une fois, cela ne fonctionne vraiment que si les fichiers sont basés sur du texte et que vous essayez d'obtenir une sauvegarde à sens unique.Encore une fois, si vous optez pour une sauvegarde (et pas seulement une fois), regardez deja-dupe, BackIntime ou des options similaires. Ils prennent des instantanés des données à un moment donné. Ils exécutent tous rsync sous le capot.
la source
Vous pouvez également recopier tous les fichiers, demander une confirmation pour chaque écrasement, puis répondre automatiquement non à la question:
(vous avez probablement utilisé plus d'options, comme
-r
, alors ajoutez-les simplement commecp -pri /source /dest
...)la source
Utilisez la commande
rsync
avec les options suivantes:la source