Как найти файлы, которые не имеют дубликатов, в отдельном каталоге

У меня есть старая резервная копия документов. В моем текущем каталоге Documents, многие из этих файлов существуют в разных местах с разными именами . Я пытаюсь найти способ показать, какие файлы существуют в резервной копии, которые не существуют в каталоге Documents, предпочтительно nice и GUI-y, чтобы я мог легко просмотреть лот документов.

Когда я ищу этот вопрос, многие люди ищут способы сделать обратное. Существуют такие инструменты, как FSlint и DupeGuru , но они показывают дубликаты. Режим инвертирования отсутствует.

4
задан 7 May 2016 в 14:08

3 ответа

Я полагал, что лучший рабочий процесс для слияния старых резервных копий с тысячами файлов, заархивированных в соответствии с различными каталогами с различными именами, должен использовать DupeGuru, в конце концов. Это много походит дубликаты вкладка от FSlint, но это имеет дополнительную важную функцию добавляющих источников как 'ссылка' .

  1. Добавляют Ваш целевой каталог (например, ~/Documents) как ссылка .
    • А ссылка только для чтения, и никакие файлы не будут удалены
  2. , Добавляет Ваш резервный каталог как нормальный .
  3. Находят дубликаты. Удалите все дубликаты, которые найдены от резервного копирования.
  4. Вас оставляют только с уникальными файлами в резервном каталоге. Используйте FreeFileSync или Комбинация , чтобы объединить их или объединиться вручную.

, Если у Вас есть несколько старых резервных каталогов, имеет смысл объединять новейший резервный каталог как это сначала и затем использовать этот резервный каталог в качестве ссылка для очистки, это - дубликаты от более старых резервных копий прежде, чем объединить их с основным каталогом документа. Это сейфы партия из работы, куда Вы не должны удалять уникальные файлы, которые Вы хотите повредить в земельном участке слияния от резервных копий.

Не забывают делать новое резервное копирование после уничтожения всех старых резервных копий в процессе. :)

1
ответ дан 8 May 2016 в 00:08
  • 1
    Ясно. Вы также удаляли/usr/local/texlive/2017? (принятие Вас хотело сохранить 2015), – Reza Rahemi 6 May 2018 в 07:37

Если Вы готовы использовать CLI, следующая команда должна работать на Вас:

diff --brief -r backup/ documents/

Это покажет Вам файлы, которые уникальны для каждой папки. Если Вы хотите Вас, может также игнорировать регистры имени файла с --ignore-file-name-case

Как пример:

ron@ron:~/test$ ls backup/
file1  file2  file3  file4  file5
ron@ron:~/test$ ls documents/
file4  file5  file6  file7  file8
ron@ron:~/test$ diff backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8
ron@ron:~/test$ diff backup/ documents/ | grep "Only in backup"
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3

Кроме того, если Вы хотите сообщить только, когда файлы отличаются (и не сообщают о фактическом 'различии'), можно использовать --brief опция как в:

ron@ron:~/test$ cat backup/file5 
one
ron@ron:~/test$ cat documents/file5
ron@ron:~/test$ diff --brief backup/ documents/
Only in backup/: file1
Only in backup/: file2
Only in backup/: file3
Files backup/file5 and documents/file5 differ
Only in documents/: file6
Only in documents/: file7
Only in documents/: file8

Существует несколько визуальных различных инструментов такой как meld это может сделать то же самое. Можно установить meld из репозитория вселенной:

sudo apt-get install meld

и используйте его опцию "Directory comparison". Выберите папку, которую Вы хотите сравнить. После выбора можно сравнить их бок о бок:

enter image description here

fdupes превосходная программа должна найти дубликаты файлов, но она не перечисляет недубликаты файлов, который является тем, что Вы ищете. Однако мы можем перечислить файлы, которые не находятся в fdupes вывод с помощью комбинации find и grep.

Следующий пример перечисляет файлы, которые уникальны для backup.

ron@ron:~$ tree backup/ documents/
backup/
├── crontab
├── dir1
│  └── du.txt
├── lo.txt
├── ls.txt
├── lu.txt
└── notes.txt
documents/
├── du.txt
├── lo-renamed.txt
├── ls.txt
└── lu.txt

1 directory, 10 files
ron@ron:~$ fdupes -r backup/ documents/ > dup.txt
ron@ron:~$ find backup/ -type f | grep -Fxvf dup.txt 
backup/crontab
backup/notes.txt
4
ответ дан 8 May 2016 в 00:08
  • 1
    Оба. Обратите внимание, что texlive-полный должен содержаться в texlive*. – jan1892 6 May 2018 в 07:32

У меня была такая же проблема с большим количеством очень больших файлов и есть много решений для дубликатов, но не для инвертирования поиск, а искать дифы контента тоже не хотелось из-за большого объема данных.

Поэтому я написал этот скрипт на Python для поиска «изолированных файлов»

isolated-files.py --source folder1 --target folder2

это покажет все файлы (рекурсивно) в папке2, которых нет в папке1 (также рекурсивно). Также может использоваться для соединений ssh ​​и с несколькими папками.

см. https://github.com/ezzra/isolated-files

1
ответ дан 27 July 2020 в 15:49

Другие вопросы по тегам:

Похожие вопросы: