Рекурсивное сравнение и удаление (без rsync или хеширования)

Я использую rsync для синхронизации папок, и он работает хорошо. Проблема в том, что в последнее время я начал синхронизировать папки с большими файлами в них, и это занимает гораздо больше времени, чем мне хотелось бы (из-за его сравнения хэширования). Я заметил, что команды cp могут выполнять одну часть задания rsyncs намного быстрее, вызывая опцию -u. Это означает, что более новые файлы в источнике могут быть легко добавлены в пункт назначения с использованием этого метода.

Но то, что мне нужно выяснить, – это вторая часть работы rsync, которую я считаю полезной. Это команда, которая может рекурсивно сравнивать список файлов во всех папках и удалять те, которые больше не работают в источнике, но которые все еще находятся в целевом месте (но без выполнения хеша во всех файлах, простое сравнение с использованием Команда ls, например, достаточно хороша для того, что я хочу).

  • Как контролировать попытки аутентификации в PAM?
  • Безопасно ли подключиться удаленно к Mysql с помощью оболочки?
  • Как уменьшить время ожидания (блокировки) процессов для чтения диска (только для обнаружения ошибки)?
  • Вариант Linux / Unix для обучения системных администраторов
  • Получить файл CSV, содержащий имена файлов в каталоге?
  • Установка расширения в php
  • Это возможно?

  • Как перенести установку Linux с жесткого диска на SSD?
  • Как найти конкретный файл с определенным набором строк?
  • Как подключить tmpfs к rootfs?
  • Как узнать типы оконной системы, оконного менеджера и среды рабочего стола Unix-подобной ОС
  • Кто разработчики подсистемы Linux Memory?
  • Как получить доступ к временному файлу сразу после создания?
  • 2 Solutions collect form web for “Рекурсивное сравнение и удаление (без rsync или хеширования)”

    Это будет (притворяться) удалить любые различия между папками:

     diff -awr folderA folderB | sed 's/Only in //;s/: /\//' | while read f; do echo "removing ${f}"; done; 

    Если вы хотите удалить различия в A, но не B, вы можете добавить в grep так:

     diff -awr folderA folderB | sed 's/Only in //;s/: /\//' | grep "^folderA/" | while read f; do echo "removing ${f}"; done; 

    обратите внимание, что вам нужно набрать folderA в команду дважды для этого

    Чтобы запустить его по-настоящему, просто замените echo "removing ${f}"; с rm -f "${f}";

    Вы можете сослаться на эту ссылку по этой ссылке. rsync имеет функцию удаления папки, которая не выходит из live ENV .

    rsync -av --delete

    Linux и Unix - лучшая ОС в мире.