У мене є дві папки, що містять різні файли. Деякі файли з першої папки мають точну копію у другій папці. Я хотів би замінити ці на жорстке посилання. Як я можу це зробити?
У мене є дві папки, що містять різні файли. Деякі файли з першої папки мають точну копію у другій папці. Я хотів би замінити ці на жорстке посилання. Як я можу це зробити?
Відповіді:
Я знаю 4 рішення командного рядка для Linux. Мій кращий - останній, перерахований тут rdfind
, через всі наявні варіанти.
fdupes
Вибірка зразка (з параметрами "показати розмір", "рекурсивний"):
$ fdupes -Sr .
17 bytes each:
./Dir1/Some File
./Dir2/SomeFile
жорстке посилання
--dry-run
варіант. Вибірка зразка (зверніть увагу на те, як два мої файли мають дещо різний змінений час, тому під час другого запуску я говорю це ігнорувати це):
$ 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 -r .
2 files in cluster 1 (17 bytes, digest 34e744e5268c613316756c679143890df3675cbb)
./Dir2/SomeFile
./Dir1/Some File
rdfind
find
?).Вибірка зразка:
$ 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
Дублікат Commander - це можливе рішення для Windows:
Дублікат Commander - безкоштовна програма, яка дозволяє знаходити та керувати дублікатами файлів на вашому ПК. Duplicate Commander оснащений багатьма функціями та інструментами, які дозволяють відновити дисковий простір з цих дублікатів.
Особливості:
Replacing files with hard links Replacing files with soft links ... (and many more) ...
Для Linux ви можете знайти скрипт Bash тут .
Шукач дублікатів і тих же файлів - це ще одне рішення для Windows:
Duplicate & Same Files Searcher (Дублікат Searcher) - це програма для пошуку дублікатів файлів (клонів) та жорстких посилань NTFS до одного файлу. Він шукає дублікат вмісту файлу незалежно від імені файлу (використовується істинне порівняння байт-байт). Ця програма дозволяє не тільки видаляти повторювані файли або переміщувати їх в інше місце, але і замінювати дублікати жорсткими посиланнями NTFS (унікальні!)
У мене на комп’ютері був чудовий безкоштовний інструмент під назвою Link Shell Extension; не тільки це було чудово для створення жорстких посилань та символічних посилань, але і стиків! Крім того, до нього додано спеціальні значки, які дозволяють легко ідентифікувати різні типи посилань, навіть ті, які вже існували до встановлення; Червоні стрілки представляють, наприклад, жорсткі посилання, а зелені символічні посилання ..., а ланцюги - стики.
Я, на жаль, деякий час повернув програмне забезпечення (у масовій видаленні різних програм), тому не можу створювати більше посилань вручну, але піктограми все ще з'являються автоматично, коли Windows виявляє посилання Hard, Symbolic або Junction.
Я настійно рекомендую jdupes . Це вдосконалена вилка fdupes , але також включає:
--linkhard
або -L
короткоЩо стосується вашого питання, ви можете просто виконати $ jdupes -L /path/to/your/files
.
Можливо, ви захочете клонувати та створювати останнє джерело з його репортажу GitHub, оскільки проект все ще знаходиться в активній розробці.
Тут також надано двійкові файли Windows . Упаковані бінарні файли доступні в деяких дистрибутивах Linux / BSD - насправді я вперше знайшов це $ apt search
.