Ho due cartelle che contengono vari file. Alcuni dei file dalla prima cartella hanno una copia esatta nella seconda cartella. Vorrei sostituire quelli con un collegamento reale. Come posso fare ciò?
Ho due cartelle che contengono vari file. Alcuni dei file dalla prima cartella hanno una copia esatta nella seconda cartella. Vorrei sostituire quelli con un collegamento reale. Come posso fare ciò?
Risposte:
So di 4 soluzioni riga di comando per Linux. Il mio preferito è quello l'ultimo elencato qui, rdfind
, a causa di tutte le opzioni disponibili.
fdupes
Esempio di output (con opzioni "mostra dimensione", "ricorsivo"):
$ fdupes -Sr .
17 bytes each:
./Dir1/Some File
./Dir2/SomeFile
hardlink
--dry-run
opzione. Output di esempio (nota come i miei due file abbiano tempi di modifica leggermente diversi, quindi nella seconda esecuzione gli dico di ignorarlo):
$ stat Dir*/* | grep Modify
Modify: 2015-09-06 23:51:38.784637949 -0500
Modify: 2015-09-06 23:51:47.488638188 -0500
$ hardlink --dry-run -v .
Mode: dry-run
Files: 5
Linked: 0 files
Compared: 0 files
Saved: 0 bytes
Duration: 0.00 seconds
$ hardlink --dry-run -v -t .
[DryRun] Linking ./Dir2/SomeFile to ./Dir1/Some File (-17 bytes)
Mode: dry-run
Files: 5
Linked: 1 files
Compared: 1 files
Saved: 17 bytes
Duration: 0.00 seconds
Duff
Esempio di output (con opzione "ricorsivo"):
$ duff -r .
2 files in cluster 1 (17 bytes, digest 34e744e5268c613316756c679143890df3675cbb)
./Dir2/SomeFile
./Dir1/Some File
rdfind
find
?).Uscita campione:
$ rdfind -dryrun true -makehardlinks true .
(DRYRUN MODE) Now scanning ".", found 5 files.
(DRYRUN MODE) Now have 5 files in total.
(DRYRUN MODE) Removed 0 files due to nonunique device and inode.
(DRYRUN MODE) Now removing files with zero size from list...removed 0 files
(DRYRUN MODE) Total size is 13341 bytes or 13 kib
(DRYRUN MODE) Now sorting on size:removed 3 files due to unique sizes from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on md5 checksum:removed 0 files from list.2 files left.
(DRYRUN MODE) It seems like you have 2 files that are not unique
(DRYRUN MODE) Totally, 17 b can be reduced.
(DRYRUN MODE) Now making results file results.txt
(DRYRUN MODE) Now making hard links.
hardlink ./Dir1/Some File to ./Dir2/SomeFile
Making 1 links.
$ cat results.txt
# Automatically generated
# duptype id depth size device inode priority name
DUPTYPE_FIRST_OCCURRENCE 1 1 17 2055 24916405 1 ./Dir2/SomeFile
DUPTYPE_WITHIN_SAME_TREE -1 1 17 2055 24916406 1 ./Dir1/Some File
# end of file
Duplicate Commander è una possibile soluzione su Windows:
Duplicate Commander è un'applicazione freeware che consente di trovare e gestire i file duplicati sul proprio PC. Duplicate Commander è dotato di molte funzioni e strumenti che consentono di recuperare spazio su disco da quei duplicati.
Caratteristiche:
Replacing files with hard links Replacing files with soft links ... (and many more) ...
Per Linux puoi trovare uno script Bash qui .
Duplicate & Same File Searcher è ancora un'altra soluzione su Windows:
Duplicate & Same Files Searcher (Duplica Searcher) è un'applicazione per la ricerca di file duplicati (cloni) e hard link NTFS per lo stesso file. Si cerca il contenuto dei file duplicati indipendentemente dal nome del file (vero confronto byte per byte è utilizzato). Questa applicazione permette non solo di eliminare i file duplicati o spostarli in un'altra posizione, ma per sostituire i duplicati con hard link NTFS, nonché (unico!)
Avevo un grazioso strumento gratuito sul mio computer chiamato Link Shell Extension; non solo è stato fantastico per la creazione di collegamenti reali e collegamenti simbolici, ma anche di giunzioni! Inoltre, ha aggiunto icone personalizzate che consentono di identificare facilmente diversi tipi di collegamenti, anche quelli già esistenti prima dell'installazione; Le frecce rosse rappresentano i collegamenti reali, ad esempio, mentre il verde rappresenta i collegamenti simbolici ... e le catene rappresentano le giunzioni.
Io purtroppo disinstallato il software un po 'indietro (in una massa-disinstallazione dei vari programmi), quindi non posso creare più collegamenti manualmente, ma le icone mostrano ancora automaticamente ogni volta che Windows rileva un, hard link simbolico o Junction.
Consiglio vivamente jdupes . È un maggiore forcella di fdupes , ma comprende anche:
--linkhard
, o -L
in brevePer la vostra domanda, si può solo eseguire $ jdupes -L /path/to/your/files
.
Si consiglia di clonare e costruire l'ultima fonte dalla sua repo GitHub dal momento che il progetto è ancora in fase di sviluppo attivo.
Binari di Windows sono anche previste qui. Confezionato binari sono disponibili in alcune distribuzioni Linux / BSD - in realtà ho scoperto attraverso $ apt search
.