20 votes

Copier uniquement les nouveaux fichiers - est-ce possible ? En gros, je veux fusionner deux dossiers

J'ai un dossier sur le lecteur 1 appelé Musique, et il fait 100 Go. J'ai un dossier sur le lecteur 2 appelé Musique, et il fait 116 Go. Il s'agit de la version la plus récente. Comment puis-je copier le dossier Musique du lecteur 2 au lecteur 1 sans avoir à réécrire chaque fichier ?

0 votes

Quelle version d'OS X utilisez-vous ?

1 votes

J'utilise la version 10.7.4. Lorsque je copie le dossier d'un lecteur à l'autre, on me demande si je veux le remplacer. Pas d'option de fusion.

37voto

John D. Points 613

C'est un cas d'utilisation classique de rsync :

rsync -av /source-path/source-dir /destination-path

rsync copiera uniquement les fichiers nouveaux et modifiés vers le nouvel emplacement.

Il est important de comprendre comment fonctionne une barre oblique de fin de ligne sur l'argument source. S'il y a une barre oblique de fin, le contenu du fichier /source-path/source-dir sera copié dans chemin de destination . S'il n'y a pas de barre oblique de fin, alors répertoire-source lui-même sera copié vers la destination et son contenu se trouvera à un niveau inférieur dans la hiérarchie de destination.

Donc, si vous voulez répliquer un chemin d'accès à un autre, incluez la barre oblique comme suit :

rsync -av /sourcepath/sourcedir/ /duplicatpath/sourcedir/

1 votes

Belle prise ! Et si vous faites cela à partir de plusieurs disques (ou n'importe où sur votre ordinateur) et que vous ne voulez pas taper les répertoires, vous pouvez simplement faire glisser un disque (usb externe, ou capsule temporelle) ou juste un répertoire spécifique et le faire ajouter à la commande pour vous. Faites simplement glisser l'emplacement cible dans le terminal

0 votes

Mec, merci beaucoup d'avoir suggéré la barre oblique. J'ai passé notre temps à me demander pourquoi rsync -av ./foo/bar /vol1/foo/bar copiait tous les fichiers existants. Foutus slashs lol !!!

5voto

Nix Points 987

L'option de fusion ne s'affichera que si vous copiez (plutôt que de déplacer) le dossier. Assurez-vous que vous tenez option pendant que vous faites glisser le nouveau dossier vers l'emplacement de l'ancien dossier. Vous pouvez également utiliser + c pour copier le nouveau dossier et + v pour coller sur l'ancien dossier devrait vous donner l'option de fusionner les fichiers.

0 votes

Cela semble toujours écrire sur des fichiers qui n'ont pas besoin d'être réécrits. Utilisation de rsync au lieu de

0 votes

Même si l'option de fusion est disponible, il arrive qu'elle ne fonctionne pas (elle signale simplement une erreur et ne fait rien), surtout dans le cas de gros dossiers comme dans votre cas. C'est une autre raison pour laquelle vous devriez utiliser rsync.

5voto

SideOfBacon Points 291

UPDATE

Installez d'abord coreutils. Exécutez brew install coreutils . Si vous n'avez pas brew installé... repassez à Windows !

Vérifiez que cp --version version des sorties cp (GNU coreutils) 8.^^

Alors vous aurez la bonne cp et la version -u Le drapeau fonctionnera.


Vérifiez le cp commande. Utilisez man cp et lire les options. Vous pouvez faire quelque chose comme :

cp -r -u ~/source ~/destination

-R, -r , --recursive : copier les répertoires récursivement
-u , --update : copie uniquement lorsque le fichier SOURCE est plus récent que le fichier de destination ou lorsque le fichier de destination est manquant.
-p comme --preserve=mode,ownership,timestamps
-v --verbose : expliquer ce qui est fait

Donc si vous voulez copier des fichiers de votre Téléchargements/musique dossier pour dire que votre Musique/nouveauté dossier que vous feriez quelque chose comme :
*`cp -ruvp ~/Downloads/music/ ~/Music/new/`**
Cela fusionnerait le contenu de ces deux dossiers et si deux fichiers avec le même nom et le même chemin existent, il garderait le plus récent en se basant sur l'horodatage.

1 votes

Êtes-vous sûr que l'option -u fonctionne avec la commande cp sous OSX ? J'obtiens le message "cp : illegal option -- u" dans Sierra. Il semble que toutes les commandes ne soient pas les mêmes que sous Linux.

0 votes

Essayez la commande cp --help et voyez si l'option est disponible. Ou vérifiez la commande cp --version et assurez-vous qu'elle est à jour. J'utilise : cp (GNU coreutils) 8.27

1 votes

Malheureusement, -u n'est pas un drapeau valide pour cp sous OS X. Il serait très pratique de l'avoir !

0voto

dallen Points 337

Je ne sais pas pourquoi le bouton par défaut de Lion Merge ne s'affiche pas pour moi. B ditto . Trouvé ici : https://superuser.com/a/221599/102789

2 votes

ATTENTION ! ditto ne conserve pas les fichiers les plus récents, il écrase toujours la destination avec la source. Si le fichier source est plus ancien, il effacera le nouveau fichier et le remplacera par l'ancien.

0 votes

C'est vrai - avertissement très important de FrancescoMM, utilisez rsync

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X