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

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

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

Я думаю...Есть ли более лаконичный способ, чем написание цикла, перебор файловой системы и выполнение проверки файл за файлом?

Пример содержимого древовидных каталогов,,:

:

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

:

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

:

/C/1abc/qwe

ожидается: копировать изкединственный путь 4abc/rty:

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

Для иллюстрации практических примеров,,, что приводит к такому сценарию:

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

решение1

Одним из решений является созданиекрепление для союзаиз 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 

Связанный контент