У вас есть три папки:
- папка current , в которой находятся ваши текущие файлы
- папка old , которая содержит более старую версию тех же файлов
- разница папок , которая является просто пустой папкой
Как вы сравниваете старые с текущими и копируете файлы, которые отличаются (или полностью новые) по току, с разницей ?
Я искал все вокруг, и мне кажется, что это просто, но я не могу заставить его работать в моем конкретном примере. Большинство источников предлагали использовать rsync, поэтому в итоге я выполнил следующую команду:
rsync -ac --compare-dest=../old/ new/ difference/
Однако он копирует все файлы с нового на различие , даже те, которые совпадают со старыми .
В случае, если это помогает (возможно, команда в порядке, и ошибка лежит в другом месте), вот как я это проверил:
- Я сделал три папки.
- Я сделал несколько текстовых файлов с различным содержанием в старом .
- Я скопировал файлы из старого в новый .
- Я изменил содержимое некоторых файлов в новые и добавил несколько дополнительных файлов.
- Я запустил указанную выше команду и проверил результаты на разницу .
Я искал решение в течение последних нескольких дней, и я очень признателен за помощь. Не обязательно использовать rsync, но я хотел бы знать, что я делаю неправильно, если это возможно.
Ответы:
Я не уверен, можете ли вы сделать это с любыми существующими командами linux, такими как rsync или diff. Но в моем случае мне пришлось написать свой собственный скрипт с использованием Python, так как в python есть модуль filecmp для сравнения файлов. Я разместил весь сценарий и использование на моем личном сайте - http://linuxfreelancer.com/
Его использование простое - укажите абсолютный путь к новому каталогу, старому каталогу и каталогу различий в указанном порядке.
источник
Я понял, в чем проблема в моем случае:
Файлы, которые я сравнивал, имели разные временные метки. Я не должен был использовать аргумент -a , я полагаю, потому что rsync пытался сохранить метки времени при копировании файлов. Команда, которая работала для меня, была:
источник
rsync -a
сначала «скопировать» файлы (или эквивалент cp), затем удалить или изменить. (Мне нравится придерживаться rsync, потому что я знаю, что он самосогласован, не задумываясь о том, что он может делать.) Я думаю, что это должно было работать с оригинальной командой. Опция -a включает -t (сравнение по метке времени), которая является альтернативой -c (сравнение по контрольной сумме).old/
иnew/
.Это могло бы помочь некоторым читателям: в Windows старая, немного бесплатная программа - Third Dir - делает именно то, о чем здесь просят. Это больше не доступно через разработчика, Роберта Вашика. Но я уверен, что это можно найти через некоторые репозитории онлайн.
Вот описание разработчика, которое остается на его сайте:
Third Dir: необычный каталог-синхронизатор - разные файлы копируются в третий каталог. Очень полезно извлечь, например, новые или отредактированные фотографии из огромного дерева каталогов на фиксированном диске во временную папку, а затем добавить их на архивный компакт-диск (обратите внимание - исходные файлы сравниваются с компакт-диском). Версия 1.4, размер 23 КБ. Создано 2005-02-12.
История: версия 1.14 - более эффективна при сравнении десятков тысяч файлов.
источник
Способ rsync, данный Тейном с дополнениями Yamaneko, прекрасно работает, но оставляет пустые каталоги. Для меня окончательное решение состояло из двух шагов: сначала вызовите rsync с полным путем, а затем команду find, чтобы удалить все пустые каталоги:
Обратите внимание, что даже с параметром --links, rsync не сохранил символические ссылки, а скопировал данные назначения.
источник
-empty -exec rmdir {} \;
вас можно использовать-empty -delete
.Я использую двухпанельный XY Explorer (коммерческий), который может делать много трюков, и это один из них. Откройте
Current
в одной панели и Старый в другой. Активируйте текущую панель. Перейдите в Панели > Выбор синхронизации . Это дает вам 5 вариантов на выбор:Теперь вы можете скопировать полученную выборку
Current
туда, куда хотите. Я использовал его для сравненияmailfolders
старых версий с последними. Структура папок была довольно сложной, но (почти) всеmbs-files
имели уникальный номер.Поэтому я выполнил поиск
mbs-files
в старом корнеmailfolder
(на одной панели), а также на самой новой (на другой панели) и провел сравнение результатов поиска на каждой панели ( Синхронизация выбора уникальных , чтобы найти пропавшие письма во время поиска). переустанавливает)! Вы можете установить много вариантов тоже.источник