Copia su un altro disco NTFS e conserva i collegamenti reali


10

Devo copiare la struttura delle directory da un disco NTFS locale a un altro (Windows 7+) e preservare i collegamenti reali esistenti all'interno di questa struttura di directory.

Una soluzione accettabile sarebbe quella di sostituire i collegamenti fisici con collegamenti simbolici (relativi) prima della copia, ma non sono sicuro che sia fattibile.

Quali sono le opzioni qui?


Secondo superuser.com/questions/624811/… , un software "Shadow Copy Cloner" può farlo.
Vojtech,

1
@Vojtech Non è freeware e sembra non essere disponibile. D'altra parte, ln.exe soddisfa le mie esigenze. Tuttavia, preferirei avere un'alternativa con la GUI.
Estus Flask

1
@PJMahoney Sì, questi sono collegamenti reali, non ci sarebbero problemi con la copia di giunzioni e simboli, quest'ultimo potrebbe essere semplicemente copiato e riparato in seguito. Non intendo clonarlo, solo per copiare la struttura della directory (che fa parte dell'intero disco) su un altro disco non vuoto.
Estus Flask,

Risposte:


9

Strumento per copiare i collegamenti reali tra partizioni del disco separate

LN - Collegamenti diretti dalla riga di comando

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

Nell'esempio sopra, le directory e i file sotto x: \ dir \ dir2 vengono copiati in y: \ dir \ newdir e tutti gli hardlink / giunzioni / collegamenti simbolici all'interno di x: \ dir \ dir2 vengono copiati / collegati alle loro nuove posizioni in y : \ dir \ newdir.

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

Scarica: http://schinagl.priv.at/nt/ln/ln.html#contact

Nota: sembra che sia sufficiente scaricare questo software per l'architettura della CPU dal file ZIP, nonché il vcredist (Visual C ++ ridistribuibile) e installarlo. Quindi basta estrarre i file e le cartelle dal file ZIP in una nuova cartella da qualche parte (.eg C:\Temp). Nella riga di comando, basta andare nella cartella [directory] e quindi eseguire i comandi necessari per le posizioni dell'unità come mostrato nell'esempio sopra. L'esecuzione ln --helpmostra i dettagli della guida, ma l'esempio di comando sopra riportato dovrebbe copiare hard linksla documentazione.


Estensione della shell di collegamento

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

Scarica: http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html#contact

Sezioni o funzioni di interesse con questo software

  • Smart Mirror
  • Clone
  • Smart Copy

ln - Hardlink della riga di comando - Scarica la schermata inserisci qui la descrizione dell'immagine

Estensione Shell collegamento - Scarica schermata inserisci qui la descrizione dell'immagine


NOTE INTERESSANTI

Sembra che hard linkssiano bloccati sulla stessa partizione del disco per i loro puntatori di file, ecc. E non possono essere utilizzati su più partizioni. Inoltre, hard linkssulle partizioni NTFS fanno parte dei Master File Tablerecord (o almeno degli attributi per i conteggi), quindi copiarli su un disco esistente che ha il suo MFTsembrerebbe un problema se non clonate byte per byte a livello di partizione almeno.


4

L'utilità della riga di comando rsyncfa ciò che chiedi.

Supponendo che i tuoi vecchi dati si trovino nella posizione A e che i tuoi nuovi dati siano nella posizione B, procedi come segue:

rsync -ahPruvz --hard-links A B

Citando dal manuale di rsync:

Questo dice a rsync di cercare i file hard-link nell'origine e collegare insieme i file corrispondenti sulla destinazione.

Come ottenerlo rsynce usarlo? Esistono 2 semplici alternative per Windows:

Prima alternativa: usare cygwin. È un software Windows. Installalo, aggiungi rsyncalla fase di selezione dei pacchetti. Lascia tutto il resto predefinito. Dopo averlo installato, usa la sua shell per digitare il comando. Se lo desideri, puoi utilizzare il percorso completo, /usr/bin/rsyncanziché solo rsync. Se si desidera accedere alle unità Windows, utilizzare percorsi come "/ cygwin / drives" e provare sempre a completare automaticamente usando TAB.

Seconda alternativa: se si tratta di un computer desktop, utilizzare una distribuzione GNU / Linux live. Prepara un'immagine USB live, avvia da essa, monta i dischi desiderati e invoca rsync. Se l'immagine live non ha rsync, installarla. ( apt-get install rsyncin Debian e suoi derivati). Se non hai ancora esperienza con l'ecosistema Linux, Cygwin potrebbe essere più facile.


Grazie per aver chiarito questo. Ho controllato rsync e fa davvero il lavoro su hard link (/ cygwin / driveletter e le barre causano qualche disagio ma funziona).
Estus Flask,

nota: se Aè una directory, allora Bdovrebbe essere il nome che la directory assumerà sulla destinazione (a differenza, cpad esempio, dove l'ultimo argomento è la directory principale)
MM

@estus - Quali metodi hai provato, come ha funzionato? e quali risultati hai visto e ti sono piaciuti di più?
Alex S,

@AlexS Non mi ricordo, ma probabilmente ho finito con lnquello mostrato in un'altra risposta. Anche Cygwin rsyncdi questa risposta potrebbe funzionare, come ho già detto.
Estus Flask

1
@AlexS Ho usato utilità CLI, ln --copy. Per quanto riguarda la GUI, suppongo che 'Smart Copy' sia quello che stai cercando.
Estus Flask

3

Prova a esaminare rsync per Windows. Poiché rsync ha un'opzione per conservare i collegamenti (flag -H, --hard-links) dovrebbe fare il lavoro (fonte: https://download.samba.org/pub/rsync/rsync.html ).

Potresti provare a cercare qualcosa come cwRsync: https://www.itefix.net/cwrsync# questo ha una GUI.

cwRsync è un pacchetto di Rsync per Windows con una GUI client. È possibile utilizzare cwRsync per il backup e la sincronizzazione rapidi dei file remoti.


1
Prestare attenzione quando si consiglia il software. Come scritto, la tua risposta potrebbe essere vista come spam. La tua risposta dovrebbe includere una descrizione del software e come risolve la domanda. Ulteriori informazioni: Come posso raccomandare il software nelle mie risposte?
bwDraco,

1
Non ero in grado di raggiungere questo obiettivo con rsync in precedenza (credo di aver usato DeltaCopy per la GUI). Potrebbe essere rilevante per l'implementazione del collegamento reale NTFS e il fatto che rsync sia principalmente lo strumento * nix. Qualche chiarimento sarebbe apprezzato.
Estus Flask,

1

Molto tardi alla festa qui.

Combattere il fuoco con il fuoco. Dal momento che robocopy ha permesso il disordine, useremo anche robocopy per ripulirlo.

Crea una directory vuota quindi usa robocopy per copiare la directory vuota sulla destinazione (che ha i percorsi super lunghi) usando l'opzione di eliminazione.

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

Dovrebbe funzionare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.