copy_only_missing? – Копировать из / A в / C только пути, отсутствующие в / B и / C – кратким способом

Я хотел бы скопировать из / A в / C только пути, отсутствующие в / B и / C. (Предположите, что это пути и могут представлять собой удаленные местоположения, например, смонтированные через sshfs )

Интересно … Есть ли более краткий путь, чем писать цикл, итерации по файловой системе и проверки, файл по файлу?

Пример содержимого каталогов деревьев / A , / B , / C :

/ A :

 /A/1abc/qwe /A/2abc/asd /A/3abc/zxc /A/4abc/rty 

/ B :

 /A/2abc/asd /A/3abc/zxc 

/ C :

 /C/1abc/qwe 

Ожидается: скопировать с / A на / C только путь 4abc/rty :

 /A/4abc/rty -> /C/4abc/rty 

Чтобы проиллюстрировать практические примеры / A , / B , / C , приводящие к такому сценарию:

  • вы делаете резервную копию, копируете из некоторого / источника ( / A ) в некоторый / целевой ( / B ), а некоторые пути не копируются. Таким образом, вы хотите иметь копию в любом случае отсутствующих. Таким образом, вы найдете / another_destination ( / C ), который может их принять, и вы хотите скопировать только отсутствующие. Вот пример ограничений, из-за которых может произойти копирование с / A на / B : диск был заполнен; ограничение файловой системы / B (например, длина имени файла), в то время как нет в файловой системе / C ; и т.п.

One Solution collect form web for “copy_only_missing? – Копировать из / A в / C только пути, отсутствующие в / B и / C – кратким способом”

Одним из решений является создание союзного монтирования B и C с C как ветви записи. Тогда проблема сводится к копированию из A в B + C только файлов, отсутствующих на B + C, что можно сделать с помощью

 rsync -a --ignore-existing /A /B+C 

Для монтирования монтирования одна из возможностей – предохранитель unionfs .

 unionfs-fuse -o cow /C=RW:/B=RO /B+C 

Или unionfs:

 mount -t unionfs -o dirs=/C=rw:/B=ro unionfs /B+C 
  • Rsync link-dest - неуверенный, если он создает жесткие ссылки
  • Использует rsync, пока источник обновляется безопасно?
  • rsync, удалите файлы на стороне получателя, которые были удалены на стороне отправки. (Но не удаляйте все)
  • Сохранять разрешения с помощью rsync
  • Rsyncing несколько файлов с пробелами в именах
  • Получение rsync для удаления исходных файлов, которые уже существуют в пункте назначения
  • rsync удалить только исключенные файлы
  • Используя rsync, как я могу узнать, какой атрибут исходного файла отличается от dest, что вызвало переход
  • Как перенести файлы в локальной сети?
  • Получить файлы на удаленной копии, но не локальные
  • Могу ли я установить крюк завершения синхронизации с помощью демона rsync?
  • Interesting Posts

    Сценарий оболочки для назначения значений из таблицы поиска слишком медленный

    Строка 4: данные $: неоднозначное перенаправление при использовании пароля

    Каким образом описываются процессы, связанные с трубопроводом, в выводе ps?

    Веб-страница не может найти файл программы CGI

    xming debian не может открыть дисплей

    Удалить файлы из списка, которые были созданы / изменены в субботу

    Принудительное использование определенного DNS-провайдера в сети

    Как смонтировать Apple Time Capsule во FreeBSD (FreeNAS) в качестве общего ресурса smbfs?

    Почему я не могу установить диск сейчас с ограниченной памятью?

    Как создать файл устройства и имитировать поведение псевдо-устройств?

    Udev (197) last_rule не работает

    Как преобразовать html-объекты в читаемый текст?

    Поиск и замена нескольких строк в скрипте с помощью команд vim (поиск и замена) без sed?

    Где приложение должно сохранять рабочие файлы?

    Обновление драйвера e1000 с интерфейсами

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