У меня есть две папки, содержащие различные файлы. Некоторые из файлов из первой папки имеют точную копию во второй папке. Я хотел бы заменить их жесткой ссылкой. Как я могу это сделать?
4 ответа
Я знаю о 4 решениях командной строки для Linux. Мой любимый - последний из перечисленных здесь, rdfind
, из-за всех доступных опций.
fdupes
- Это, кажется, самый рекомендуемый / самый известный.
- Его проще всего использовать, но его единственное действие - удалить дубликаты.
- Чтобы убедиться, что дубликаты на самом деле являются дубликатами (хотя их запуск не выполняется вечно), сравнение между файлами выполняется сначала по размеру файла, затем по хешу md5, а затем по байтовому сравнению.
Пример вывода (с параметрами "показать размер", "рекурсивный"):
$ 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
фальсифицировать
- Сделано для поиска файлов, на которые затем воздействует пользователь; не имеет доступных действий
- Сравнения выполняются по размеру файла, затем по хэшу sha1.
- Хеш можно изменить на sha256, sha384 или sha512.
- Хэш может быть отключен для побайтового сравнения
Пример вывода (с опцией "рекурсивный"):
$ duff -r .
2 files in cluster 1 (17 bytes, digest 34e744e5268c613316756c679143890df3675cbb)
./Dir2/SomeFile
./Dir1/Some File
rdfind
- Опции имеют необычный синтаксис (имитировать
find
?). - Несколько вариантов действий для дублирования файлов (удаление, создание символических ссылок, создание жестких ссылок).
- Имеет режим пробега.
- Сравнения выполняются по размеру файла, затем сначала байты, затем последние байты, затем либо md5 (по умолчанию), либо sha1.
- Ранжирование найденных файлов делает предсказуемым, какой файл считается оригиналом.
Образец вывода:
$ 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 - это возможное решение для Windows:
Duplicate Commander - это бесплатное приложение, которое позволяет вам находить дубликаты файлов на вашем ПК и управлять ими. Duplicate Commander поставляется с множеством функций и инструментов, которые позволяют вам восстановить дисковое пространство из этих дубликатов.
Особенности:
Replacing files with hard links Replacing files with soft links ... (and many more) ...
Для Linux вы можете найти скрипт Bash здесь.
Duplicate & Same File Searcher - это еще одно решение для Windows:
Duplicate & Same Files Searcher (Duplicate Searcher) - это приложение для поиска дубликатов файлов (клонов) и жестких ссылок NTFS к одному и тому же файлу. Он ищет дубликаты содержимого файла независимо от имени файла (используется истинное сравнение байтов). Это приложение позволяет не только удалять дубликаты файлов или перемещать их в другое место, но также заменять дубликаты жесткими ссылками NTFS (уникально!)
У меня на компьютере был отличный бесплатный инструмент под названием Link Shell Extension; он не только отлично подходит для создания жестких ссылок и символических ссылок, но и для переходов! Кроме того, добавлены пользовательские значки, которые позволяют легко идентифицировать различные типы ссылок, даже те, которые уже существовали до установки; Например, красные стрелки представляют жесткие ссылки, а зеленые - символические ссылки ... а цепочки - соединения.
К сожалению, некоторое время назад я удалил программное обеспечение (при массовом удалении различных программ), поэтому я не могу больше создавать ссылки вручную, но значки по-прежнему отображаются автоматически, когда Windows обнаруживает жесткую, символьную или соединительную ссылку.