Copiez sur un autre disque NTFS et conservez les liens durs

10

Je dois copier la structure de répertoires d'un disque NTFS local vers un autre (Windows 7+) et conserver les liens durs qui existent dans cette structure de répertoires.

Une solution acceptable serait de remplacer les liens physiques par des liens symboliques (relatifs) avant la copie, mais je ne sais pas non plus si c'est réalisable.

Quelles sont les options ici?

Flacon Estus
la source
Selon superuser.com/questions/624811/… , un logiciel appelé "Shadow Copy Cloner" peut le faire.
Vojtech
1
@Vojtech Ce n'est pas un logiciel gratuit et semble être indisponible. Mais ln.exe convient à mes besoins, en revanche. Cependant, je préférerais avoir une alternative avec GUI.
Estus Flask
1
@PJMahoney Oui, ce sont des liens durs, il n'y aurait aucun problème avec la copie des jonctions et des symboles, ces derniers pourraient juste être copiés et corrigés plus tard. Je n'ai pas l'intention de le cloner, juste de copier la structure du répertoire (qui fait partie du disque entier) sur un autre disque non vide.
Estus Flask

Réponses:

9

Outil pour copier des liens matériels sur des partitions de disque séparées

LN - Liens durs de ligne de commande

Commander: ln --copy x:\dir\dir2 y:\dir\newdir

Dans l'exemple ci-dessus, les répertoires et fichiers sous x: \ dir \ dir2 sont copiés dans y: \ dir \ newdir, et tous les liens / jonctions / liens symboliques dans x: \ dir \ dir2 sont copiés / liés à leurs nouveaux emplacements sous y : \ dir \ newdir.

Ressource: http://schinagl.priv.at/nt/ln/ln.html

Téléchargement: http://schinagl.priv.at/nt/ln/ln.html#contact

Remarque: Il semble que vous venez de télécharger ce logiciel pour votre architecture CPU à partir du fichier ZIP, ainsi que vcredist (Visual C ++ Redistributable) et de l'installer. Il suffit ensuite d'extraire les fichiers et les dossiers du fichier ZIP vers un nouveau dossier quelque part (.eg C:\Temp). En ligne de commande, accédez simplement à ce dossier [répertoire], puis exécutez les commandes nécessaires pour vos emplacements de lecteur, comme le montre l'exemple ci-dessus. L'exécution ln --helpaffiche les détails de l'aide, mais l'exemple de commande ci-dessus est censé copier le hard linkspar la documentation.


Extension de Shell de lien

Ressource: http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

Téléchargement: http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html#contact

Sections ou fonctions d'intérêt avec ce logiciel

  • Smart Mirror
  • Clone
  • Smart Copy

ln - Liens de ligne de commande - Télécharger la capture d'écran entrez la description de l'image ici

Link Shell Extension - Télécharger la capture d'écran entrez la description de l'image ici


NOTES INTÉRESSANTES

Il semble hard linksêtre verrouillé sur la même partition de disque pour leurs pointeurs de fichiers, etc. et ne peut pas être utilisé sur plusieurs partitions. De plus, hard linkssur les partitions NTFS font partie des Master File Tableenregistrements (ou des attributs pour les nombres au moins), donc les copier sur un disque existant qui a le sien MFTsemblerait être un problème si vous ne clonez pas octet par octet au niveau de la partition au moins.

Pimp Juice IT
la source
4

L'utilitaire de ligne de commande rsyncfait ce que vous demandez.

En supposant que vos anciennes données se trouvent à l'emplacement A et que vos nouvelles données se trouvent sur B, procédez comme suit:

rsync -ahPruvz --hard-links A B

Citant du manuel rsync:

Cela indique à rsync de rechercher les fichiers liés en dur dans la source et de lier ensemble les fichiers correspondants sur la destination.

Comment l'obtenir rsyncet l'utiliser? Il existe 2 alternatives simples pour Windows:

Première alternative: l'utilisation cygwin. C'est un logiciel Windows. Installez-le, ajoutez rsyncà l'étape de sélection des packages. Laissez tout le reste par défaut. Après l'avoir installé, utilisez son shell pour taper la commande. Si vous le souhaitez, vous pouvez utiliser le chemin complet au /usr/bin/rsynclieu de simplement rsync. Si vous souhaitez accéder aux lecteurs Windows, utilisez des chemins d'accès tels que "/ cygwin / lecteurs" et essayez toujours de compléter automatiquement à l'aide de TAB.

Deuxième alternative: s'il s'agit d'un ordinateur de bureau, utilisez une distribution GNU / Linux en direct. Préparez une image USB en direct, démarrez-la, montez les disques souhaités et appelez rsync. Si l'image en direct n'en a pas rsync, installez-la. ( apt-get install rsyncdans Debian et ses dérivés.) Si vous n'êtes pas encore familiarisé avec l'écosystème Linux, cygwin pourrait être plus facile.

VasyaNovikov
la source
Merci d'avoir clarifié cela. J'ai vérifié rsync, et il fait effectivement le travail sur les liens durs (/ cygwin / driveletter et les barres obliques provoquent un certain inconfort mais cela fonctionne).
Estus Flask
note: si Ac'est un répertoire, alors Bdevrait être le nom que le répertoire prendra sur la cible (contrairement cppar exemple, où le dernier argument est le répertoire parent)
MM
@estus - Quelles méthodes avez-vous essayées, comment cela a-t-il fonctionné? et quels résultats avez-vous vu et aimé le plus?
Alex S
@AlexS Je ne me souviens pas, mais je me suis probablement retrouvé avec lncomme indiqué dans une autre réponse. Cygwin rsyncde cette réponse peut également fonctionner, comme je l'ai mentionné.
Estus Flask
1
@AlexS je utilitaire CLI, ln --copy. En ce qui concerne l'interface graphique, je suppose que «Smart Copy» est ce que vous recherchez.
Estus Flask
3

Essayez de regarder dans rsync pour Windows. Puisque rsync a une option pour conserver les liens durs (flag -H, --hard-links), il devrait faire le travail (source: https://download.samba.org/pub/rsync/rsync.html ).

Vous pouvez essayer de chercher quelque chose comme cwRsync: https://www.itefix.net/cwrsync# celui-ci a une interface graphique.

cwRsync est un package de Rsync pour Windows avec une interface graphique client. Vous pouvez utiliser cwRsync pour une sauvegarde et une synchronisation rapides des fichiers à distance.

Martynas Smilgevičius
la source
1
Veuillez faire preuve de prudence lorsque vous recommandez un logiciel. Tel qu'il est écrit, votre réponse peut être considérée comme du spam. Votre réponse doit inclure une description du logiciel et comment il répond à la question. Plus d'informations: Comment recommander un logiciel dans mes réponses?
bwDraco
1
Je n'ai pas pu y arriver avec rsync auparavant (je crois que j'ai utilisé DeltaCopy pour l'interface graphique). Il peut être pertinent pour l'implémentation de liens durs NTFS et le fait que rsync est principalement un outil * nix. Des éclaircissements seraient appréciés.
Estus Flask
1

Très tard pour la fête ici.

Combattre le feu par le feu. Puisque robocopy a permis le désordre, nous utiliserons également robocopy pour le nettoyer.

Créez un répertoire vide puis utilisez robocopy pour copier le répertoire vide dans la cible (qui a les chemins super longs) en utilisant l'option de purge.

md %temp%\foo
robocopy %temp%\foo target /purge
rd target
rd %temp%\foo

Cela devrait fonctionner.

Robert Ricketts
la source