У меня есть старая резервная копия документов. В моем текущем каталоге Documents
, многие из этих файлов существуют в разных местах с разными именами . Я пытаюсь найти способ показать, какие файлы существуют в резервной копии, которые не существуют в каталоге Documents
, предпочтительно nice и GUI-y, чтобы я мог легко просмотреть лот документов.
Когда я ищу этот вопрос, многие люди ищут способы сделать обратное. Существуют такие инструменты, как FSlint и DupeGuru , но они показывают дубликаты. Режим инвертирования отсутствует.
Я полагал, что лучший рабочий процесс для слияния старых резервных копий с тысячами файлов, заархивированных в соответствии с различными каталогами с различными именами, должен использовать DupeGuru, в конце концов. Это много походит дубликаты вкладка от FSlint, но это имеет дополнительную важную функцию добавляющих источников как 'ссылка' .
~/Documents
) как ссылка . , Если у Вас есть несколько старых резервных каталогов, имеет смысл объединять новейший резервный каталог как это сначала и затем использовать этот резервный каталог в качестве ссылка для очистки, это - дубликаты от более старых резервных копий прежде, чем объединить их с основным каталогом документа. Это сейфы партия из работы, куда Вы не должны удалять уникальные файлы, которые Вы хотите повредить в земельном участке слияния от резервных копий.
Не забывают делать новое резервное копирование после уничтожения всех старых резервных копий в процессе. :)
Если Вы готовы использовать 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". Выберите папку, которую Вы хотите сравнить. После выбора можно сравнить их бок о бок:
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
У меня была такая же проблема с большим количеством очень больших файлов и есть много решений для дубликатов, но не для инвертирования поиск, а искать дифы контента тоже не хотелось из-за большого объема данных.
Поэтому я написал этот скрипт на Python для поиска «изолированных файлов»
isolated-files.py --source folder1 --target folder2
это покажет все файлы (рекурсивно) в папке2, которых нет в папке1 (также рекурсивно). Также может использоваться для соединений ssh и с несколькими папками.